diff --git a/admin/cases.php b/admin/cases.php index ef887e0..0124646 100644 --- a/admin/cases.php +++ b/admin/cases.php @@ -3,50 +3,55 @@ require_once 'auth.php'; require_once '../db/config.php'; require_login(); -$user = get_user(); $pdo = db(); $msg = ''; // Handle Delete if (isset($_GET['delete'])) { $id = (int)$_GET['delete']; - if (is_super_admin()) { - $pdo->prepare("DELETE FROM cases WHERE id = ?")->execute([$id]); - } else { - $pdo->prepare("DELETE FROM cases WHERE id = ? AND org_id = ?")->execute([$id, $user['org_id']]); - } + $pdo->prepare("DELETE FROM cases WHERE id = ?")->execute([$id]); header('Location: cases.php?success=deleted'); exit; } // Fetch cases -if (is_super_admin()) { - $cases = $pdo->query("SELECT c.*, o.name_en as org_name FROM cases c JOIN organizations o ON c.org_id = o.id")->fetchAll(); - $orgs = $pdo->query("SELECT * FROM organizations")->fetchAll(); -} else { - $cases = $pdo->prepare("SELECT c.*, o.name_en as org_name FROM cases c JOIN organizations o ON c.org_id = o.id WHERE c.org_id = ?"); - $cases->execute([$user['org_id']]); - $cases = $cases->fetchAll(); - $orgs = []; // Org admin doesn't need to select org -} +$cases = $pdo->query("SELECT c.*, cat.name_en as cat_name FROM cases c LEFT JOIN categories cat ON c.category_id = cat.id ORDER BY c.id DESC")->fetchAll(); +$categories = $pdo->query("SELECT * FROM categories")->fetchAll(); // Handle Add/Edit if ($_SERVER['REQUEST_METHOD'] === 'POST') { $id = $_POST['id'] ?? null; - $org_id = is_super_admin() ? $_POST['org_id'] : $user['org_id']; + $category_id = $_POST['category_id']; $title_en = $_POST['title_en']; $title_ar = $_POST['title_ar']; $desc_en = $_POST['desc_en']; $desc_ar = $_POST['desc_ar']; $goal = $_POST['goal']; - $image_url = $_POST['image_url']; + $importance = $_POST['importance'] ?? 'normal'; + $status = $_POST['status'] ?? 'active'; + $image_url = $_POST['image_url_existing'] ?? ''; + + // Handle File Upload + if (isset($_FILES['image']) && $_FILES['image']['error'] === UPLOAD_ERR_OK) { + $ext = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION)); + $allowed = ['jpg', 'jpeg', 'png', 'webp', 'gif']; + if (in_array($ext, $allowed)) { + $filename = uniqid('case_') . '.' . $ext; + $upload_dir = '../assets/images/cases/'; + if (!is_dir($upload_dir)) mkdir($upload_dir, 0775, true); + + if (move_uploaded_file($_FILES['image']['tmp_name'], $upload_dir . $filename)) { + $image_url = 'assets/images/cases/' . $filename; + } + } + } if ($id) { - $stmt = $pdo->prepare("UPDATE cases SET org_id=?, title_en=?, title_ar=?, desc_en=?, desc_ar=?, goal=?, image_url=? WHERE id=?"); - $stmt->execute([$org_id, $title_en, $title_ar, $desc_en, $desc_ar, $goal, $image_url, $id]); + $stmt = $pdo->prepare("UPDATE cases SET category_id=?, title_en=?, title_ar=?, desc_en=?, desc_ar=?, goal=?, image_url=?, importance=?, status=? WHERE id=?"); + $stmt->execute([$category_id, $title_en, $title_ar, $desc_en, $desc_ar, $goal, $image_url, $importance, $status, $id]); } else { - $stmt = $pdo->prepare("INSERT INTO cases (org_id, title_en, title_ar, desc_en, desc_ar, goal, raised, image_url) VALUES (?, ?, ?, ?, ?, ?, 0, ?)"); - $stmt->execute([$org_id, $title_en, $title_ar, $desc_en, $desc_ar, $goal, $image_url]); + $stmt = $pdo->prepare("INSERT INTO cases (category_id, title_en, title_ar, desc_en, desc_ar, goal, raised, image_url, importance, status) VALUES (?, ?, ?, ?, ?, ?, 0, ?, ?, ?)"); + $stmt->execute([$category_id, $title_en, $title_ar, $desc_en, $desc_ar, $goal, $image_url, $importance, $status]); } header('Location: cases.php?success=saved'); exit; @@ -55,13 +60,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $edit_case = null; if (isset($_GET['edit'])) { $id = (int)$_GET['edit']; - if (is_super_admin()) { - $stmt = $pdo->prepare("SELECT * FROM cases WHERE id = ?"); - $stmt->execute([$id]); - } else { - $stmt = $pdo->prepare("SELECT * FROM cases WHERE id = ? AND org_id = ?"); - $stmt->execute([$id, $user['org_id']]); - } + $stmt = $pdo->prepare("SELECT * FROM cases WHERE id = ?"); + $stmt->execute([$id]); $edit_case = $stmt->fetch(); } ?> @@ -82,22 +82,14 @@ if (isset($_GET['edit'])) { .nav-link:hover, .nav-link.active { color: #fff; background: #1f2937; } .nav-link.active { background: var(--primary-color); } .card { border: none; border-radius: 12px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); } + .badge-urgent { background-color: #ef4444; } + .badge-top_priority { background-color: #8b5cf6; } + .badge-normal { background-color: #6b7280; } + .case-img-preview { width: 50px; height: 50px; object-fit: cover; border-radius: 6px; }
- +