# apps/members/management/commands/update_membership_numbers.py
from django.core.management.base import BaseCommand
from apps.members.models import Member


class Command(BaseCommand):
    help = "Génère des numéros d'adhérent pour les membres existants qui n'en ont pas"

    def handle(self, *args, **options):
        self.stdout.write(
            self.style.SUCCESS("Début de la mise à jour des numéros d'adhérent...")
        )

        # Récupérer tous les membres sans numéro d'adhérent
        members_without_number = Member.objects.filter(membership_number__isnull=True)
        count = members_without_number.count()

        if count == 0:
            self.stdout.write(
                self.style.SUCCESS("Tous les membres ont déjà un numéro d'adhérent.")
            )
            return

        self.stdout.write(f"Trouvé {count} membre(s) sans numéro d'adhérent.")

        # Mise à jour en appelant save() pour déclencher la génération automatique
        updated_count = 0
        for member in members_without_number:
            member.save()  # Déclenche la génération automatique du numéro
            updated_count += 1
            self.stdout.write(
                f"Membre {member.user.email} -> {member.membership_number}"
            )

        self.stdout.write(
            self.style.SUCCESS(
                f"✅ Mise à jour terminée: {updated_count} numéros d'adhérent générés."
            )
        )
