feat(Handle Expired Unique Member)

This commit is contained in:
2026-01-19 10:27:13 +01:00
parent 363bb2e635
commit 08d1944491

View File

@@ -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) {