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

$pageTitle = 'تعديل مستند صرف';
include '../../includes/header.php';
checkLogin();
$db = getDB();

$userId = $_SESSION['user_id'] ?? null;

// جلب معرف الصرفية من الرابط
$expenseId = $_GET['id'] ?? null;
if (!$expenseId) {
    $_SESSION['error_message'] = 'معرف الصرفية غير موجود.';
    header('Location: index.php');
    exit();
}

// --- جلب بيانات الصرفية الحالية ---
$expense = $db->select("SELECT * FROM expenses WHERE id = ? LIMIT 1", [$expenseId]);
if (empty($expense)) {
    $_SESSION['error_message'] = 'الصرفية المطلوبة غير موجودة.';
    header('Location: index.php');
    exit();
}
$expense = $expense[0];

// --- معالجة إرسال النموذج ---
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $expenseType = htmlspecialchars($_POST['expense_type'] ?? '');
    $categoryId = htmlspecialchars($_POST['category_id'] ?? '');
    $title = htmlspecialchars($_POST['title'] ?? '');
    $employeeId = htmlspecialchars($_POST['employee_id'] ?? '');
    $amount = filter_var($_POST['amount'] ?? 0, FILTER_VALIDATE_FLOAT);
    $notes = htmlspecialchars($_POST['notes'] ?? '');
    $expenseDate = htmlspecialchars($_POST['date'] ?? '');
    
    $receiptPath = $expense['receipt_path']; // مسار الملف الحالي
    $hasFile = isset($_FILES['receipt']) && $_FILES['receipt']['error'] === UPLOAD_ERR_OK;

    $isFormValid = true;
    if ($amount === false || $amount <= 0 || empty($title) || empty($expenseDate) || empty($expenseType) || empty($categoryId) || empty($employeeId)) {
        $isFormValid = false;
        $_SESSION['error_message'] = 'الرجاء إدخال جميع الحقول الإلزامية بشكل صحيح.';
    }

    if ($isFormValid) {
        // رفع ملف جديد إذا تم إرساله
        if ($hasFile) {
            $uploadDir = '../../uploads/expenses/';
            if (!is_dir($uploadDir)) mkdir($uploadDir, 0777, true);
            $fileExtension = pathinfo($_FILES['receipt']['name'], PATHINFO_EXTENSION);
            $fileName = uniqid('receipt_') . '.' . $fileExtension;
            $destination = $uploadDir . $fileName;
            if (move_uploaded_file($_FILES['receipt']['tmp_name'], $destination)) {
                $receiptPath = 'uploads/expenses/' . $fileName;
            } else {
                $_SESSION['error_message'] = 'حدث خطأ أثناء رفع ملف وصل الشراء.';
                header('Location: edit.php?id=' . $expenseId);
                exit();
            }
        }

        // تحديث البيانات
        $sql = "UPDATE expenses SET employee_id=?, category_id=?, title=?, amount=?, receipt_path=?, notes=?, expense_date=?, expense_type=?, created_at=NOW() WHERE id=?";
        $updated = $db->update($sql, [$employeeId, $categoryId, $title, $amount, $receiptPath, $notes, $expenseDate, $expenseType, $expenseId]);

        if ($updated !== false) {
            
            
                // جلب البيانات الجديدة بعد التعديل
    $newData = $db->select("SELECT * FROM expenses WHERE id = ? LIMIT 1", [$expenseId])[0];
    
    $oldData = $expense;
    
    // تسجيل التغيير في جدول log_file
// تعديل سجل
logAction($db, 'الصرفيات', $expenseId, $userId, $oldData, $newData, 'تعديل');



            // إرسال إشعار للموظف المسؤول
            try {
                $userSql = "SELECT id, full_name FROM users WHERE employee_id = ? LIMIT 1";
                $userResult = $db->select($userSql, [$employeeId]);

                if (!empty($userResult)) {
                    $employeeUserId = $userResult[0]['id'];
                    $employeeName = $userResult[0]['full_name'] ?: 'الموظف';
                    $editorName = $_SESSION['full_name'] ?? 'المسؤول';
                    $notificationTitle = "عالم التدوير / تعديل صرفية";
                    $notificationMessage = "$editorName قام بتعديل مستند الصرف، المستفيد: $employeeName، المبلغ: $amount";
                    $notificationLink = '/pages/expenses/view.php?id=' . $expenseId;

                    $notificationSql = "INSERT INTO notifications (user_id, title, message, link, is_read, created_at) 
                                        VALUES (?, ?, ?, ?, 0, NOW())";
                    $db->insert($notificationSql, [$employeeUserId, $notificationTitle, $notificationMessage, $notificationLink]);
                }
            } catch (Exception $e) {
                error_log("⚠️ فشل إنشاء الإشعار بعد تعديل الصرفية: " . $e->getMessage());
            }

            $_SESSION['success_message'] = 'تم تعديل الصرفية بنجاح.';
            header('Location: index.php');
            exit();
        } else {
            $_SESSION['error_message'] = 'حدث خطأ أثناء تعديل الصرفية.';
        }
    }
}

