from django.core.management.base import BaseCommand
from django.utils import timezone
from datetime import datetime, timedelta
from news.models import Announcement, NotificationSettings
from core.models import CustomUser

class Command(BaseCommand):
    help = 'Create simple dummy announcements for Desa Pulosarok'

    def handle(self, *args, **options):
        self.stdout.write('Creating simple dummy announcements...')
        
        # Get or create admin user
        admin_user, created = CustomUser.objects.get_or_create(
            username='admin',
            defaults={
                'email': 'admin@pulosarok.desa.id',
                'first_name': 'Administrator',
                'last_name': 'Desa Pulo Sarok',
                'is_staff': True,
                'is_superuser': True
            }
        )
        
        if created:
            admin_user.set_password('admin123')
            admin_user.save()
            self.stdout.write(f'Created admin user: {admin_user.username}')

        # Simple announcement data
        announcements_data = [
            {
                'title': 'Pemberitahuan Penting: Pemadaman Listrik',
                'content': 'Diberitahukan kepada seluruh warga bahwa akan ada pemadaman listrik pada hari ini pukul 14.00 - 18.00. Mohon untuk mempersiapkan diri dan menyimpan makanan di kulkas. Untuk informasi lebih lanjut, hubungi nomor 081234567890.',
                'announcement_type': 'urgent',
                'priority': 'high',
                'target_audience': 'Semua Warga',
                'location': 'Seluruh Wilayah Desa',
                'contact_person': 'Budi Santoso',
                'contact_phone': '081234567890',
                'is_pinned': True
            },
            {
                'title': 'Jadwal Posyandu Bulan Ini',
                'content': 'Posyandu akan dilaksanakan pada tanggal 15 setiap bulan di Balai Desa. Mohon untuk membawa buku KIA dan kartu keluarga. Kegiatan meliputi pemeriksaan kesehatan balita, imunisasi, dan konsultasi gizi.',
                'announcement_type': 'schedule',
                'priority': 'normal',
                'target_audience': 'Ibu dan Balita',
                'location': 'Balai Desa',
                'contact_person': 'Siti Nurhaliza',
                'contact_phone': '081234567891',
                'is_pinned': False
            },
            {
                'title': 'Acara Gotong Royong Bersih Desa',
                'content': 'Dalam rangka memperingati Hari Kemerdekaan RI, akan diadakan kegiatan gotong royong bersih desa. Semua warga diharapkan berpartisipasi. Akan ada doorprize untuk peserta yang aktif!',
                'announcement_type': 'event',
                'priority': 'normal',
                'target_audience': 'Semua Warga',
                'location': 'Seluruh Wilayah Desa',
                'contact_person': 'Rudi Hartono',
                'contact_phone': '081234567893',
                'is_pinned': False
            }
        ]

        created_count = 0
        
        for announcement_data in announcements_data:
            # Check if announcement already exists
            if Announcement.objects.filter(title=announcement_data['title']).exists():
                self.stdout.write(f'Announcement already exists: {announcement_data["title"]}')
                continue
                
            # Set start date to now
            start_date = timezone.now()
            # Set end date to 7 days from now
            end_date = start_date + timedelta(days=7)
            
            announcement = Announcement.objects.create(
                title=announcement_data['title'],
                content=announcement_data['content'],
                announcement_type=announcement_data['announcement_type'],
                priority=announcement_data['priority'],
                target_audience=announcement_data['target_audience'],
                location=announcement_data['location'],
                contact_person=announcement_data['contact_person'],
                contact_phone=announcement_data['contact_phone'],
                author=admin_user,
                start_date=start_date,
                end_date=end_date,
                status='published',
                is_pinned=announcement_data['is_pinned'],
                is_popup=False
            )
            
            created_count += 1
            self.stdout.write(f'Created announcement: {announcement.title}')

        # Create notification settings
        NotificationSettings.objects.get_or_create(
            name='default',
            defaults={
                'is_enabled': True,
                'show_in_navbar': True,
                'auto_show_delay': 1000,
                'auto_hide_delay': 15000,
                'show_count_badge': True,
                'max_notifications': 5,
                'slide_animation': True,
                'sound_enabled': False,
                'vibration_enabled': True,
            }
        )

        self.stdout.write(
            self.style.SUCCESS(
                f'Successfully created {created_count} simple announcements!'
            )
        )
