from django.core.management.base import BaseCommand
from config.models import Icongroup, Icon


class Command(BaseCommand):
    help = 'Supprime toutes les icônes et groupes d\'icônes de la base de données'

    def add_arguments(self, parser):
        parser.add_argument(
            '--force',
            action='store_true',
            help='Forcer la suppression sans confirmation',
        )

    def handle(self, *args, **options):
        if not options['force']:
            self.stdout.write(
                self.style.WARNING('⚠️  ATTENTION: Cette commande va supprimer TOUTES les icônes!')
            )
            confirm = input('Êtes-vous sûr ? Tapez "oui" pour confirmer: ')
            if confirm.lower() != 'oui':
                self.stdout.write('❌ Opération annulée.')
                return

        self.stdout.write('🗑️  Suppression des icônes...')
        
        # Compter les éléments avant suppression
        icon_count = Icon.objects.count()
        group_count = Icongroup.objects.count()
        
        # Supprimer les icônes non utilisées
        deleted_count = 0
        skipped_count = 0
        
        for icon in Icon.objects.all():
            try:
                # Vérifier si l'icône est utilisée
                if hasattr(icon, 'intro') and icon.intro.exists():
                    self.stdout.write(f'  ⚠️  Icône utilisée ignorée: {icon.group.libelle} {icon.libelle}')
                    skipped_count += 1
                    continue
                
                # Supprimer l'icône si elle n'est pas utilisée
                icon.delete()
                deleted_count += 1
                
            except Exception as e:
                self.stdout.write(f'  ❌ Erreur lors de la suppression de {icon}: {e}')
                skipped_count += 1
        
        self.stdout.write(f'  ➖ {deleted_count} icônes supprimées')
        if skipped_count > 0:
            self.stdout.write(f'  ⚠️  {skipped_count} icônes utilisées ignorées')
        
        # Supprimer les groupes d'icônes vides
        empty_groups = 0
        for group in Icongroup.objects.all():
            if not group.icongroup.exists():
                group.delete()
                empty_groups += 1
        
        self.stdout.write(f'  ➖ {empty_groups} groupes d\'icônes vides supprimés')
        
        if skipped_count > 0:
            self.stdout.write(
                self.style.WARNING(f'⚠️  {skipped_count} icônes utilisées ont été conservées!')
            )
        
        self.stdout.write(
            self.style.SUCCESS('✅ Suppression terminée!')
        )
