32 lines
908 B
PHP
32 lines
908 B
PHP
|
|
<?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.");
|
||
|
|
}
|
||
|
|
}
|