<?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();
$vacations = [];
$total_vacations = 0;
$unique_employees_on_vacation = 0; // متغير الكارت الجديد 2
$unique_vacation_types_count = 0; // متغير الكارت الجديد 3

$limit = 15;
$page = isset($_GET['page']) && is_numeric($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $limit;

// متغيرات الفلترة
$employee_filter_id = isset($_GET['employee_filter_id']) ? (int)$_GET['employee_filter_id'] : null;
$vacation_type_filter = isset($_GET['vacation_type_filter']) ? trim($_GET['vacation_type_filter']) : null;
$start_date_filter = isset($_GET['start_date_filter']) ? trim($_GET['start_date_filter']) : null;
$end_date_filter = isset($_GET['end_date_filter']) ? trim($_GET['end_date_filter']) : null;

// قائمة أنواع الإجازات 
$vacation_types = [
    'سنوية' => 'إجازة سنوية',
    'مرضية' => 'إجازة مرضية',
    'طارئة' => 'إجازة طارئة',
    'بدون_راتب' => 'إجازة بدون راتب',
    'مكلف_بمهمة' => 'مكلف بمهمة',
    'واجب' => 'واجب رسمي',
    'واجب_وقتي' => 'واجب رسمي وقتي',
    'زمنية' => 'زمنية',
    'غياب' => 'غياب',
    'ايفاد' => 'إيفاد',
    'تفرغ' => 'تفرغ',
    'اصابة عمل' => 'اصابة عمل',
    'استراحة' => 'استراحة نهاية الأسبوع',
    'دوام_في_عطلة' => 'دوام في عطلة',
];

try {
    // 1. جلب قائمة الموظفين لاستخدامها في فلتر البحث
    $employees_list = $db->select("SELECT id, full_name, national_id_number FROM employees ORDER BY full_name ASC");

    // 2. بناء WHERE بناءً على الفلاتر
    $where_clauses = [];
    $params = [];

    if ($employee_filter_id > 0) {
        $where_clauses[] = "ev.employee_id = ?";
        $params[] = $employee_filter_id;
    }
    
    if (!empty($vacation_type_filter) && $vacation_type_filter !== 'all') {
        $where_clauses[] = "ev.vacation_type = ?";
        $params[] = $vacation_type_filter;
    }

    if (!empty($start_date_filter)) {
        $where_clauses[] = "ev.start_date >= ?";
        $params[] = $start_date_filter;
    }
    if (!empty($end_date_filter)) {
        $where_clauses[] = "ev.end_date <= ?";
        $params[] = $end_date_filter;
    }

    $filter_where = count($where_clauses) > 0 ? "WHERE " . implode(" AND ", $where_clauses) : "";

    // 3. حساب إجمالي الإجازات المطابقة للفلاتر (الكارت الأول)
    $total_vacations_result = $db->select("SELECT COUNT(ev.id) AS total FROM employee_vacations ev {$filter_where}", $params);
    if (!empty($total_vacations_result)) {
        $total_vacations = $total_vacations_result[0]['total'] ?? 0;
    }

    // 4. حساب عدد الموظفين الفريدين المطابقين للفلاتر (الكارت الثاني)
    $unique_employees_result = $db->select("SELECT COUNT(DISTINCT ev.employee_id) AS total_employees FROM employee_vacations ev {$filter_where}", $params);
    if (!empty($unique_employees_result)) {
        $unique_employees_on_vacation = $unique_employees_result[0]['total_employees'] ?? 0;
    }

    // 5. حساب عدد أنواع الإجازات الفريدة المطابقة للفلاتر (الكارت الثالث)
    $unique_types_result = $db->select("SELECT COUNT(DISTINCT ev.vacation_type) AS total_types FROM employee_vacations ev {$filter_where}", $params);
    if (!empty($unique_types_result)) {
        $unique_vacation_types_count = $unique_types_result[0]['total_types'] ?? 0;
    }
    
    $total_pages = ceil($total_vacations / $limit);

    // 6. جلب الإجازات مع بيانات الموظف ومن أضافها (للجدول)
    $sql = "
        SELECT
            ev.*,
            e.full_name,
            e.position,
            u.full_name AS creator_name
        FROM
            employee_vacations ev
        JOIN
            employees e ON ev.employee_id = e.id
        LEFT JOIN
            users u ON ev.created_by = u.id
        {$filter_where}
        ORDER BY ev.start_date DESC
        LIMIT ? OFFSET ?
    ";
    $params_query = array_merge($params, [$limit, $offset]);
    $vacations = $db->select($sql, $params_query);

} catch (Exception $e) {
    error_log("Database error in view_vacations.php: " . $e->getMessage());
    $_SESSION['error_message'] = "حدث خطأ في قاعدة البيانات. يرجى المحاولة لاحقًا.";
}
?>

<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 htmlspecialchars($pageTitle); ?></h2>
                <p class="page-subtitle">قائمة بجميع إجازات الموظفين المسجلة.</p>
            </div>
            <div class="text-start">
                <a href="add_vacation.php" class="btn btn-success me-2">
                    <i class="fas fa-plus me-2"></i>إضافة إجازة جديدة
                </a>
            </div>
        </div>
    </div>

    <?php if (!empty($_SESSION['success_message'])): ?>
        <div class="alert alert-success mt-3"><?php echo htmlspecialchars($_SESSION['success_message']); ?></div>
        <?php unset($_SESSION['success_message']); ?>
    <?php endif; ?>

    <?php if (!empty($_SESSION['error_message'])): ?>
        <div class="alert alert-danger mt-3"><?php echo htmlspecialchars($_SESSION['error_message']); ?></div>
        <?php unset($_SESSION['error_message']); ?>
    <?php endif; ?>

    <div class="row mb-4">
        <?php 
            $filters_active = !empty($employee_filter_id) || !empty($vacation_type_filter) || !empty($start_date_filter) || !empty($end_date_filter);
            $card_subtitle = $filters_active ? "العدد بعد تطبيق جميع الفلاتر." : "الإجمالي المسجل في النظام.";
        ?>

        <div class="col-md-4 mb-3">
            <div class="card text-white bg-primary shadow-sm h-100">
                <div class="card-body">
                    <div class="d-flex justify-content-between align-items-center">
                        <div>
                            <h5 class="card-title mb-0">إجمالي سجلات الإجازات</h5>
                            <p class="card-text small"><?php echo $card_subtitle; ?></p>
                        </div>
                        <h2 class="display-4 mb-0"><?php echo $total_vacations; ?></h2>
                    </div>
                </div>
            </div>
        </div>

        <div class="col-md-4 mb-3">
            <div class="card text-white bg-success shadow-sm h-100">
                <div class="card-body">
                    <div class="d-flex justify-content-between align-items-center">
                        <div>
                            <h5 class="card-title mb-0">عدد الموظفين المجازين</h5>
                            <p class="card-text small">عدد الموظفين الفريدين في السجلات.</p>
                        </div>
                        <h2 class="display-4 mb-0"><?php echo $unique_employees_on_vacation; ?></h2>
                    </div>
                </div>
            </div>
        </div>

        <div class="col-md-4 mb-3">
            <div class="card text-white bg-warning shadow-sm h-100">
                <div class="card-body">
                    <div class="d-flex justify-content-between align-items-center">
                        <div>
                            <h5 class="card-title mb-0">عدد أنواع الإجازات المختلفة</h5>
                            <p class="card-text small">عدد الأنواع المستخدمة في السجلات.</p>
                        </div>
                        <h2 class="display-4 mb-0"><?php echo $unique_vacation_types_count; ?></h2>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="card mb-4 shadow-sm">
        <div class="card-header">
            <h5 class="card-title mb-0">سجل الإجازات</h5>
        </div>
        <div class="card-body">
            <form action="" method="GET" class="mb-4">
                <div class="row g-3">
                    <div class="col-md-3">
                        <label for="employee_filter_id" class="form-label">تصفية حسب الموظف</label>
                        <select id="employee_filter_id" name="employee_filter_id" class="form-select">
                            <option value="0">كل الموظفين</option>
                            <?php foreach ($employees_list as $emp): ?>
                                <option value="<?php echo htmlspecialchars($emp['id']); ?>" <?php echo ($employee_filter_id == $emp['id']) ? 'selected' : ''; ?>>
                                    <?php echo htmlspecialchars($emp['full_name'] ?? ''); ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </div>

                    <div class="col-md-3">
                        <label for="vacation_type_filter" class="form-label">تصفية حسب النوع</label>
                        <select id="vacation_type_filter" name="vacation_type_filter" class="form-select">
                            <option value="all">كل الأنواع</option>
                            <?php foreach ($vacation_types as $key => $label): ?>
                                <option value="<?php echo htmlspecialchars($key); ?>" <?php echo ($vacation_type_filter == $key) ? 'selected' : ''; ?>>
                                    <?php echo htmlspecialchars($label); ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </div>

                    <div class="col-md-3">
                        <label for="start_date_filter" class="form-label">من تاريخ</label>
                        <input type="date" id="start_date_filter" name="start_date_filter" class="form-control" value="<?php echo htmlspecialchars($start_date_filter ?? ''); ?>">
                    </div>
                    <div class="col-md-3">
                        <label for="end_date_filter" class="form-label">إلى تاريخ</label>
                        <input type="date" id="end_date_filter" name="end_date_filter" class="form-control" value="<?php echo htmlspecialchars($end_date_filter ?? ''); ?>">
                    </div>
                    <div class="col-12 text-end">
                        <button class="btn btn-primary" type="submit"><i class="fas fa-filter me-2"></i>تطبيق الفلاتر</button>
                        <a href="view_vacations.php" class="btn btn-outline-secondary"><i class="fas fa-times me-2"></i>مسح الفلاتر</a>
                    </div>
                </div>
            </form>

            <?php if (empty($vacations)): ?>
                <div class="alert alert-info text-center">لا توجد إجازات مسجلة حاليًا مطابقة للفلاتر.</div>
            <?php else: ?>
                <div class="table-responsive">
                    <table class="table table-hover table-bordered">
                        <thead class="table-light">
                            <tr>
                                <th>#</th>
                                <th>اسم الموظف</th>
                                <th>المنصب</th>
                                <th>نوع الإجازة</th>
                                <th>تاريخ البداية</th>
                                <th>تاريخ النهاية</th>
                                <th>الملاحظات</th>
                                <th>أضيف بواسطة</th>
                                <th>الإجراءات</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach ($vacations as $index => $vacation): ?>
                                <tr>
                                    <td><?php echo htmlspecialchars((($page - 1) * $limit) + $index + 1); ?></td>
                                    <td><?php echo htmlspecialchars($vacation['full_name'] ?? ''); ?></td>
                                    <td><?php echo htmlspecialchars($vacation['position'] ?? ''); ?></td>
                                    <td><?php echo htmlspecialchars($vacation['vacation_type'] ?? ''); ?></td>
                                    <td><?php echo htmlspecialchars($vacation['start_date'] ?? ''); ?></td>
                                    <td><?php echo htmlspecialchars($vacation['end_date'] ?? ''); ?></td>
                                    <td><?php echo htmlspecialchars($vacation['notes'] ?? ''); ?></td>
                                    <td><?php echo htmlspecialchars($vacation['creator_name'] ?? 'غير معروف'); ?></td>
                                    <td>
                                        <div class="btn-group btn-group-sm">
                                            <?php if (hasPermission('edit_vacation')): ?>
                                                <a href="edit_vacation.php?id=<?php echo htmlspecialchars($vacation['id']); ?>" class="btn btn-outline-warning" title="تعديل">
                                                    <i class="fas fa-edit"></i>
                                                </a>
                                            <?php endif; ?>
                                            <?php if (hasPermission('delete_vacation')): ?>
                                                <button type="button" class="btn btn-outline-danger" title="حذف" onclick="showDeleteModal(<?php echo htmlspecialchars($vacation['id']); ?>, '<?php echo htmlspecialchars(addslashes($vacation['full_name'] ?? '')); ?>')">
                                                    <i class="fas fa-trash"></i>
                                                </button>
                                            <?php endif; ?>
                                        </div>
                                    </td>
                                </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>

                <?php if ($total_pages > 1): ?>
                <nav aria-label="Page navigation">
                    <ul class="pagination justify-content-center mt-4">
                        <?php
                        // تحديث متغيرات الفلترة للتصفح
                        $filter_params = http_build_query([
                            'employee_filter_id' => $employee_filter_id,
                            'vacation_type_filter' => $vacation_type_filter, 
                            'start_date_filter' => $start_date_filter,
                            'end_date_filter' => $end_date_filter
                        ]);
                        ?>
                        <li class="page-item <?php echo ($page <= 1) ? 'disabled' : ''; ?>">
                            <a class="page-link" href="?page=<?php echo $page - 1; ?>&<?php echo $filter_params; ?>">السابق</a>
                        </li>
                        <?php for ($i = 1; $i <= $total_pages; $i++): ?>
                            <li class="page-item <?php echo ($page === $i) ? 'active' : ''; ?>">
                                <a class="page-link" href="?page=<?php echo $i; ?>&<?php echo $filter_params; ?>"><?php echo $i; ?></a>
                            </li>
                        <?php endfor; ?>
                        <li class="page-item <?php echo ($page >= $total_pages) ? 'disabled' : ''; ?>">
                            <a class="page-link" href="?page=<?php echo $page + 1; ?>&<?php echo $filter_params; ?>">التالي</a>
                        </li>
                    </ul>
                </nav>
                <?php endif; ?>
            <?php endif; ?>
        </div>
    </div>
</div>

<div class="modal fade" id="deleteConfirmationModal" tabindex="-1" aria-labelledby="deleteConfirmationModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="deleteConfirmationModalLabel">تأكيد الحذف</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        هل أنت متأكد من حذف إجازة الموظف <strong id="vacationEmployeeNameInModal"></strong>؟
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إلغاء</button>
        <button type="button" class="btn btn-danger" id="confirmDeleteButton">حذف</button>
      </div>
    </div>
  </div>
</div>

<script>
function showDeleteModal(id, employeeName) {
    document.getElementById('vacationEmployeeNameInModal').textContent = employeeName;
    document.getElementById('confirmDeleteButton').onclick = function() {
        window.location.href = `delete_vacation.php?id=${id}`;
    };
    if (typeof bootstrap !== 'undefined' && bootstrap.Modal) {
        var deleteModal = new bootstrap.Modal(document.getElementById('deleteConfirmationModal'));
        deleteModal.show();
    } else {
        if(confirm(`هل أنت متأكد من حذف إجازة الموظف ${employeeName}؟`)) {
             window.location.href = `delete_vacation.php?id=${id}`;
        }
    }
}
</script>

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