query("SELECT COUNT(*) FROM inbound_mail")->fetchColumn() : 0; $total_outbound = canView('outbound') ? db()->query("SELECT COUNT(*) FROM outbound_mail")->fetchColumn() : 0; // Fetch statuses for badge and count $statuses_data = db()->query("SELECT * FROM mailbox_statuses")->fetchAll(PDO::FETCH_UNIQUE); $in_progress_id = null; foreach ($statuses_data as $id => $s) { if ($s['name'] == 'in_progress') { $in_progress_id = $id; break; } } $in_progress_count = 0; if ($in_progress_id) { if (canView('inbound')) { $stmt = db()->prepare("SELECT COUNT(*) FROM inbound_mail WHERE status_id = ?"); $stmt->execute([$in_progress_id]); $in_progress_count += $stmt->fetchColumn(); } if (canView('outbound')) { $stmt = db()->prepare("SELECT COUNT(*) FROM outbound_mail WHERE status_id = ?"); $stmt->execute([$in_progress_id]); $in_progress_count += $stmt->fetchColumn(); } } // My Assignments - Combine from all tables $my_assignments = []; $queries = []; if (canView('inbound')) { $queries[] = "SELECT id, 'inbound' as type, ref_no, subject, due_date, status_id, created_at FROM inbound_mail WHERE assigned_to = $user_id"; } if (canView('outbound')) { $queries[] = "SELECT id, 'outbound' as type, ref_no, subject, due_date, status_id, created_at FROM outbound_mail WHERE assigned_to = $user_id"; } if (canView('internal')) { $queries[] = "SELECT id, 'internal' as type, ref_no, subject, due_date, status_id, created_at FROM internal_mail WHERE assigned_to = $user_id"; } if (!empty($queries)) { $full_query = "(" . implode(") UNION ALL (", $queries) . ") ORDER BY created_at DESC LIMIT 5"; $stmt = db()->query($full_query); $my_assignments = $stmt->fetchAll(); // Add status info to assignments foreach ($my_assignments as &$m) { $m['status_name'] = $statuses_data[$m['status_id']]['name'] ?? 'unknown'; $m['status_color'] = $statuses_data[$m['status_id']]['color'] ?? '#6c757d'; } } // Recent Mail (Global for Admin/Clerk, otherwise limited) $recent_mail = []; $recent_queries = []; if (canView('inbound')) { $recent_queries[] = "SELECT m.id, 'inbound' as type, m.ref_no, m.subject, m.due_date, m.sender, m.recipient, m.status_id, m.assigned_to, m.created_by, m.date_registered, m.created_at, u.full_name as assigned_to_name FROM inbound_mail m LEFT JOIN users u ON m.assigned_to = u.id"; } if (canView('outbound')) { $recent_queries[] = "SELECT m.id, 'outbound' as type, m.ref_no, m.subject, m.due_date, m.sender, m.recipient, m.status_id, m.assigned_to, m.created_by, m.date_registered, m.created_at, u.full_name as assigned_to_name FROM outbound_mail m LEFT JOIN users u ON m.assigned_to = u.id"; } if (!empty($recent_queries)) { $full_recent_query = "(" . implode(") UNION ALL (", $recent_queries) . ")"; if (!$is_admin && ($_SESSION['user_role'] ?? '') !== 'clerk') { $full_recent_query = "SELECT * FROM ($full_recent_query) AS combined WHERE assigned_to = $user_id OR created_by = $user_id ORDER BY created_at DESC LIMIT 10"; } else { $full_recent_query = "SELECT * FROM ($full_recent_query) AS combined ORDER BY created_at DESC LIMIT 10"; } $stmt = db()->query($full_recent_query); $recent_mail = $stmt->fetchAll(); // Add status info foreach ($recent_mail as &$m) { $m['status_name'] = $statuses_data[$m['status_id']]['name'] ?? 'unknown'; $m['status_color'] = $statuses_data[$m['status_id']]['color'] ?? '#6c757d'; } } function getStatusBadge($mail) { $status_name = $mail['status_name'] ?? 'غير معروف'; $status_color = $mail['status_color'] ?? '#6c757d'; $display_name = $status_name; if ($status_name == 'received') $display_name = 'تم الاستلام'; if ($status_name == 'in_progress') $display_name = 'قيد المعالجة'; if ($status_name == 'closed') $display_name = 'مكتمل'; return '' . htmlspecialchars($display_name) . ''; } ?>

لوحة التحكم الإدارية

query("SELECT COUNT(*) FROM inbound_mail WHERE due_date < CURDATE() AND status_id IN (SELECT id FROM mailbox_statuses WHERE name != 'closed')")->fetchColumn(); $overdue_count += db()->query("SELECT COUNT(*) FROM outbound_mail WHERE due_date < CURDATE() AND status_id IN (SELECT id FROM mailbox_statuses WHERE name != 'closed')")->fetchColumn(); if ($overdue_count > 0): ?>
هناك مهام متأخرة تتطلب انتباهك!
عرض التقرير
البريد الوارد

البريد الصادر

قيد المعالجة

المستخدمين

query("SELECT COUNT(*) FROM users")->fetchColumn() ?>

مهامي الحالية
رقم القيد الموضوع الموعد النهائي - الحالة
رقم القيد النوع الموضوع الموعد النهائي المرسل/المستلم المسؤول الحالة التاريخ
وارد صادر - غير معين