<?php
// case_delete.php (CLEAN + SAFE + BRANCH PERMISSIONS + DELETE FILES)
declare(strict_types=1);
session_start();

if (empty($_SESSION['user_id'])) {
  header("Location: index.html?e=1");
  exit;
}

require_once __DIR__ . '/db.php';

/* ===== Get PDO (supports db() or $pdo) ===== */
$pdo = null;
if (function_exists('db')) {
  $pdo = db();
} elseif (isset($GLOBALS['pdo']) && $GLOBALS['pdo'] instanceof PDO) {
  $pdo = $GLOBALS['pdo'];
} elseif (isset($pdo) && $pdo instanceof PDO) {
  // in case db.php defines $pdo in current scope
}

if (!$pdo instanceof PDO) {
  http_response_code(500);
  exit('DB not ready: PDO not found. Check db.php (define db():PDO or $pdo).');
}

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$userId = (int)($_SESSION['user_id'] ?? 0);
$role   = strtoupper((string)($_SESSION['role'] ?? 'STAFF'));
$sessionBranchId = (int)($_SESSION['branch_id'] ?? 1);

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
  header("Location: cases.php");
  exit;
}

$id = (int)($_POST['id'] ?? 0);
if ($id <= 0) {
  header("Location: cases.php?del=0");
  exit;
}

try {
  // اجلب فرع القضية
  $st = $pdo->prepare("SELECT branch_id FROM cases WHERE id=? LIMIT 1");
  $st->execute([$id]);
  $caseBranchId = (int)($st->fetchColumn() ?: 0);

  if ($caseBranchId <= 0) {
    header("Location: cases.php?del=0"); // غير موجودة
    exit;
  }

  // صلاحيات الحذف
  if (!in_array($role, ['OWNER','ADMIN'], true)) {
    if ($caseBranchId !== $sessionBranchId) {
      header("Location: cases.php?del=forbidden");
      exit;
    }
  }

  $pdo->beginTransaction();

  // احذف ملفات القضية من السيرفر (إن وجدت)
  $files = [];
  try {
    $stF = $pdo->prepare("SELECT file_path FROM case_files WHERE case_id=?");
    $stF->execute([$id]);
    $files = $stF->fetchAll(PDO::FETCH_COLUMN);
  } catch (Throwable $e) {
    // لو جدول case_files غير موجود، تجاهله
    $files = [];
  }

  foreach ($files as $relPath) {
    $relPath = (string)$relPath;

    // لأمان أكثر: احذف فقط داخل uploads/
    if ($relPath !== '' && strpos($relPath, 'uploads/') === 0) {
      $full = __DIR__ . '/' . $relPath;
      if (is_file($full)) {
        @unlink($full);
      }
    }
  }

  // احذف سجلات case_files أولاً (لو موجود)
  try {
    $delF = $pdo->prepare("DELETE FROM case_files WHERE case_id=?");
    $delF->execute([$id]);
  } catch (Throwable $e) {
    // تجاهل إذا الجدول غير موجود
  }

  // احذف القضية
  $del = $pdo->prepare("DELETE FROM cases WHERE id=? LIMIT 1");
  $del->execute([$id]);

  $ok = ($del->rowCount() > 0);

  $pdo->commit();

  header("Location: cases.php?del=" . ($ok ? "1" : "0"));
  exit;

} catch (Throwable $e) {
  if ($pdo instanceof PDO && $pdo->inTransaction()) $pdo->rollBack();
  // لا تُظهر تفاصيل في الإنتاج
  header("Location: cases.php?del=0");
  exit;
}