ldc-supportweb/app/Jobs/AutoCloseOldTickets.php
Jérémy Munsch 97f77f1ae0
Ticket 370
2021-09-28 14:53:43 +02:00

37 lines
1.2 KiB
PHP

<?php
namespace App\Jobs;
use App\Enums\TicketStatus;
use App\Events\NotifySubscriptions;
use App\Events\TicketStatusChanged;
use App\Models\Ticket;
use Illuminate\Support\Carbon;
class AutoCloseOldTickets
{
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$message = 'En l\'abscence d\'activitée depuis 15 jours ce ticket est automatiquement clos et archivé.';
$tickets = Ticket::where('status', TicketStatus::production())
->orWhere('status', TicketStatus::processed())
->where('updated_at', '<', Carbon::now()->subDays(15))
->whereDoesntHave('messages', function ($q) {
$q->where('updated_at', '<', Carbon::now()->subDays(15));
})->get();
foreach ($tickets as $ticket) {
$oldStatus = $ticket->status;
$ticket->status = TicketStatus::archived();
$ticket->saveQuietly();
if (!$ticket->subscriptions->contains($ticket->user)) {
event(new TicketStatusChanged($ticket, $oldStatus, null, $message));
}
event(new NotifySubscriptions($ticket, $message));
}
}
}