Вам понадобится какой-то идентификатор времени в вашем билете, который может быть в форме даты или отметки времени. Если вы используете схемы Laravel по умолчанию, то у вас уже будет подобное поле с именем created_at
.
Тогда вам придется запланировать задачу. Например, вы можете создать задачу, которая будет запускаться каждый час и проверять, не просрочен ли билет, а затем отправлять сообщения по электронной почте доступным агентам или уведомлять их в вашем приложении.
Как отмечает @ArtisticPhoenix, вам понадобится какое-то отслеживание того, было ли уже отправлено уведомление, или оно будет уведомлять агентов при каждом запуске запланированной задачи.
Пример кода - (не проверено)
Этот код входит в функцию schedule
в App\Console\Kernel
protected function schedule(Schedule $schedule)
{
$schedule->call(function () {
$tickets = Ticketit::where('created_at', '<', Carbon::now()->subDays(7))->where('is_notified', false)->get();
foreach ($tickets as $ticket) {
//send mail here
}
})->hourly();
}
Вы можете улучшить этот код, добавив задание в очереди