يرجى تسجيل الدخول."; require_once 'includes/footer.php'; exit; } $user_id = $_SESSION['user_id']; $error = ''; $success = ''; if (isset($_SESSION["success"])) { $success = $_SESSION["success"]; unset($_SESSION["success"]); } // Check if current user is linked to an employee $stmt = db()->prepare("SELECT id, first_name, last_name, department_id FROM hr_employees WHERE user_id = ? AND status = 'active'"); $stmt->execute([$user_id]); $employee = $stmt->fetch(); if (!$employee) { echo "
"; echo "
"; echo "

لم يتم العثور على ملف موظف مرتبط بحسابك

"; echo "

يرجى التواصل مع قسم الموارد البشرية لربط حسابك بملف الموظف الخاص بك لتتمكن من تقديم طلبات الإجازات.

"; echo "
"; require_once 'includes/footer.php'; exit; } $emp_id = $employee['id']; // Handle Form Submissions if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['request_leave'])) { $type = $_POST['leave_type']; $start = $_POST['start_date']; $end = $_POST['end_date']; $reason = trim($_POST['reason']); $start_dt = new DateTime($start); $end_dt = new DateTime($end); $days = $end_dt->diff($start_dt)->days + 1; if ($days <= 0) { $error = "تاريخ النهاية يجب أن يكون بعد أو نفس تاريخ البداية."; } else { try { $stmt = db()->prepare("INSERT INTO hr_leaves (employee_id, leave_type, start_date, end_date, days_count, reason, status) VALUES (?, ?, ?, ?, ?, ?, 'pending')"); $stmt->execute([$emp_id, $type, $start, $end, $days, $reason]); $_SESSION["success"] = "تم تقديم طلب الإجازة بنجاح، بانتظار الاعتماد."; header("Location: my_leaves.php"); exit; } catch (PDOException $e) { $error = "حدث خطأ أثناء تقديم الطلب: " . $e->getMessage(); } } } } // Pagination $page = isset($_GET['page']) ? (int)$_GET['page'] : 1; if ($page < 1) $page = 1; $limit = 10; $offset = ($page - 1) * $limit; // Fetch My Leaves $countStmt = db()->prepare("SELECT COUNT(*) FROM hr_leaves WHERE employee_id = ?"); $countStmt->execute([$emp_id]); $totalFiltered = $countStmt->fetchColumn(); $sql = "SELECT l.*, u.full_name as approver_name FROM hr_leaves l LEFT JOIN users u ON l.approved_by = u.id WHERE l.employee_id = ? ORDER BY l.created_at DESC LIMIT $limit OFFSET $offset"; $stmt = db()->prepare($sql); $stmt->execute([$emp_id]); $requests = $stmt->fetchAll(); ?>

إجازاتي

نوع الإجازة الفترة المدة السبب تاريخ التقديم الحالة المعتمد
لا توجد طلبات إجازات سابقة.
'سنوية', 'sick' => 'مرضية', 'unpaid' => 'بدون راتب', 'maternity' => 'أمومة', 'emergency' => 'طارئة', 'other' => 'أخرى' ]; echo $type_map[$req['leave_type']] ?? $req['leave_type']; ?> من
إلى
يوم 'success', 'rejected' => 'danger', default => 'warning' }; $status_txt = match($req['status']) { 'approved' => 'مقبولة', 'rejected' => 'مرفوضة', default => 'معلقة' }; ?>