ticket_id)) { $ticket->ticket_id = 'TICKET-'.strtoupper(Str::random(6)); } }); } public function user() { return $this->belongsTo(User::class); } public function responses() { return $this->hasMany(TicketResponse::class); } protected $casts = [ 'created_at' => 'datetime', // Ensures created_at is a Carbon instance 'updated_at' => 'datetime', // Ensures updated_at is a Carbon instance 'last_response_at' => 'datetime', // Cast last_response_at to Carbon instance ]; public static function autoClose(): bool { try { $tickets = Ticket::query()->where('status', 'pending') ->where('last_response_at', '<', now()->subDays(3)) ->get(); if (count($tickets) > 0) { foreach ($tickets as $ticket) { $ticket->status = 'closed'; $ticket->save(); TicketResponse::query()->create([ 'ticket_id' => $ticket->id, 'user_id' => 1, 'response' => 'This ticket has been auto-closed due to inactivity.', ]); } } return true; } catch (Exception) { return false; } } }