# notification_engine/migrations/0007_add_full_otp_translations_complete.py
from django.db import migrations

# OTP translations per language
OTP_TRANSLATIONS = {
    "it": """Gentile utente,
utilizza la seguente OTP (password monouso) per completare la verifica.
Questo codice OTP scade tra 10 minuti.
Se non sei stato tu a richiederlo, ti preghiamo di ignorare questa email.
Wile Security Team""",
    
    "nl": """Beste gebruiker,
gebruik de volgende OTP (eenmalig wachtwoord) om uw verificatie te voltooien.
Deze OTP-code verloopt over tien minuten.
Als u dit niet verzocht hebt, kunt u deze e-mail negeren.
Wile Security Team""",
    
    "pl": """Szanowny użytkowniku,
proszę użyć poniższego kodu OTP (jednorazowego hasła), aby zakończyć weryfikację.
Kod OTP traci ważność za 10 minut.
Jeśli nie prosili Państwo o ten kod, proszę zignorować tę wiadomość e-mail.
Wile Security Team""",
    
    "ru": """Уважаемый пользователь,
используйте следующий OTP (одноразовый пароль) для завершения верификации.
Срок действия этого одноразового пароля истечет через 10 минут.
Если вы не запрашивали его, пожалуйста, проигнорируйте это электронное письмо.
Wile Security Team""",
    
    "fi": """Arvoisa käyttäjä,
käytä seuraavaa OTP:tä (kertakäyttöinen salasana) suorittaaksesi vahvistuksen loppuun.
Tämä OTP-koodi vanhenee 10 minuutin kuluessa.
Jos et pyytänyt koodia, jätä tämä sähköposti huomioitta.
Wile Security Team""",
    
    "de": """Sehr geehrter Benutzer,
verwenden Sie das folgende OTP (Einmalpasswort), um Ihre Bestätigung abzuschließen.
Dieser OTP-Code ist 10 Minuten gültig.
Falls Sie diese E-Mail nicht angefordert haben, ignorieren Sie sie bitte.
Wile Security Team""",
    
    "sv": """Bästa användare,
använd följande OTP (engångslösenord) för att slutföra din verifiering.
Denna OTP-kod förfaller om 10 minuter.
Ignorera detta e-postmeddelande om du inte begärde koden.
Wile Security Team""",
    
    "pt": """Caro usuário,
use a seguinte OTP (senha de uso único) para concluir sua verificação.
Este código OTP expira em 10 minutos.
Se você não solicitou isso, ignore este e-mail.
Wile Security Team""",
    
    "et": """Hea kasutaja,
kasutage kinnitamise lõpuleviimiseks seda ühekordset parooli (OTP-d).
OTP-kood aegub 10 minuti pärast.
Kui te ei ole seda taotlenud, siis lihtsalt ignoreerige seda e-kirja.
Wile Security Team""",
    
    "no": """Kjære bruker,
bruk følgende OTP (engangspassord) for å fullføre bekreftelsen.
Denne OTP utløper om 10 minutter.
Hvis du ikke ba om dette, kan du ignorere denne e-posten.
Wile Security Team""",
    
    "bg": """Уважаеми потребители,
използвайте следната OTP (еднократна парола), за да завършите проверката си.
Този OTP код изтича след 10 минути.
Ако не сте заявили това, моля, игнорирайте този имейл.
Wile Security Team""",
    
    "da": """Kære bruger,
anvend følgende OTP (éngangskode) til færdiggørelse af din verificering.
Denne éngangskode udløber om 10 minutter.
Hvis du ikke bad om dette, kan du blot ignorere denne e-mail.
Wile Security Team""",
    
    "lt": """Gerbiamas naudotojau,
naudokite toliau pateiktą OTP (vienkartinį slaptažodį), kad užbaigtumėte patvirtinimą.
Šis OTP kodas baigia galioti po 10 minučių.
Jei jo neprašėte, žinutę ignoruokite.
Wile Security Team""",
    
    "sk": """Vážený používateľ,
na dokončenie overenia použite nasledujúce jednorazové heslo (OTP).
Platnosť tohto OTP kódu uplynie do 10 minút.
Ak ste o overenie nepožiadali, tento e-mail ignorujte.
Wile Security Team""",
    
    "hr": """Poštovani korisniče,
upotrijebite sljedeću jednokratnu lozinku (OTP) za dovršetak potvrde računa.
Ovaj kod za jednokratnu lozinku istječe za 10 minuta.
Ako niste zatražili ovu radnju, zanemarite ovu e-poruku.
Wile Security Team""",
    
    "sl": """Spoštovani uporabnik,
za dokončanje preverjanja uporabite naslednje enkratno geslo (OTP).
To enkratno geslo bo neveljavno čez 10 minut.
Če tega niste zahtevali, prezrite to e-poštno sporočilo.
Wile Security Team""",
    
    "cz": """Vážený uživateli,
použijte následující OTP (jednorázové heslo) k dokončení ověření.
Platnost tohoto OTP kódu vyprší za 10 minut.
Pokud jste o něj nepožádali, tento e-mail prosím ignorujte.
Wile Security Team""",
    
    "hu": """Kedves felhasználó, használja a következő egyszer használatos jelszót az ellenőrzés befejezéséhez.
Wile Security Team""",
    
    "ro": """Stimate utilizator,
folosiți OTP-ul următor (parola de unică folosință) pentru a finaliza verificarea.
Acest OTP expiră peste 10 minute.
Dacă nu l-ați solicitat, vă rugăm să ignorați acest mesaj.
Wile Security Team""",
    
    "el": """Αγαπητέ/ή χρήστη,
χρησιμοποιήστε τον παρακάτω κωδικό OTP (κωδικός πρόσβασης μίας χρήσης) για να ολοκληρώσετε την επαλήθευσή σας.
Αυτός ο κωδικός OTP λήγει σε 10 λεπτά.
Αν δεν ζητήσατε έναν κωδικό OTP, αγνοήστε αυτό το email.
Wile Security Team""",
}


def forwards(apps, schema_editor):
    EmailTemplate = apps.get_model("notification_engine", "EmailTemplate")
    EmailTemplateTranslation = apps.get_model("notification_engine", "EmailTemplateTranslation")
    Language = apps.get_model("core", "Language")

    TEMPLATE_CODES = [
        "CUSTOMER_REGISTER_OTP",
        "CUSTOMER_RESEND_OTP",
        "CUSTOMER_LOGIN_VERIFY_OTP",
        "CUSTOMER_FORGOT_PASSWORD_OTP",
    ]

    # Create templates if missing
    templates = {}
    for name in TEMPLATE_CODES:
        template, _ = EmailTemplate.objects.get_or_create(
            code=name.replace(" ", "_").lower(),
            defaults={"default_from_email": None, "is_active": True},
        )
        templates[name] = template

    for lang_code, text in OTP_TRANSLATIONS.items():
        try:
            language = Language.objects.get(code=lang_code)
        except Language.DoesNotExist:
            continue

        for template_name, template in templates.items():
            subject = f"{{app_name}} - {template_name}"

            # Skip if translation exists
            if EmailTemplateTranslation.objects.filter(template=template, language=language).exists():
                continue

            EmailTemplateTranslation.objects.create(
                template=template,
                language=language,
                subject=subject,
                text_message=text,
                html_message=f"<p>{text}</p><br>Wile Security Team",
                is_active=True
            )


def backwards(apps, schema_editor):
    pass


class Migration(migrations.Migration):
    dependencies = [
        ("notification_engine", "0006_add_french_translations"),
    ]

    operations = [
        migrations.RunPython(forwards, backwards),
    ]