from django.db import migrations

# Text messages per language (excluding French)
OTP_TEXTS = {
    "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",
    "dk": "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ý užívateľ, použijte následující OTP (jednorázové heslo) k dokončení ověření. Platnost tohoto OTP kódu vyprší do 10 minut. Pokud jste o něj nepožádali, tento e-mail prosím 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",
    "si": "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",
    "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",
}

# HTML per language (just translated texts, placeholder {otp} stays)
HTML_BODIES = {
    "it": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Verifica Wile</h2><p>Gentile utente,</p><p>Usa il seguente OTP per completare la verifica:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Questo codice scade tra 10 minuti.</p><p>Se non sei stato tu a richiederlo, ignora questa email.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "nl": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Verificatie</h2><p>Beste gebruiker,</p><p>Gebruik de volgende OTP om uw verificatie te voltooien:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Deze code verloopt over 10 minuten.</p><p>Als u dit niet hebt aangevraagd, negeer deze e-mail.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "pl": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Weryfikacja</h2><p>Szanowny użytkowniku,</p><p>Użyj poniższego OTP, aby zakończyć weryfikację:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Ten kod wygasa po 10 minutach.</p><p>Jeśli nie poprosiłeś o to, zignoruj tę wiadomość.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "ru": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Проверка Wile</h2><p>Уважаемый пользователь,</p><p>Используйте следующий OTP для завершения проверки:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Этот код истекает через 10 минут.</p><p>Если вы не запрашивали это, игнорируйте это письмо.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "fi": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Vahvistus</h2><p>Arvoisa käyttäjä,</p><p>Käytä seuraavaa OTP:tä vahvistuksen suorittamiseksi:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Tämä koodi vanhenee 10 minuutin kuluttua.</p><p>Jos et pyytänyt tätä, jätä tämä sähköposti huomioitta.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "de": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Verifizierung</h2><p>Sehr geehrter Benutzer,</p><p>Verwenden Sie den folgenden OTP, um Ihre Verifizierung abzuschließen:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Dieser Code ist 10 Minuten gültig.</p><p>Wenn Sie dies nicht angefordert haben, ignorieren Sie diese E-Mail.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "sv": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Verifiering</h2><p>Bästa användare,</p><p>Använd följande OTP för att slutföra verifieringen:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Denna kod upphör om 10 minuter.</p><p>Om du inte begärde detta, ignorera detta e-postmeddelande.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "pt": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Verificação Wile</h2><p>Caro usuário,</p><p>Use o seguinte OTP para completar a verificação:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Este código expira em 10 minutos.</p><p>Se você não solicitou isso, ignore este e-mail.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "et": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Kinnitamine</h2><p>Hea kasutaja,</p><p>Kasutage järgmist OTP-d kinnituse lõpetamiseks:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>See kood aegub 10 minuti pärast.</p><p>Kui te seda ei taotlenud, ignoreerige seda e-kirja.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "no": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Bekreftelse</h2><p>Kjære bruker,</p><p>Bruk følgende OTP for å fullføre bekreftelsen:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Denne koden utløper om 10 minutter.</p><p>Hvis du ikke ba om dette, ignorer denne e-posten.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "bg": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Потвърждение</h2><p>Уважаеми потребители,</p><p>Използвайте следната OTP за потвърждение:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Този код изтича след 10 минути.</p><p>Ако не сте заявили това, игнорирайте този имейл.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "dk": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Bekræftelse</h2><p>Kære bruger,</p><p>Brug følgende OTP for at fuldføre bekræftelsen:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Denne kode udløber om 10 minutter.</p><p>Hvis du ikke bad om dette, ignorer denne e-mail.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "lt": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Patvirtinimas</h2><p>Gerbiamas naudotojau,</p><p>Naudokite šį OTP patvirtinimui:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Šis kodas galioja 10 minučių.</p><p>Jei to neprašėte, ignoruokite šį laišką.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "sk": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Overenie</h2><p>Vážený užívateľ,</p><p>Použite nasledujúci OTP na dokončenie overenia:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Platnosť kódu vyprší za 10 minút.</p><p>Ak ste o to nežiadali, ignorujte tento e-mail.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "hr": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Potvrda</h2><p>Poštovani korisniče,</p><p>Upotrijebite sljedeći OTP za dovršetak potvrde:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Ovaj kod vrijedi 10 minuta.</p><p>Ako to niste zatražili, zanemarite ovu poruku.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "si": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Potrditev</h2><p>Spoštovani uporabnik,</p><p>Uporabite naslednji OTP za dokončanje preverjanja:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Ta koda poteče čez 10 minut.</p><p>Če tega niste zahtevali, prezrite ta e-poštni naslov.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "hu": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Ellenőrzés</h2><p>Kedves felhasználó,</p><p>Használja a következő OTP-t a hitelesítéshez:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Ez a kód 10 percig érvényes.</p><p>Ha nem kérte, hagyja figyelmen kívül ezt az e-mailt.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "ro": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Wile Verificare</h2><p>Stimate utilizator,</p><p>Folosiți următorul OTP pentru a finaliza verificarea:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Acest cod expiră în 10 minute.</p><p>Dacă nu ați solicitat acest lucru, ignorați acest e-mail.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
    "el": """<html><body style="font-family: Arial; background:#f4f7fb; padding:40px;"><div style="max-width:500px; margin:auto; background:#fff; padding:30px; border-radius:10px;"><h2 style="color:#0f766e;">Έλεγχος Wile</h2><p>Αγαπητέ/ή χρήστη,</p><p>Χρησιμοποιήστε τον παρακάτω OTP για να ολοκληρώσετε την επαλήθευσή σας:</p><h1 style="letter-spacing:6px; text-align:center;">{otp}</h1><p>Αυτός ο κωδικός λήγει σε 10 λεπτά.</p><p>Αν δεν ζητήσατε αυτό, αγνοήστε αυτό το email.</p><p><strong>Wile Security Team</strong></p></div></body></html>""",
}


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",
    ]

    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_TEXTS.items():
        try:
            language = Language.objects.get(code=lang_code)
        except Language.DoesNotExist:
            continue

        for template_name, template in templates.items():
            en_translation = EmailTemplateTranslation.objects.filter(template=template).first()
            subject = en_translation.subject if en_translation else f"{{app_name}} - {template_name}"

            obj, created = EmailTemplateTranslation.objects.get_or_create(
                template=template,
                language=language,
                defaults={
                    "subject": subject,
                    "text_message": text,
                    "html_message": HTML_BODIES[lang_code],
                    "is_active": True
                }
            )

            if not created:
                obj.subject = subject
                obj.text_message = text
                obj.html_message = HTML_BODIES[lang_code]
                obj.is_active = True
                obj.save()


def backwards(apps, schema_editor):
    pass


class Migration(migrations.Migration):
    dependencies = [
        ("notification_engine", "0007_add_otherlanguagetranslations"),
    ]

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


