<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$pageTitle = 'إضافة إجازة لموظف';
include '../../includes/header.php';
checkLogin();

if (!hasPermission('manage_vacations')) {
    $_SESSION['error_message'] = 'ليس لديك صلاحية لإدارة الإجازات.';
    header('Location: ../../index.php');
    exit();
}

$db = getDB();
$employees = [];
$errors = [];
$success = false;
$created_by = $_SESSION['user_id'] ?? null;

try {
    $employees = $db->select("SELECT id, full_name, national_id_number FROM employees ORDER BY full_name ASC");
} catch (Exception $e) {
    error_log("Database error fetching employees: " . $e->getMessage());
    $_SESSION['error_message'] = "حدث خطأ أثناء جلب البيانات.";
    header('Location: index.php');
    exit();
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $employee_ids = $_POST['employee_id'] ?? [];
    if (!is_array($employee_ids) || count($employee_ids) === 0) {
        $errors[] = 'الرجاء اختيار موظف واحد على الأقل.';
    }

    $vacation_type = trim($_POST['vacation_type']);
    $start_date = trim($_POST['start_date']);
    $end_date = trim($_POST['end_date']);
    $notes = trim($_POST['notes']);

    if (empty($vacation_type)) $errors[] = 'الرجاء اختيار نوع الإجازة.';
    if (empty($start_date) || !strtotime($start_date)) $errors[] = 'تاريخ البداية غير صالح.';
    if (empty($end_date) || !strtotime($end_date)) $errors[] = 'تاريخ النهاية غير صالح.';
    if (strtotime($start_date) > strtotime($end_date)) $errors[] = 'تاريخ البداية يجب أن يكون قبل النهاية.';
    if (!$created_by) $errors[] = 'لا يمكن تحديد المستخدم.';

    if (empty($errors)) {
        try {
            foreach ($employee_ids as $emp_id) {
                $db->insert(
                    "INSERT INTO employee_vacations (employee_id, vacation_type, start_date, end_date, notes, created_by)
                    VALUES (?, ?, ?, ?, ?, ?)",
                    [$emp_id, $vacation_type, $start_date, $end_date, $notes, $created_by]
                );
            }
            $_SESSION['success_message'] = 'تم إضافة الإجازة للموظفين المحددين.';
            header('Location: view_vacations.php');
            exit();
        } catch (Exception $e) {
            $errors[] = 'حدث خطأ أثناء حفظ البيانات.';
        }
    }
}
?>

<style>
#employee_list_box {
    max-height: 300px;
    overflow-y: auto;
    border: 1px solid #ddd;
    padding: 10px;
    border-radius: 6px;
}
.selected-item {
    background: #eef5ff;
    padding: 6px 10px;
    border-radius: 4px;
    margin: 4px 0;
}
</style>

