query(" SELECT m.*, u.email, u.full_name FROM mailbox m JOIN users u ON m.assigned_to = u.id WHERE m.due_date = DATE_ADD(CURDATE(), INTERVAL 1 DAY) AND m.status != 'closed' ")->fetchAll(); foreach ($due_tomorrow as $task) { if (!empty($task['email'])) { $subject = "تذكير: موعد نهائي لمهمة غداً - " . $task['ref_no']; $html = "
عزيزي " . htmlspecialchars($task['full_name']) . "،
هذا تذكير بأن المهمة التالية مستحقة غداً:
يرجى متابعة المهمة وإغلاقها في الوقت المحدد.
"; $res = MailService::sendMail($task['email'], $subject, $html); if ($res['success']) { echo "Sent 24h reminder to " . $task['email'] . " for task " . $task['ref_no'] . PHP_EOL; } else { echo "Failed to send 24h reminder to " . $task['email'] . ": " . ($res['error'] ?? 'Unknown error') . PHP_EOL; } } } // 2. Overdue tasks (due date passed and still not closed) - Only send once a week or daily? // For now, let's send daily for overdue tasks to ensure they are handled. $overdue = db()->query(" SELECT m.*, u.email, u.full_name FROM mailbox m JOIN users u ON m.assigned_to = u.id WHERE m.due_date < CURDATE() AND m.status != 'closed' ")->fetchAll(); foreach ($overdue as $task) { if (!empty($task['email'])) { $subject = "تنبيه: مهمة متأخرة! - " . $task['ref_no']; $html = "عزيزي " . htmlspecialchars($task['full_name']) . "،
هذه المهمة قد تجاوزت الموعد النهائي المحدد:
يرجى معالجة هذه المهمة في أقرب وقت ممكن.
"; $res = MailService::sendMail($task['email'], $subject, $html); if ($res['success']) { echo "Sent overdue reminder to " . $task['email'] . " for task " . $task['ref_no'] . PHP_EOL; } else { echo "Failed to send overdue reminder to " . $task['email'] . ": " . ($res['error'] ?? 'Unknown error') . PHP_EOL; } } } echo "[" . date('Y-m-d H:i:s') . "] Reminder process finished." . PHP_EOL;