Files
RelaisSMS/app/Console/Commands/PruneSmsHistoryCommand.php

40 lines
1.2 KiB
PHP

<?php
namespace App\Console\Commands;
use App\Models\SmsCampaign;
use Illuminate\Console\Command;
class PruneSmsHistoryCommand extends Command
{
protected $signature = 'sms-campaigns:prune-history {--dry-run : Compte les campagnes expirees sans les supprimer.}';
protected $description = 'Supprime les campagnes SMS plus anciennes que la duree de retention configuree.';
public function handle(): int
{
$retentionYears = (int) config('relais_sms.default_settings.history_retention_years', 3);
if ($retentionYears < 1) {
$this->error('La retention doit etre superieure ou egale a 1 an.');
return self::FAILURE;
}
$expiresBefore = now()->subYears($retentionYears);
$query = SmsCampaign::query()->where('created_at', '<', $expiresBefore);
$count = $query->count();
if ($this->option('dry-run')) {
$this->line($count.' campagne(s) SMS expiree(s) avant '.$expiresBefore->format('Y-m-d H:i:s').'.');
return self::SUCCESS;
}
$query->delete();
$this->line($count.' campagne(s) SMS supprimee(s).');
return self::SUCCESS;
}
}