diff --git a/install.php b/install.php.bak similarity index 100% rename from install.php rename to install.php.bak diff --git a/overdue_report.php b/overdue_report.php index d5de9a9..f36fbc0 100644 --- a/overdue_report.php +++ b/overdue_report.php @@ -9,22 +9,23 @@ $type_filter = $_GET['type'] ?? ''; $user_filter = $_GET['user_id'] ?? ''; $params = []; -$where = ["due_date < CURDATE()", "status != 'closed'", "type != 'internal'"]; +$where = ["m.due_date < CURDATE()", "s.name != 'closed'", "m.type != 'internal'"]; if ($type_filter) { - $where[] = "type = ?"; + $where[] = "m.type = ?"; $params[] = $type_filter; } if ($user_filter) { - $where[] = "assigned_to = ?"; + $where[] = "m.assigned_to = ?"; $params[] = $user_filter; } $where_clause = implode(" AND ", $where); -$sql = "SELECT m.*, u.full_name as assigned_name +$sql = "SELECT m.*, u.full_name as assigned_name, s.name as status_name, s.color as status_color FROM mailbox m LEFT JOIN users u ON m.assigned_to = u.id + LEFT JOIN mailbox_statuses s ON m.status_id = s.id WHERE $where_clause ORDER BY m.due_date ASC"; @@ -34,6 +35,19 @@ $overdue_items = $stmt->fetchAll(); // Fetch all users for filter $users = db()->query("SELECT id, full_name FROM users ORDER BY full_name")->fetchAll(); + +function getStatusBadgeForReport($item) { + $status_name = $item['status_name'] ?? 'غير معروف'; + $status_color = $item['status_color'] ?? '#6c757d'; + + // Translation for default statuses + $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) . ''; +} ?>
@@ -75,13 +89,14 @@ $users = db()->query("SELECT id, full_name FROM users ORDER BY full_name")->fetc
- +
+ @@ -90,7 +105,7 @@ $users = db()->query("SELECT id, full_name FROM users ORDER BY full_name")->fetc - + query("SELECT id, full_name FROM users ORDER BY full_name")->fetc $diff = $today->diff($due_date)->format("%a"); ?> - + +
رقم المرجع النوع الموضوع الموظف المسؤولالحالة تاريخ الاستحقاق الأيام المتأخرة الإجراءات
لا توجد مهام متأخرة حالياً.لا توجد مهام متأخرة حالياً.
@@ -107,6 +122,7 @@ $users = db()->query("SELECT id, full_name FROM users ORDER BY full_name")->fetc يوم @@ -123,4 +139,4 @@ $users = db()->query("SELECT id, full_name FROM users ORDER BY full_name")->fetc - + \ No newline at end of file diff --git a/scripts/send_reminders.php b/scripts/send_reminders.php index 8e78f39..a1a9ff6 100644 --- a/scripts/send_reminders.php +++ b/scripts/send_reminders.php @@ -12,23 +12,26 @@ $due_tomorrow = db()->query(" SELECT m.*, u.email, u.full_name FROM mailbox m JOIN users u ON m.assigned_to = u.id + JOIN mailbox_statuses s ON m.status_id = s.id WHERE m.due_date = DATE_ADD(CURDATE(), INTERVAL 1 DAY) - AND m.status != 'closed' + AND s.name != 'closed' ")->fetchAll(); foreach ($due_tomorrow as $task) { if (!empty($task['email'])) { $subject = "تذكير: موعد نهائي لمهمة غداً - " . $task['ref_no']; $html = " -

تذكير بموعد نهائي

-

عزيزي " . htmlspecialchars($task['full_name']) . "،

-

هذا تذكير بأن المهمة التالية مستحقة غداً:

-
    -
  • رقم المرجع: " . htmlspecialchars($task['ref_no']) . "
  • -
  • الموضوع: " . htmlspecialchars($task['subject']) . "
  • -
  • تاريخ الاستحقاق: " . $task['due_date'] . "
  • -
-

يرجى متابعة المهمة وإغلاقها في الوقت المحدد.

+
+

تذكير بموعد نهائي

+

عزيزي " . htmlspecialchars($task['full_name']) . "،

+

هذا تذكير بأن المهمة التالية مستحقة غداً:

+
    +
  • رقم المرجع: " . htmlspecialchars($task['ref_no']) . "
  • +
  • الموضوع: " . htmlspecialchars($task['subject']) . "
  • +
  • تاريخ الاستحقاق: " . $task['due_date'] . "
  • +
+

يرجى متابعة المهمة وإغلاقها في الوقت المحدد.

+
"; $res = MailService::sendMail($task['email'], $subject, $html); if ($res['success']) { @@ -45,23 +48,26 @@ $overdue = db()->query(" SELECT m.*, u.email, u.full_name FROM mailbox m JOIN users u ON m.assigned_to = u.id + JOIN mailbox_statuses s ON m.status_id = s.id WHERE m.due_date < CURDATE() - AND m.status != 'closed' + AND s.name != 'closed' ")->fetchAll(); foreach ($overdue as $task) { if (!empty($task['email'])) { $subject = "تنبيه: مهمة متأخرة! - " . $task['ref_no']; $html = " -

تنبيه: مهمة متأخرة

-

عزيزي " . htmlspecialchars($task['full_name']) . "،

-

هذه المهمة قد تجاوزت الموعد النهائي المحدد:

-
    -
  • رقم المرجع: " . htmlspecialchars($task['ref_no']) . "
  • -
  • الموضوع: " . htmlspecialchars($task['subject']) . "
  • -
  • تاريخ الاستحقاق: " . $task['due_date'] . "
  • -
-

يرجى معالجة هذه المهمة في أقرب وقت ممكن.

+
+

تنبيه: مهمة متأخرة

+

عزيزي " . htmlspecialchars($task['full_name']) . "،

+

هذه المهمة قد تجاوزت الموعد النهائي المحدد:

+
    +
  • رقم المرجع: " . htmlspecialchars($task['ref_no']) . "
  • +
  • الموضوع: " . htmlspecialchars($task['subject']) . "
  • +
  • تاريخ الاستحقاق: " . $task['due_date'] . "
  • +
+

يرجى معالجة هذه المهمة في أقرب وقت ممكن.

+
"; $res = MailService::sendMail($task['email'], $subject, $html); if ($res['success']) { @@ -72,4 +78,4 @@ foreach ($overdue as $task) { } } -echo "[" . date('Y-m-d H:i:s') . "] Reminder process finished." . PHP_EOL; +echo "[" . date('Y-m-d H:i:s') . "] Reminder process finished." . PHP_EOL; \ No newline at end of file