// --- جلب التصنيفات ---
$categories = $db->select("SELECT id, category_name FROM expense_categories ORDER BY category_name ASC");

// --- جلب الموظفين ---
$employees = $db->select("SELECT id, full_name FROM employees ORDER BY full_name ASC");
?>

<div class="container py-4">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <div>
            <h2 class="h4">تعديل مستند صرف</h2>
            <p class="text-muted">قم بتعديل الحقول أدناه.</p>
        </div>
        <a href="index.php" class="btn btn-secondary"><i class="fas fa-list me-2"></i>العودة لقائمة الصرفيات</a>
    </div>

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

    <div class="card shadow-sm">
        <div class="card-body">
            <form action="edit.php?id=<?php echo $expenseId; ?>" method="POST" enctype="multipart/form-data">
                <div class="mb-3">
                    <label for="expense_type" class="form-label">نوع الصرف</label>
                    <select class="form-select" id="expense_type" name="expense_type" required>
                        <option value="">-- اختر نوع الصرف --</option>
                        <option value="سلفة" <?php if($expense['expense_type']=='سلفة') echo 'selected'; ?>>سلفة</option>
                        <option value="تعزيز" <?php if($expense['expense_type']=='تعزيز') echo 'selected'; ?>>تعزيز</option>
                        <option value="أخرى" <?php if($expense['expense_type']=='أخرى') echo 'selected'; ?>>أخرى</option>
                    </select>
                </div>

                <div class="mb-3">
                    <div class="d-flex justify-content-between align-items-center mb-1">
                        <label for="category_id" class="form-label mb-0">فئة الصرف</label>
                        <a href="categories.php" class="btn btn-sm btn-primary py-0 px-2" target="_blank"><i class="fas fa-plus me-1"></i> إضافة تصنيف</a>
                    </div>
                    <select class="form-select" id="category_id" name="category_id" required>
                        <option value="">-- اختر الفئة --</option>
                        <?php foreach ($categories as $category): ?>
                            <option value="<?php echo $category['id']; ?>" <?php if($expense['category_id']==$category['id']) echo 'selected'; ?>>
                                <?php echo htmlspecialchars($category['category_name']); ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>

                <div class="mb-3">
                    <label for="title" class="form-label"> اسم الطلبية</label>
                    <input type="text" class="form-control" id="title" name="title" required maxlength="15" value="<?php echo htmlspecialchars($expense['title']); ?>">
                </div>

                <div class="mb-3">
                    <label for="employee_id" class="form-label">الموظف المسؤول عن الصرف هو <span class="text-danger">*</span></label>
                    <select class="form-select" id="employee_id" name="employee_id" required>
                        <option value="">-- اختر موظف --</option>
                        <?php foreach ($employees as $employee): ?>
                            <option value="<?php echo $employee['id']; ?>" <?php if($expense['employee_id']==$employee['id']) echo 'selected'; ?>>
                                <?php echo htmlspecialchars($employee['full_name']); ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>

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

                <div class="mb-3">
                    <label for="date" class="form-label">تاريخ الصرف</label>
                    <input type="date" class="form-control" id="date" name="date" required value="<?php echo htmlspecialchars($expense['expense_date']); ?>">
                </div>

                <div class="mb-3">
                    <label for="receipt" class="form-label">وصل الشراء (اختياري)</label>
                    <input type="file" class="form-control" id="receipt" name="receipt">
                    <?php if(!empty($expense['receipt_path'])): ?>
                        <small class="text-muted">الملف الحالي: <a href="../../<?php echo $expense['receipt_path']; ?>" target="_blank">عرض</a></small>
                    <?php endif; ?>
                </div>

                <div class="mb-3">
                    <label for="notes" class="form-label">ملاحظات إضافية (اختياري)</label>
                    <textarea class="form-control" id="notes" name="notes" rows="3"><?php echo htmlspecialchars($expense['notes']); ?></textarea>
                </div>

                <button type="submit" class="btn btn-primary">تحديث الصرفية</button>
            </form>
        </div>
    </div>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>

<script>
$(document).ready(function() {
    $('#employee_id').select2({
        placeholder: "ابحث عن موظف...",
        allowClear: true
    });
});
</script>

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