Paillasse/portail/app/Console/Commands/ExpirerSessionsLab.php

32 lines
908 B
PHP
Raw Normal View History

<?php
namespace App\Console\Commands;
use App\Jobs\SupprimerStackLab;
use App\Models\LabSession;
use Illuminate\Console\Command;
/**
* Expiration automatique des sessions de lab (étape 10). Planifiée dans
* routes/console.php, lancée chaque minute par le cron système (Ansible).
*/
class ExpirerSessionsLab extends Command
{
protected $signature = 'labs:expirer-sessions';
protected $description = "Dispatche SupprimerStackLab pour les sessions de lab dont l'expiration est passée";
public function handle(): void
{
$sessions = LabSession::whereIn('etat', [LabSession::ADMIS, LabSession::ACTIF])
->where('expire_a', '<', now())
->get();
foreach ($sessions as $session) {
SupprimerStackLab::dispatch($session);
}
$this->info("{$sessions->count()} session(s) de lab expirée(s), suppression lancée.");
}
}