from django.core.management.base import BaseCommand
# Kegiatan import removed - use event app instead

class Command(BaseCommand):
    help = 'Check and fix Kegiatan slugs'

    def handle(self, *args, **options):
        # Check for Kegiatan without slugs
        kegiatan_without_slug = Kegiatan.objects.filter(slug__isnull=True)
        kegiatan_empty_slug = Kegiatan.objects.filter(slug='')
        
        self.stdout.write(f'Kegiatan without slug: {kegiatan_without_slug.count()}')
        self.stdout.write(f'Kegiatan with empty slug: {kegiatan_empty_slug.count()}')
        
        # Show all kegiatan with their slugs
        self.stdout.write('\nAll Kegiatan slugs:')
        for k in Kegiatan.objects.all()[:10]:
            self.stdout.write(f'- {k.judul}: "{k.slug}" (ID: {k.id})')
        
        # Check for duplicate slugs
        from django.db.models import Count
        duplicate_slugs = Kegiatan.objects.values('slug').annotate(count=Count('slug')).filter(count__gt=1)
        if duplicate_slugs:
            self.stdout.write(f'\nDuplicate slugs found: {duplicate_slugs.count()}')
            for dup in duplicate_slugs:
                self.stdout.write(f'  - "{dup["slug"]}" appears {dup["count"]} times')
        else:
            self.stdout.write('\nNo duplicate slugs found.')
        
        # Check for invalid slugs (containing spaces or special chars)
        invalid_slugs = Kegiatan.objects.exclude(slug__regex=r'^[a-zA-Z0-9_-]+$').exclude(slug__isnull=True).exclude(slug='')
        if invalid_slugs:
            self.stdout.write(f'\nInvalid slugs found: {invalid_slugs.count()}')
            for k in invalid_slugs:
                self.stdout.write(f'  - {k.judul}: "{k.slug}"')
        else:
            self.stdout.write('\nAll slugs are valid.')
