from django.core.management.base import BaseCommand
from apps.events.models import InvitationTemplate


PRESETS = [
    {
        "name": "Formal Corporate",
        "category": "formal",
        "description": "Institutional letterhead with left teal band, serif organization wordmark, top-right address block, justified Indonesian body, and event detail table. Modeled on CSIS DfD Lab invitation.",
        "design": {
            "layout": "csis-letter",
            "palette": {
                "band": "#0F5563",
                "heading": "#0F5563",
                "rule": "#0F5563",
                "bg": "#FFFFFF",
                "text": "#1F2937",
                "muted": "#6B7280",
            },
            "font": {"heading": "'Cormorant Garamond', Georgia, serif", "body": "Inter, system-ui, sans-serif"},
            "header": {
                "logoCircle": True,
                "logoInitial": "{{org_initial}}",
                "wordmarkLines": ["CENTRE FOR", "STRATEGIC AND", "INTERNATIONAL", "STUDIES"],
                "addressLines": [
                    "{{org_building}}",
                    "{{org_street}}",
                    "{{org_city_postal}}",
                    "{{org_country}}",
                    "T: {{org_phone}}",
                    "F: {{org_fax}}",
                    "{{org_website}}",
                ],
            },
            "body": {
                "dateLine": "Jakarta, {{letter_date}}",
                "recipient": {
                    "title": "Yth.",
                    "lines": ["{{guest_name}}", "{{guest_org}}", "Di tempat"],
                },
                "opener": "Dengan hormat,",
                "paragraphs": [
                    "{{org_name}} mengundang Bapak/Ibu untuk menghadiri {{event_name}}.",
                    "Acara akan diselenggarakan dalam Bahasa Indonesia. Konfirmasi kehadiran melalui {{rsvp_link}}.",
                ],
                "details": [
                    {"label": "Hari/tanggal", "value": "{{event_date}}"},
                    {"label": "Waktu", "value": "{{event_time}}"},
                    {"label": "Tempat", "value": "{{event_location}}"},
                ],
                "closing": "Hormat kami,",
                "signerName": "{{signer_name}}",
                "signerTitle": "{{signer_title}}",
            },
            "sample": {
                "org_initial": "C",
                "org_name": "Centre for Strategic and International Studies (CSIS Indonesia)",
                "org_building": "Pakarti Centre Building",
                "org_street": "Jl. Tanah Abang III No. 23-27",
                "org_city_postal": "Jakarta 10160",
                "org_country": "Indonesia",
                "org_phone": "(+62-21) 386 5532",
                "org_fax": "(+62-21) 384 7517",
                "org_website": "csis.or.id",
                "letter_date": "11 Juni 2025",
                "guest_name": "Bapak atau Ibu",
                "guest_org": "CSIS",
                "event_name": "Peluncuran Laporan Perdagangan dan Investasi Berkelanjutan Indonesia 2025",
                "event_date": "Jumat, 20 Juni 2025",
                "event_time": "09.30 – 11.30 WIB",
                "event_location": "Auditorium CSIS, Lantai 3 Gedung Pakarti Centre, Jl. Tanah Abang III No. 27, Jakarta Pusat",
                "rsvp_link": "https://csis.or.id/R/RSVPSTIR",
                "signer_name": "Yose Rizal Damuri",
                "signer_title": "Direktur Eksekutif, CSIS",
            },
        },
        "is_default": True,
    },
    {
        "name": "Casual Friendly",
        "category": "casual",
        "description": "Warm gradient card with playful copy. Use for community meetups, workshops, internal gatherings.",
        "design": {
            "layout": "casual-card",
            "palette": {
                "gradientFrom": "#F97316",
                "gradientTo":   "#FACC15",
                "accent":       "#FB923C",
                "bg":           "#FFF7ED",
                "text":         "#1F2937",
                "muted":        "#6B7280",
            },
            "font": {"heading": "'Plus Jakarta Sans', system-ui, sans-serif", "body": "Inter, system-ui, sans-serif"},
            "header": {
                "kicker": "YOU'RE INVITED",
                "title": "{{event_name}}",
                "subtitle": "Hosted by {{org_name}}",
            },
            "body": {
                "salutation": "Hi {{guest_name}}!",
                "paragraphs": [
                    "We'd love to see you at {{event_name}} on {{event_date}}. Expect great talks, snacks, and good company.",
                    "Tap RSVP below — limited spots.",
                ],
                "details": [
                    {"label": "When", "value": "{{event_date}} · {{event_time}}"},
                    {"label": "Where", "value": "{{event_location}}"},
                    {"label": "Vibe", "value": "{{dress_code}}"},
                ],
                "cta": {"label": "RSVP Now", "url": "{{rsvp_link}}"},
                "closing": "See you there,",
                "signerName": "{{signer_name}}",
                "signerTitle": "{{signer_title}}",
            },
            "sample": {
                "org_name": "KHUB Community",
                "event_name": "Spring Tech Meetup",
                "event_date": "Saturday, May 24, 2026",
                "event_time": "18.00 – 21.00 WIB",
                "event_location": "Rooftop, Wisma KHUB, Kuningan",
                "dress_code": "Smart casual · bring laptop",
                "rsvp_link": "khub.id/rsvp/spring-meetup",
                "guest_name": "Andini",
                "signer_name": "Rafi Pratama",
                "signer_title": "Community Lead, KHUB",
            },
        },
        "is_default": True,
    },
    {
        "name": "Reminder",
        "category": "reminder",
        "description": "Compact reminder banner with countdown emphasis. Sent 1–3 days before event to confirmed guests.",
        "design": {
            "layout": "reminder-banner",
            "palette": {
                "primary":  "#2563EB",
                "accent":   "#F59E0B",
                "bg":       "#EFF6FF",
                "panel":    "#FFFFFF",
                "text":     "#0F172A",
                "muted":    "#475569",
            },
            "font": {"heading": "Inter, system-ui, sans-serif", "body": "Inter, system-ui, sans-serif"},
            "header": {
                "badge": "REMINDER",
                "countdownLabel": "Starts in",
                "countdownValue": "{{days_until}} days",
            },
            "body": {
                "title": "{{event_name}}",
                "salutation": "Hi {{guest_name}},",
                "paragraph": "Quick reminder: {{event_name}} starts on {{event_date}}. Bring this card or your ticket code at check-in.",
                "details": [
                    {"label": "Date", "value": "{{event_date}}"},
                    {"label": "Time", "value": "{{event_time}}"},
                    {"label": "Venue", "value": "{{event_location}}"},
                    {"label": "Ticket", "value": "{{ticket_code}}"},
                ],
                "cta": {"label": "View event details", "url": "{{event_link}}"},
            },
            "sample": {
                "guest_name": "Sari",
                "event_name": "Annual Sustainability Forum",
                "event_date": "Friday, June 20, 2025",
                "event_time": "09.30 – 11.30 WIB",
                "event_location": "Auditorium CSIS, Jakarta",
                "days_until": "2",
                "ticket_code": "CSIS-2025-A091",
                "event_link": "khub.id/e/sustain-forum",
            },
        },
        "is_default": True,
    },
    {
        "name": "Confirmation / RSVP",
        "category": "confirmation",
        "description": "Ticket-style RSVP confirmation with check badge, QR placeholder, and entry details. Sent after a guest accepts.",
        "design": {
            "layout": "confirmation-ticket",
            "palette": {
                "primary": "#059669",
                "accent":  "#0EA5E9",
                "bg":      "#ECFDF5",
                "panel":   "#FFFFFF",
                "text":    "#064E3B",
                "muted":   "#047857",
            },
            "font": {"heading": "'Plus Jakarta Sans', system-ui, sans-serif", "body": "Inter, system-ui, sans-serif"},
            "header": {
                "badge": "RSVP CONFIRMED",
                "checkmark": True,
            },
            "body": {
                "salutation": "Thanks for confirming, {{guest_name}}!",
                "title": "{{event_name}}",
                "subtitle": "Hosted by {{org_name}}",
                "paragraph": "You're on the guest list. Show this ticket at the entrance.",
                "details": [
                    {"label": "Date",  "value": "{{event_date}}"},
                    {"label": "Time",  "value": "{{event_time}}"},
                    {"label": "Venue", "value": "{{event_location}}"},
                    {"label": "Seat",  "value": "{{seat_assignment}}"},
                ],
                "ticket": {
                    "code": "{{ticket_code}}",
                    "scanLabel": "Scan at venue entrance",
                },
                "footerNote": "Ticket valid for one person only. Non-transferable.",
            },
            "sample": {
                "guest_name": "Andini Pratiwi",
                "org_name": "CSIS Indonesia",
                "event_name": "Peluncuran Laporan Perdagangan dan Investasi Berkelanjutan 2025",
                "event_date": "Friday, June 20, 2025",
                "event_time": "09.30 – 11.30 WIB",
                "event_location": "Auditorium CSIS, Jakarta Pusat",
                "seat_assignment": "Open seating · Row 4",
                "ticket_code": "CSIS-2025-A091",
            },
        },
        "is_default": True,
    },
]


class Command(BaseCommand):
    help = "Seed default invitation templates (formal, casual, reminder, confirmation)."

    def handle(self, *args, **options):
        created = 0
        updated = 0
        for preset in PRESETS:
            obj, was_created = InvitationTemplate.objects.update_or_create(
                name=preset["name"],
                defaults={
                    "category": preset["category"],
                    "description": preset["description"],
                    "design": preset["design"],
                    "is_default": preset["is_default"],
                },
            )
            if was_created:
                created += 1
            else:
                updated += 1
        self.stdout.write(self.style.SUCCESS(f"Invitation templates: {created} created, {updated} updated."))
