diff --git a/app/Console/Commands/HandleExpiredMembersDolibarr.php b/app/Console/Commands/HandleExpiredMembersDolibarr.php index 9fa8f0a..5a7fdd5 100644 --- a/app/Console/Commands/HandleExpiredMembersDolibarr.php +++ b/app/Console/Commands/HandleExpiredMembersDolibarr.php @@ -12,8 +12,9 @@ use Symfony\Component\Console\Command\Command as CommandAlias; class HandleExpiredMembersDolibarr extends Command { - protected $signature = 'members:cleanup-expired {--dry-run}'; - protected $description = 'Résilie les adhérents expirés et désactive leurs services'; + protected $signature = 'members:cleanup-expired + {email? : Adresse email d\'un adhérent à traiter uniquement} + {--dry-run}'; public function __construct( protected DolibarrService $dolibarr, @@ -29,6 +30,7 @@ class HandleExpiredMembersDolibarr extends Command public function handle(): int { $dryRun = $this->option('dry-run'); + $emailFilter = $this->argument('email'); $this->info( $dryRun @@ -36,6 +38,10 @@ class HandleExpiredMembersDolibarr extends Command : 'Mode réel activé' ); + if ($emailFilter) { + $this->info("Mode utilisateur unique : {$emailFilter}"); + } + $this->info('Récupération des adhérents Dolibarr'); $members = collect($this->dolibarr->getAllMembers()); @@ -53,6 +59,19 @@ class HandleExpiredMembersDolibarr extends Command return \Carbon\Carbon::parse($member['datefin'])->lt($today); }); + if ($emailFilter) { + $expiredMembers = $expiredMembers->filter(function ($member) use ($emailFilter) { + $email = $this->extractRetzienEmail($member['email'] ?? null); + return $email === $emailFilter; + }); + + if ($expiredMembers->isEmpty()) { + $this->warn("Aucun adhérent expiré trouvé pour {$emailFilter}"); + return CommandAlias::SUCCESS; + } + } + + $this->info("{$expiredMembers->count()} adhérent(s) expiré(s)"); foreach ($expiredMembers as $member) {