diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php
index 7c889cb..fe4a23a 100644
--- a/app/Console/Kernel.php
+++ b/app/Console/Kernel.php
@@ -2,6 +2,7 @@
namespace App\Console;
+use App\Jobs\AutoCloseOldTickets;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
@@ -23,6 +24,7 @@ class Kernel extends ConsoleKernel
*/
protected function schedule(Schedule $schedule)
{
+ $schedule->job(AutoCloseOldTickets::class)->dailyAt('08:00');
}
/**
diff --git a/app/Events/TicketStatusChanged.php b/app/Events/TicketStatusChanged.php
index 9e786d5..fb4c471 100644
--- a/app/Events/TicketStatusChanged.php
+++ b/app/Events/TicketStatusChanged.php
@@ -22,15 +22,19 @@ class TicketStatusChanged
public $status;
+ /** @var string */
+ public $message;
+
/**
* Create a new event instance.
*
* @return void
*/
- public function __construct(Ticket $ticket, $status, User $user = null)
+ public function __construct(Ticket $ticket, $status, User $user = null, string $message = null)
{
$this->ticket = $ticket;
$this->status = $status;
$this->user = $user;
+ $this->message = $message;
}
}
diff --git a/app/Jobs/AutoCloseOldTickets.php b/app/Jobs/AutoCloseOldTickets.php
new file mode 100644
index 0000000..1279d11
--- /dev/null
+++ b/app/Jobs/AutoCloseOldTickets.php
@@ -0,0 +1,37 @@
+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));
+ }
+ }
+}
diff --git a/app/Listeners/AddStatusMessages.php b/app/Listeners/AddStatusMessages.php
index e0bc59d..64f3377 100644
--- a/app/Listeners/AddStatusMessages.php
+++ b/app/Listeners/AddStatusMessages.php
@@ -17,7 +17,9 @@ class AddStatusMessages
{
$message = new Message();
$message->ticket_id = $event->ticket->id;
- if ($event->user) {
+ if ($event->message) {
+ $message->message = $event->message;
+ } elseif ($event->user) {
// phpcs:ignore Generic.Files.LineLength.TooLong
$message->message = "{$event->user->name} a modifié le statut en {$event->ticket->status->label}";
} else {