<?php
// 🔹 تفعيل عرض الأخطاء لغرض التطوير
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// تضمين ملف الرأس لجميع الصفحات (يحوي الدوال المطلوبة)
// نستخدم نفس المسار الذي يعمل لديك:
include '../../includes/header.php';

// التحقق من تسجيل الدخول
checkLogin();

// الحصول على كائن قاعدة البيانات
$db = getDB();

// الحصول على معرف المستخدم من الجلسة
$userId = $_SESSION['user_id'] ?? null;

// التحقق من صلاحية حذف حركات الصندوق (يجب التأكد من وجود هذه الصلاحية)
$canDelete = hasPermission('delete_cashbox_entry');

// ===========================================
// التحقق من الطلب وبيانات الحذف (يجب أن يكون POST)
// ===========================================

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    $_SESSION['error_message'] = "تم الوصول إلى صفحة الحذف بطريقة غير صحيحة.";
    header("Location: cashbox_index.php");
    exit;
}

$transactionId = $_POST['id'] ?? null;
$source = $_POST['source'] ?? null; // يجب أن يكون "Cashbox" من الـ Modal

if (!$transactionId || $source !== 'Cashbox') {
    $_SESSION['error_message'] = "بيانات الحذف غير مكتملة أو غير صالحة.";
    header("Location: cashbox_index.php");
    exit;
}

try {
    // 1. جلب الحركة للتحقق من الصلاحيات
    $sql = "SELECT * FROM main_cashbox WHERE id = ?";
    $transaction = $db->selectOne($sql, [$transactionId]);

    if (!$transaction) {
        $_SESSION['error_message'] = "الحركة المطلوبة غير موجودة.";
        header("Location: cashbox_index.php");
        exit;
    }

    // 2. التحقق من الصلاحيات: المدير (canDelete) أو منشئ الحركة
    // نفترض أن عمود "created_by" موجود في جدول main_cashbox
    if (!$canDelete && $transaction['created_by'] != $userId) {
        $_SESSION['error_message'] = "ليس لديك صلاحية لحذف هذه الحركة.";
        header("Location: cashbox_index.php");
        exit;
    }

    // 🛑 لا توجد خطوة لحذف المرفقات أو التحقق من حالة الاعتماد/الرفض هنا 🛑

    // 3. حذف الإشعارات المرتبطة بالحركة (إذا كانت هناك إشعارات مرتبطة بحركات الصندوق)
    // نستخدم link للحركات view.php?id أو edit.php?id 
    $deleteNotificationsSql = "DELETE FROM notifications WHERE link LIKE ?";
    $db->delete($deleteNotificationsSql, ['%cashbox_edit.php?id=' . $transactionId]);

    // 4. تسجيل الحذف في جدول log_file
    // نستخدم 'حركات_الصندوق' كموديول
    if (function_exists('logAction')) {
        logAction($db, 'حركات_الصندوق', $transactionId, $userId, $transaction, [], 'حذف');
    }
    
    // 5. حذف الحركة من قاعدة البيانات
    $deleteSql = "DELETE FROM main_cashbox WHERE id = ?";
    if ($db->delete($deleteSql, [$transactionId])) {
        $_SESSION['success_message'] = "تم حذف حركة الصندوق بنجاح. تم تحديث الرصيد الكلي.";
    } else {
        $_SESSION['error_message'] = "حدث خطأ أثناء حذف الحركة من الصندوق.";
    }

} catch (PDOException $e) {
    $_SESSION['error_message'] = "حدث خطأ في قاعدة البيانات أثناء الحذف: " . $e->getMessage();
}

// إعادة التوجيه إلى صفحة قائمة الصندوق الرئيسية
header("Location: cashbox_index.php");
exit;