from django.core.management.base import BaseCommand
from event.models import Event, WhatsAppTemplate


class Command(BaseCommand):
    help = 'Membuat template WhatsApp default untuk semua event'

    def handle(self, *args, **options):
        events = Event.objects.all()
        created_count = 0
        
        for event in events:
            # Template Approved - Default
            approved_template, created = WhatsAppTemplate.objects.get_or_create(
                event=event,
                tipe_pesan='approved',
                is_default=True,
                defaults={
                    'nama': 'Template Default',
                    'pesan': """Halo {nama},

Selamat! Pendaftaran Anda untuk event {event} telah DISETUJUI.

Detail Event:
• Nama Event: {event}
• Tanggal: {tanggal_mulai} - {tanggal_selesai}
• Lokasi: {lokasi}

Informasi Penting:
• Pastikan Anda hadir tepat waktu
• Bawa dokumen yang diperlukan
• Jika ada pertanyaan, silakan hubungi kami

Terima kasih atas partisipasi Anda!

HMI""",
                    'aktif': True
                }
            )
            if created:
                created_count += 1
                self.stdout.write(self.style.SUCCESS(f'[OK] Template Approved dibuat untuk: {event.judul}'))
            
            # Template Approved - Formal
            if not WhatsAppTemplate.objects.filter(event=event, tipe_pesan='approved', nama='Template Formal').exists():
                try:
                    WhatsAppTemplate.objects.create(
                        event=event,
                        tipe_pesan='approved',
                        nama='Template Formal',
                        pesan="""Kepada Yth. {nama},

Dengan hormat, kami sampaikan bahwa pendaftaran Anda untuk kegiatan:

{event}
Tanggal: {tanggal_mulai} - {tanggal_selesai}
Lokasi: {lokasi}

Telah DISETUJUI.

Kami mengharapkan kehadiran Anda pada waktu dan tempat yang telah ditentukan.

Terima kasih atas perhatiannya.

Hormat kami,
HMI""",
                        aktif=True,
                        is_default=False
                    )
                    created_count += 1
                    self.stdout.write(self.style.SUCCESS(f'[OK] Template Formal (Approved) dibuat untuk: {event.judul}'))
                except Exception as e:
                    self.stdout.write(self.style.WARNING(f'[SKIP] Template Formal (Approved) untuk {event.judul}: {str(e)}'))
            
            # Template Approved - Casual
            if not WhatsAppTemplate.objects.filter(event=event, tipe_pesan='approved', nama='Template Casual').exists():
                try:
                    WhatsAppTemplate.objects.create(
                        event=event,
                        tipe_pesan='approved',
                        nama='Template Casual',
                        pesan="""Hai {nama}! 👋

Selamat! 🎉 Pendaftaran kamu untuk event {event} sudah DISETUJUI!

📅 Tanggal: {tanggal_mulai}
📍 Lokasi: {lokasi}

Jangan lupa hadir ya! 😊

See you there!
HMI""",
                        aktif=True,
                        is_default=False
                    )
                    created_count += 1
                    self.stdout.write(self.style.SUCCESS(f'[OK] Template Casual (Approved) dibuat untuk: {event.judul}'))
                except Exception as e:
                    self.stdout.write(self.style.WARNING(f'[SKIP] Template Casual (Approved) untuk {event.judul}: {str(e)}'))
            
            # Template Rejected - Default
            rejected_template, created = WhatsAppTemplate.objects.get_or_create(
                event=event,
                tipe_pesan='rejected',
                is_default=True,
                defaults={
                    'nama': 'Template Default',
                    'pesan': """Halo {nama},

Mohon maaf, pendaftaran Anda untuk event {event} TIDAK DAPAT DISETUJUI pada kesempatan ini.

Detail Event:
• Nama Event: {event}
• Tanggal: {tanggal_mulai} - {tanggal_selesai}

Catatan:
Alasan: {alasan}

Kami berharap dapat berpartisipasi bersama Anda di event-event selanjutnya.

Terima kasih atas pengertiannya.

HMI""",
                    'aktif': True
                }
            )
            if created:
                created_count += 1
                self.stdout.write(self.style.SUCCESS(f'[OK] Template Rejected dibuat untuk: {event.judul}'))
            
            # Template Rejected - Formal
            if not WhatsAppTemplate.objects.filter(event=event, tipe_pesan='rejected', nama='Template Formal').exists():
                try:
                    WhatsAppTemplate.objects.create(
                        event=event,
                        tipe_pesan='rejected',
                        nama='Template Formal',
                        pesan="""Kepada Yth. {nama},

Dengan hormat, kami sampaikan bahwa pendaftaran Anda untuk kegiatan:

{event}
Tanggal: {tanggal_mulai} - {tanggal_selesai}

Maaf, TIDAK DAPAT DISETUJUI pada kesempatan ini.

Alasan: {alasan}

Kami berharap dapat berpartisipasi bersama Anda di kegiatan selanjutnya.

Terima kasih atas pengertiannya.

Hormat kami,
HMI""",
                        aktif=True,
                        is_default=False
                    )
                    created_count += 1
                    self.stdout.write(self.style.SUCCESS(f'[OK] Template Formal (Rejected) dibuat untuk: {event.judul}'))
                except Exception as e:
                    self.stdout.write(self.style.WARNING(f'[SKIP] Template Formal (Rejected) untuk {event.judul}: {str(e)}'))
            
            # Template Rejected - Casual
            if not WhatsAppTemplate.objects.filter(event=event, tipe_pesan='rejected', nama='Template Casual').exists():
                try:
                    WhatsAppTemplate.objects.create(
                        event=event,
                        tipe_pesan='rejected',
                        nama='Template Casual',
                        pesan="""Hai {nama},

Maaf ya, pendaftaran kamu untuk event {event} TIDAK DAPAT DISETUJUI kali ini.

Alasan: {alasan}

Tapi jangan sedih! Masih ada event-event menarik lainnya yang bisa kamu ikuti. Stay tuned! 😊

Terima kasih ya!
HMI""",
                        aktif=True,
                        is_default=False
                    )
                    created_count += 1
                    self.stdout.write(self.style.SUCCESS(f'[OK] Template Casual (Rejected) dibuat untuk: {event.judul}'))
                except Exception as e:
                    self.stdout.write(self.style.WARNING(f'[SKIP] Template Casual (Rejected) untuk {event.judul}: {str(e)}'))
        
        self.stdout.write(self.style.SUCCESS(f'\n[OK] Selesai! Total {created_count} template berhasil dibuat untuk {events.count()} event.'))

