prepare("
SELECT m.*, u.email, u.full_name
FROM $table 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 s.name != 'closed'
");
$stmt->execute();
$due_tomorrow = $stmt->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'] . "
يرجى متابعة المهمة وإغلاقها في الوقت المحدد.
";
$res = MailService::sendMail($task['email'], $subject, $html);
if ($res['success']) {
echo "Sent 24h reminder to " . $task['email'] . " for task " . $task['ref_no'] . PHP_EOL;
}
}
}
// 2. Overdue tasks
$stmt = db()->prepare("
SELECT m.*, u.email, u.full_name
FROM $table 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 s.name != 'closed'
");
$stmt->execute();
$overdue = $stmt->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'] . "
يرجى معالجة هذه المهمة في أقرب وقت ممكن.
";
$res = MailService::sendMail($task['email'], $subject, $html);
if ($res['success']) {
echo "Sent overdue reminder to " . $task['email'] . " for task " . $task['ref_no'] . PHP_EOL;
}
}
}
}
echo "[" . date('Y-m-d H:i:s') . "] Reminder process finished." . PHP_EOL;