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

$pageTitle = 'تعديل حركة الصندوق'; 
include '../../includes/header.php'; // تأكد من المسار الصحيح
checkLogin();

// 🚨 التأكد من صلاحية التعديل
if (!hasPermission('edit_cashbox_entry')) {
    redirect_with_message('cashbox_index.php', 'ليس لديك الصلاحية لتعديل حركات الصندوق.', 'danger');
}

$db = getDB();
$transaction_id = $_GET['id'] ?? null;

// ===========================================
// 1. جلب بيانات الحركة الحالية
// ===========================================
if (!$transaction_id || !is_numeric($transaction_id)) {
    redirect_with_message('cashbox_index.php', 'معرف الحركة غير صالح.', 'danger');
}

$current_transaction = $db->select("SELECT * FROM main_cashbox WHERE id = ?", [$transaction_id]);

if (empty($current_transaction)) {
    redirect_with_message('cashbox_index.php', 'الحركة المطلوبة غير موجودة.', 'danger');
}

$data = $current_transaction[0];

// ===========================================
// 2. معالجة طلب التعديل (POST)
// ===========================================
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $date = $_POST['date'] ?? null;
    $type = $_POST['type'] ?? null;
    $amount = $_POST['amount'] ?? 0;
    $operation_type = $_POST['operation_type'] ?? '';
    $employee_id = $_POST['employee_id'] ?? null;
    $description = $_POST['description'] ?? '';

    // التحقق الأساسي من البيانات
    if (empty($date) || empty($type) || $amount <= 0) {
        $error = "الرجاء تعبئة الحقول المطلوبة (التاريخ، النوع، والمبلغ).";
    } elseif (!in_array($type, ['دخل', 'خرج'])) {
        $error = "نوع الحركة غير صالح.";
    } else {
        try {
            // تحديث سجل الحركة في جدول main_cashbox
            $update_sql = "
                UPDATE main_cashbox 
                SET 
                    transaction_date = ?, 
                    transaction_type = ?, 
                    amount = ?, 
                    operation_type = ?, 
                    employee_id = ?, 
                    description = ?
                WHERE id = ?
            ";
            
            $db->update($update_sql, [
                $date, 
                $type, 
                $amount, 
                $operation_type, 
                $employee_id ?: null, // حفظ كـ NULL إذا كان فارغاً
                $description,
                $transaction_id
            ]);

            // رسالة نجاح وإعادة توجيه
            redirect_with_message('cashbox_index.php', 'تم تعديل حركة الصندوق بنجاح.', 'success');
        } catch (Exception $e) {
            $error = "حدث خطأ أثناء التعديل: " . $e->getMessage();
        }
    }
}

// 3. جلب قائمة الموظفين للعرض في النموذج
$employees = $db->select("SELECT id, full_name FROM employees ORDER BY full_name") ?: [];
?>

<div class="container py-4" dir="rtl">
    <h2 class="text-center mb-4"><i class="fas fa-edit me-2"></i><?= htmlspecialchars($pageTitle) ?></h2>
    
    <div class="card shadow-lg p-4 mx-auto" style="max-width: 600px;">
        <?php if (isset($error)): ?>
            <div class="alert alert-danger"><?= htmlspecialchars($error) ?></div>
        <?php endif; ?>

        <form method="POST">
            <input type="hidden" name="id" value="<?= htmlspecialchars($data['id']) ?>">
            
            <div class="mb-3">
                <label for="date" class="form-label">تاريخ الحركة</label>
                <input type="date" name="date" id="date" class="form-control" value="<?= htmlspecialchars($data['transaction_date']) ?>" required>
            </div>

            <div class="mb-3">
                <label for="type" class="form-label">نوع الحركة</label>
                <select name="type" id="type" class="form-select" required>
                    <option value="دخل" <?= $data['transaction_type'] == 'دخل' ? 'selected' : '' ?>>دخل (إيداع/تحويل)</option>
                    <option value="خرج" <?= $data['transaction_type'] == 'خرج' ? 'selected' : '' ?>>خرج (سحب/سلفة)</option>
                </select>
            </div>

            <div class="mb-3">
                <label for="amount" class="form-label">المبلغ</label>
                <input type="number" step="0.01" min="0.01" name="amount" id="amount" class="form-control" value="<?= htmlspecialchars($data['amount']) ?>" required>
            </div>

            <div class="mb-3">
                <label for="operation_type" class="form-label">تصنيف العملية (مثل: سلفة، إيداع، تحويل)</label>
                <input type="text" name="operation_type" id="operation_type" class="form-control" value="<?= htmlspecialchars($data['operation_type']) ?>">
            </div>

            <div class="mb-3">
                <label for="employee_id" class="form-label">الموظف المرتبط بالحركة (اختياري)</label>
                <select name="employee_id" id="employee_id" class="form-select">
                    <option value="">-- لا يوجد موظف مرتبط --</option>
                    <?php foreach ($employees as $employee): ?>
                        <option value="<?= $employee['id'] ?>" <?= $data['employee_id'] == $employee['id'] ? 'selected' : '' ?>>
                            <?= htmlspecialchars($employee['full_name']) ?>
                        </option>
                    <?php endforeach; ?>
                </select>
            </div>

            <div class="mb-4">
                <label for="description" class="form-label">الملاحظات</label>
                <textarea name="description" id="description" class="form-control" rows="3"><?= htmlspecialchars($data['description']) ?></textarea>
            </div>

            <div class="d-grid gap-2">
                <button type="submit" class="btn btn-primary"><i class="fas fa-save me-2"></i>حفظ التعديلات</button>
                <a href="cashbox_index.php" class="btn btn-secondary">إلغاء والعودة</a>
            </div>
        </form>
    </div>
</div>

<?php include '../../includes/footer.php'; ?>