From e9a7ca1d4616155f29c69b4401ac0b8923788f67 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Wed, 29 Oct 2025 17:01:16 +0000 Subject: [PATCH] versao 16 --- delete_macro_area.php | 65 ++++++++++++++++++++++--------------------- macro_areas.php | 2 +- 2 files changed, 35 insertions(+), 32 deletions(-) diff --git a/delete_macro_area.php b/delete_macro_area.php index 243a9b2..5c3c884 100644 --- a/delete_macro_area.php +++ b/delete_macro_area.php @@ -2,40 +2,43 @@ require_once 'includes/session.php'; require_once 'db/config.php'; -if (!isset($_GET['id']) || !is_numeric($_GET['id'])) { - header('Location: macro_areas.php'); - exit; -} +// Check if ID is provided +if (isset($_GET['id'])) { + $id = $_GET['id']; + $pdo = db(); -$id = $_GET['id']; -$pdo = db(); - -// Get the slug of the macro area -$stmt = $pdo->prepare('SELECT slug FROM macro_areas WHERE id = ?'); -$stmt->execute([$id]); -$macro_area = $stmt->fetch(PDO::FETCH_ASSOC); - -if (!$macro_area) { - $_SESSION['error_message'] = 'Macro área não encontrada.'; - header('Location: macro_areas.php'); - exit; -} - -$slug = $macro_area['slug']; - -// Check for associated expenses (categories) -$stmt = $pdo->prepare('SELECT COUNT(*) FROM expenses WHERE category = ?'); -$stmt->execute([$slug]); -$count = $stmt->fetchColumn(); - -if ($count > 0) { - $_SESSION['error_message'] = 'Não é possível excluir a macro área, pois existem despesas associadas a ela.'; -} else { - // Delete the macro area - $stmt = $pdo->prepare('DELETE FROM macro_areas WHERE id = ?'); + // First, find the macro area to get its slug + $stmt = $pdo->prepare("SELECT slug FROM macro_areas WHERE id = ?"); $stmt->execute([$id]); - $_SESSION['success_message'] = 'Macro área excluída com sucesso.'; + $macro_area = $stmt->fetch(); + + // If the macro area exists, proceed with checks and deletion + if ($macro_area) { + $slug = $macro_area['slug']; + + // Check for dependent expenses + $stmt = $pdo->prepare("SELECT COUNT(*) FROM expenses WHERE category = ?"); + $stmt->execute([$slug]); + $expense_count = $stmt->fetchColumn(); + + if ($expense_count > 0) { + // Dependencies found, set error message and redirect + $_SESSION['error_message'] = "Não é possível excluir a macro área. Existem {$expense_count} despesas associadas."; + } else { + // No dependencies, proceed with deletion + $stmt = $pdo->prepare("DELETE FROM macro_areas WHERE id = ?"); + $stmt->execute([$id]); + $_SESSION['success_message'] = "Macro área excluída com sucesso."; + } + } + // If the macro area was not found, we just redirect without any message. + +} else { + // ID not specified in URL + $_SESSION['error_message'] = "ID da macro área não especificado."; } +// Redirect back to the list in all cases header('Location: macro_areas.php'); exit; +?> \ No newline at end of file diff --git a/macro_areas.php b/macro_areas.php index 3f5461f..389ef59 100644 --- a/macro_areas.php +++ b/macro_areas.php @@ -85,7 +85,7 @@ $macro_areas = $stmt->fetchAll(PDO::FETCH_ASSOC); - Nenhuma macro área encontrada.