from django.core.management.base import BaseCommand
from django.utils import timezone
from django.contrib.auth import get_user_model
from User.models import MembershipPeriod

User = get_user_model()

class Command(BaseCommand):
    help = 'Désactive les comptes utilisateurs dont la période d\'adhésion est expirée.'

    def handle(self, *args, **options):
        today = timezone.now().date()
        self.stdout.write(f"Vérification des adhésions expirées au {today}...")

        # 1. Trouver les périodes expirées qui n'ont pas encore été traitées ou simplement vérifier tous les utilisateurs
        # Approche : On cherche les utilisateurs actifs dont la période d'adhésion est passée
        expired_users = User.objects.filter(
            is_active=True,
            is_staff=False,
            is_superuser=False,
            membership_period__end_date__lt=today
        )

        count = expired_users.count()
        
        if count == 0:
            self.stdout.write(self.style.SUCCESS("Aucun compte à désactiver."))
            return

        # Désactivation
        # On peut aussi envoyer un email ici si nécessaire
        expired_users.update(is_active=False)

        self.stdout.write(self.style.SUCCESS(f"✅ {count} comptes ont été désactivés car leur adhésion a expiré."))
