40 lines
1.2 KiB
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;
|
|
}
|
|
}
|