prepare("SELECT COUNT(*) FROM mailbox WHERE assigned_to = ?"); $stmt->execute([$user_id]); $my_total_assignments = $stmt->fetchColumn(); $stmt = db()->prepare("SELECT COUNT(*) FROM mailbox WHERE assigned_to = ? AND status_id IN (SELECT id FROM mailbox_statuses WHERE name != 'closed')"); $stmt->execute([$user_id]); $my_pending_tasks = $stmt->fetchColumn(); // Global Stats (for Clerks or if we want to show them) $total_inbound = canView('inbound') ? db()->query("SELECT COUNT(*) FROM mailbox WHERE type = 'inbound'")->fetchColumn() : 0; $total_outbound = canView('outbound') ? db()->query("SELECT COUNT(*) FROM mailbox WHERE type = 'outbound'")->fetchColumn() : 0; // Fetch statuses for badge and count $statuses_data = db()->query("SELECT * FROM mailbox_statuses")->fetchAll(PDO::FETCH_UNIQUE); // My Assignments $my_assignments = []; $assignment_types = []; if (canView('inbound')) $assignment_types[] = "'inbound'"; if (canView('outbound')) $assignment_types[] = "'outbound'"; if (canView('internal')) $assignment_types[] = "'internal'"; if (!empty($assignment_types)) { $types_sql = implode(',', $assignment_types); $my_assignments = db()->prepare("SELECT m.*, s.name as status_name, s.color as status_color FROM mailbox m LEFT JOIN mailbox_statuses s ON m.status_id = s.id WHERE m.assigned_to = ? AND m.type IN ($types_sql) ORDER BY m.created_at DESC LIMIT 10"); $my_assignments->execute([$user_id]); $my_assignments = $my_assignments->fetchAll(); } // Recent Activity $recent_activity = []; $recent_types = []; if (canView('inbound')) $recent_types[] = "'inbound'"; if (canView('outbound')) $recent_types[] = "'outbound'"; if (canView('internal')) $recent_types[] = "'internal'"; if (!empty($recent_types)) { $types_sql = implode(',', $recent_types); $recent_query = "SELECT m.*, s.name as status_name, s.color as status_color, u.full_name as assigned_to_name FROM mailbox m LEFT JOIN mailbox_statuses s ON m.status_id = s.id LEFT JOIN users u ON m.assigned_to = u.id WHERE m.type IN ($types_sql)"; if ($is_admin || $is_clerk) { // Admins and Clerks see all recent activity EXCEPT internal mail they are not part of $recent_stmt = db()->prepare($recent_query . " AND (m.type != 'internal' OR m.assigned_to = ? OR m.created_by = ?) ORDER BY m.updated_at DESC LIMIT 10"); $recent_stmt->execute([$user_id, $user_id]); } else { // Staff see only theirs $recent_stmt = db()->prepare($recent_query . " AND (m.assigned_to = ? OR m.created_by = ?) ORDER BY m.updated_at DESC LIMIT 10"); $recent_stmt->execute([$user_id, $user_id]); } $recent_activity = $recent_stmt->fetchAll(); } 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) . ''; } ?>

مرحباً، !

أنت مسجل كـ . يمكنك متابعة كافة المراسلات وإدارة المهام. تابع مهامك المسندة إليك هنا.

Profile
مهامي

قيد التنفيذ

إجمالي الوارد

إجمالي الصادر

وارد من قبلي
prepare("SELECT COUNT(*) FROM mailbox WHERE created_by = ? AND type = 'inbound'"); $stmt->execute([$user_id]); $my_in_count = $stmt->fetchColumn(); ?>

صادر من قبلي
prepare("SELECT COUNT(*) FROM mailbox WHERE created_by = ? AND type = 'outbound'"); $stmt->execute([$user_id]); $my_out_count = $stmt->fetchColumn(); ?>

مهامي المسندة
رقم القيد الموضوع الموعد النهائي الحالة الإجراء
- عرض
أنت على اطلاع بكافة مهامك! لا توجد مهام معلقة.
لا يوجد نشاط مسجل