<div class="content-area">
<div class="content-area">
    <div class="page-header d-flex justify-content-between align-items-center">
        <div>
            <h2><?php echo $pageTitle; ?></h2>
            <p>إضافة إجازة لموظفين متعددين.</p>
        </div>
        <div>
            <a href="manage_zones.php" class="btn btn-primary me-2">تحديد موقع العمل</a>
            
            <a href="view_vacations.php" class="btn btn-secondary">عرض الإجازات</a>
        </div>
    </div>

 

    <?php if (!empty($errors)): ?>
        <div class="alert alert-danger mt-3">
            <ul>
                <?php foreach ($errors as $error) echo '<li>' . htmlspecialchars($error) . '</li>'; ?>
            </ul>
        </div>
    <?php endif; ?>

    <div class="card shadow-sm">
        <div class="card-body">
            <form method="POST">
                <div class="row g-3">

                    <!-- مربع البحث -->
                    <div class="col-md-6">
                        <label class="form-label">بحث عن موظف</label>
                        <input type="text" id="searchBox" class="form-control" placeholder="اكتب اسم الموظف...">
                    </div>

                    <!-- قائمة الموظفين -->
                    <div class="col-md-6">
                        <label class="form-label">الموظفون</label>
                        <div id="employee_list_box">
                            <?php foreach ($employees as $emp): ?>
                                <div>
                                    <input type="checkbox" class="empCheck" value="<?php echo $emp['id']; ?>"> 
                                    <?php echo htmlspecialchars($emp['full_name'] . ' (' . $emp['national_id_number'] . ')'); ?>
                                </div>
                            <?php endforeach; ?>
                        </div>
                    </div>

                    <!-- قائمة الموظفين المحددين -->
                    <div class="col-12">
                        <label class="form-label">الموظفون المحددون:</label>
                        <div id="selectedEmployees"></div>
                    </div>

                    <!-- أنواع الإجازات -->
                    <div class="col-md-6">
                        <label for="vacation_type" class="form-label">نوع الإجازة / التصريح <span class="text-danger">*</span></label>
                        <select id="vacation_type" name="vacation_type" class="form-select" required>
                            <option value="">اختر النوع...</option>
                            <option value="سنوية">إجازة سنوية</option>
                            <option value="مرضية">إجازة مرضية</option>
                            <option value="طارئة">إجازة طارئة</option>
                            <option value="بدون_راتب">إجازة بدون راتب</option>
                            <option value="مكلف_بمهمة">مكلف بمهمة</option>
                            <option value="واجب">واجب رسمي</option>
                            <option value="واجب_وقتي">واجب رسمي وقتي</option>
                            <option value="زمنية">زمنية</option>
                            <option value="غياب">غياب</option>
                            <option value="ايفاد">إيفاد</option>
                            <option value="تفرغ">تفرغ</option>
                                         <option value="اصابة عمل">اصابة عمل</option>
                            <option value="استراحة">استراحة نهاية الأسبوع</option>
                            <option value="دوام_في_عطلة">دوام في عطلة</option>
                        </select>
                    </div>

                    <div class="col-md-6">
                        <label class="form-label">تاريخ البداية</label>
                        <input type="date" name="start_date" class="form-control" required>
                    </div>

                    <div class="col-md-6">
                        <label class="form-label">تاريخ النهاية</label>
                        <input type="date" name="end_date" class="form-control" required>
                    </div>

                    <div class="col-md-12">
                        <label class="form-label">ملاحظات</label>
                        <textarea name="notes" class="form-control" rows="3"></textarea>
                    </div>

                    <div class="col-12 text-start mt-4">
                        <button class="btn btn-primary">إضافة الإجازة</button>
                    </div>

                </div>
            </form>
        </div>
    </div>
</div>

<script>
// بحث فوري
const searchBox = document.getElementById('searchBox');
const checkboxes = document.querySelectorAll('.empCheck');

searchBox.addEventListener('keyup', () => {
    let text = searchBox.value.toLowerCase();
    checkboxes.forEach(ch => {
        let label = ch.parentElement.innerText.toLowerCase();
        ch.parentElement.style.display = label.includes(text) ? '' : 'none';
    });
});

// تحديث قائمة المختارين وإرسالهم للحفظ
const selectedBox = document.getElementById('selectedEmployees');

function updateSelected() {
    selectedBox.innerHTML = '';

    // إزالة أي hidden inputs قديمة
    const oldInputs = document.querySelectorAll('input[name="employee_id[]"]');
    oldInputs.forEach(i => i.remove());

    // إضافة الموظفين المحددين وhidden inputs
    checkboxes.forEach(ch => {
        if (ch.checked) {
            let div = document.createElement('div');
            div.className = 'selected-item';
            div.innerText = ch.parentElement.innerText.trim();
            selectedBox.appendChild(div);

            let input = document.createElement('input');
            input.type = 'hidden';
            input.name = 'employee_id[]';
            input.value = ch.value;
            document.querySelector('form').appendChild(input);
        }
    });
}

checkboxes.forEach(ch => ch.addEventListener('change', updateSelected));
</script>

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