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

$pageTitle = 'تعديل الإجازة';
// تضمين الملف الذي يحتوي على فئة Database والدوال المساعدة
include '../../includes/header.php';

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

// التحقق من صلاحية الوصول إلى هذه الصفحة
if (!hasPermission('edit_vacation')) {
    $_SESSION['error_message'] = 'ليس لديك صلاحية لتعديل الإجازات.';
    header('Location: view_vacations.php');
    exit();
}

$db = getDB();
$vacation = null;
$employees = [];
$errors = [];

// التحقق من وجود معرف الإجازة في الرابط
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
    $_SESSION['error_message'] = 'معرف الإجازة غير صالح.';
    header('Location: view_vacations.php');
    exit();
}

$vacation_id = (int)$_GET['id'];

try {
    // جلب بيانات الإجازة الحالية
    $vacation_result = $db->select("SELECT * FROM employee_vacations WHERE id = ?", [$vacation_id]);
    if (empty($vacation_result)) {
        $_SESSION['error_message'] = 'الإجازة غير موجودة.';
        header('Location: view_vacations.php');
        exit();
    }
    $vacation = $vacation_result[0];

    // جلب جميع الموظفين لملء القائمة المنسدلة
    $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 vacation or employees: " . $e->getMessage());
    $_SESSION['error_message'] = "حدث خطأ في قاعدة البيانات. يرجى المحاولة لاحقًا.";
    header('Location: view_vacations.php');
    exit();
}

// التعامل مع إرسال النموذج
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // تنقية وتدقيق المدخلات
    $employee_id = filter_input(INPUT_POST, 'employee_id', FILTER_VALIDATE_INT);
    $vacation_type = trim($_POST['vacation_type']);
    $start_date = trim($_POST['start_date']);
    $end_date = trim($_POST['end_date']);
    $notes = trim($_POST['notes']);

    // التحقق من صحة المدخلات
    if (!$employee_id) {
        $errors[] = 'الرجاء اختيار الموظف.';
    }
    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 (empty($errors)) {
        try {
            // تحديث بيانات الإجازة في قاعدة البيانات
            $result = $db->update(
                "UPDATE employee_vacations SET employee_id = ?, vacation_type = ?, start_date = ?, end_date = ?, notes = ? WHERE id = ?",
                [$employee_id, $vacation_type, $start_date, $end_date, $notes, $vacation_id]
            );

            if ($result) {
                $_SESSION['success_message'] = 'تم تعديل الإجازة بنجاح.';
                header('Location: view_vacations.php');
                exit();
            } else {
                $errors[] = 'لم يتم تعديل أي بيانات أو حدث خطأ.';
            }
        } catch (Exception $e) {
            error_log("Database error updating vacation: " . $e->getMessage());
            $errors[] = 'حدث خطأ في قاعدة البيانات. يرجى المحاولة لاحقًا.';
        }
    }
}
?>

<div class="content-area">
    <div class="page-header">
        <div class="d-flex justify-content-between align-items-center">
            <div>
                <h2 class="page-title"><?php echo $pageTitle; ?></h2>
                <p class="page-subtitle">تعديل معلومات الإجازة للموظف.</p>
            </div>
            <div class="text-start">
                <a href="view_vacations.php" class="btn btn-secondary me-2">
                    <i class="fas fa-arrow-left me-2"></i>العودة لقائمة الإجازات
                </a>
            </div>
        </div>
    </div>

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

    <div class="card mb-4 shadow-sm">
        <div class="card-body">
            <form action="" method="POST">
                <div class="row g-3">
                    <div class="col-md-6">
                        <label for="employee_id" class="form-label">اسم الموظف <span class="text-danger">*</span></label>
                        <select id="employee_id" name="employee_id" class="form-select" required>
                            <option value="">اختر موظفًا...</option>
                            <?php foreach ($employees as $employee): ?>
                                <option value="<?php echo htmlspecialchars($employee['id']); ?>"
                                    <?php echo ($vacation['employee_id'] == $employee['id']) ? 'selected' : ''; ?>>
                                    <?php echo htmlspecialchars($employee['full_name'] . ' (' . $employee['national_id_number'] . ')'); ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </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="سنوية" <?php echo ($vacation['vacation_type'] === 'سنوية') ? 'selected' : ''; ?>>إجازة سنوية</option>
                            <option value="مرضية" <?php echo ($vacation['vacation_type'] === 'مرضية') ? 'selected' : ''; ?>>إجازة مرضية</option>
                            <option value="طارئة" <?php echo ($vacation['vacation_type'] === 'طارئة') ? 'selected' : ''; ?>>إجازة طارئة</option>
                            <option value="بدون_راتب" <?php echo ($vacation['vacation_type'] === 'بدون_راتب') ? 'selected' : ''; ?>>إجازة بدون راتب</option>
                            <option value="أخرى" <?php echo ($vacation['vacation_type'] === 'أخرى') ? 'selected' : ''; ?>>أخرى</option>
                        </select>
                    </div>

                    <div class="col-md-6">
                        <label for="start_date" class="form-label">تاريخ البداية <span class="text-danger">*</span></label>
                        <input type="date" id="start_date" name="start_date" class="form-control" value="<?php echo htmlspecialchars($vacation['start_date']); ?>" required>
                    </div>

                    <div class="col-md-6">
                        <label for="end_date" class="form-label">تاريخ النهاية <span class="text-danger">*</span></label>
                        <input type="date" id="end_date" name="end_date" class="form-control" value="<?php echo htmlspecialchars($vacation['end_date']); ?>" required>
                    </div>

                    <div class="col-12">
                        <label for="notes" class="form-label">ملاحظات</label>
                        <textarea id="notes" name="notes" class="form-control" rows="3"><?php echo htmlspecialchars($vacation['notes']); ?></textarea>
                    </div>

                    <div class="col-12 mt-4 text-start">
                        <button type="submit" class="btn btn-warning">
                            <i class="fas fa-edit me-2"></i>تعديل الإجازة
                        </button>
                        <a href="view_vacations.php" class="btn btn-secondary">
                            <i class="fas fa-times me-2"></i>إلغاء
                        </a>
                    </div>
                </div>
            </form>
        </div>
    </div>
</div>

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