<?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;

// --- بداية معالجة إرسال نموذج إضافة صرفية ---
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'] ?? '');
    
    // المُعرّف الحالي للمستخدم الذي قام بإنشاء السجل
    $createdBy = $userId;

    $receiptPath = null;
    $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)) {
        $isFormValid = false;
        $_SESSION['error_message'] = 'الرجاء إدخال جميع الحقول الإلزامية بشكل صحيح.';
    }

    // شرط جديد: حقل الموظف إلزامي للسلفة والتعزيز
    if (($expenseType === 'سلفة' || $expenseType === 'تعزيز') && 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: create.php');
                exit();
            }
        }
    
        // إدخال البيانات في جدول الصرفيات
        $sql = "INSERT INTO expenses (employee_id, category_id, created_by, title, amount, receipt_path, notes, created_at, expense_date, expense_type) 
                VALUES (?, ?, ?, ?, ?, ?, ?, NOW(), ?, ?)";
                
        $newExpenseId = $db->insert($sql, [$employeeId, $categoryId, $createdBy, $title, $amount, $receiptPath, $notes, $expenseDate, $expenseType]);

// التحقق مما إذا كانت عملية الإدخال ناجحة
if ($newExpenseId !== false) {
    
    
// جلب بيانات الصرفية الجديدة بعد الإدخال
$newData = $db->select("SELECT * FROM expenses WHERE id = ? LIMIT 1", [$newExpenseId])[0];

// // تسجيل الإضافة في log_file
// logAction($db, 'expenses', $newExpenseId, $userId, [], $newData, 'INSERT');

  try {
        // 🔹 جلب user_id الخاص بالموظف المستفيد
        $userSql = "SELECT id, full_name FROM users WHERE employee_id = ? LIMIT 1";
        $userResult = $db->select($userSql, [$employeeId]);

        if (!empty($userResult)) {
            $employeeUserId = $userResult[0]['id']; // user_id الخاص بالموظف
            $employeeName = $userResult[0]['full_name'] ?: 'الموظف';

            // 🔹 اسم المستخدم الذي قام بإنشاء الصرفية
            $creatorName = $_SESSION['full_name'] ?? 'المسؤول';

            // 🔹 نص الإشعار الجديد
            $notificationTitle = "عالم التدوير / إضافة صرفية";
            $notificationMessage = " قام   $creatorName بإنشاء مستند صرف، وقام بأسناده اليك    : $employeeName، المبلغ: $amount";

            $notificationLink = '/pages/expenses/view.php?id=' . $newExpenseId;

            // إدراج الإشعار
            $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 = [];
try {
    $categoriesSql = "SELECT id, category_name FROM expense_categories ORDER BY category_name ASC";
    $categories = $db->select($categoriesSql);
} catch (PDOException $e) {
    $_SESSION['error_message'] = ($_SESSION['error_message'] ?? '') . ' حدث خطأ أثناء جلب قائمة التصنيفات.';
}

// --- جلب جميع الموظفين ---
$employees = [];
try {
    $employeesSql = "SELECT id, full_name FROM employees ORDER BY full_name ASC";
    $employees = $db->select($employeesSql);
} catch (PDOException $e) {
    $_SESSION['error_message'] = ($_SESSION['error_message'] ?? '') . ' حدث خطأ أثناء جلب قائمة الموظفين.';
}
?>

<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="create.php" 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="سلفة">سلفة</option>
                        <option value="تعزيز">تعزيز</option>
                        <option value="أخرى">أخرى</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 htmlspecialchars($category['id']); ?>">
                                <?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">
</div>

                
                <div class="mb-3">
                    <label for="employee_id" class="form-label">الموظف المسؤول عن الصرف هو </label>
                    <select class="form-select" id="employee_id" name="employee_id">
                        <option value="">-- اختر موظف --</option>
                        <?php foreach ($employees as $employee): ?>
                            <option value="<?php echo htmlspecialchars($employee['id']); ?>">
                                <?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>
                </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 date('Y-m-d'); ?>">
                </div>

                <div class="mb-3">
                    <label for="receipt" class="form-label">وصل الشراء (اختياري)</label>
                    <input type="file" class="form-control" id="receipt" name="receipt">
                </div>

                <div class="mb-3">
                    <label for="notes" class="form-label">ملاحظات إضافية (اختياري)</label>
                    <textarea class="form-control" id="notes" name="notes" rows="3"></textarea>
                </div>
                
                <div class="mb-3">
                    <label for="created_by_name" class="form-label">الشخص الذي قام بإدخال الصرفية</label>
                    <input type="text" class="form-control" id="created_by_name" value="<?php echo htmlspecialchars($_SESSION['full_name']); ?>" disabled>
                    <small class="form-text text-muted">هذا الحقل يعرض اسم المستخدم الذي قام بتسجيل الصرفية ولا يمكن تغييره.</small>
                </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() {
        // تهيئة Select2
        $('#employee_id').select2({
            placeholder: "ابحث عن موظف...",
            allowClear: true
        });

        // ---------------------------------------------
        // ** وظيفة تبديل الموظف الإلزامي **
        // ---------------------------------------------
function toggleEmployeeRequired() {
    var employeeSelect = $('#employee_id');
    var employeeLabel = $('label[for="employee_id"]');

    // النص مع النجمة دائمًا
    employeeLabel.html('الموظف المسؤول عن الصرف هو  <span class="text-danger">*</span>');

    // حقل الموظف إلزامي دائمًا
    employeeSelect.prop('required', true);
}

// استدعاء الدالة عند تحميل الصفحة
$(document).ready(function() {
    toggleEmployeeRequired();
});



        toggleEmployeeRequired();
        $('#expense_type').on('change', toggleEmployeeRequired);
    });
</script>

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