package com.tomhempel.rbarometer.utils

import com.tomhempel.rbarometer.network.SyncPhase

/** Professional DE/EN copy for the sync overlay — phase messages only, no counts. */
object SyncProgressTexts {

    enum class Locale {
        GERMAN,
        ENGLISH,
        ;

        companion object {
            fun fromLanguageId(languageId: String?): Locale =
                if (languageId.equals("GERMAN", ignoreCase = true)) GERMAN else ENGLISH
        }
    }

    private data class Bilingual(val de: String, val en: String) {
        fun text(locale: Locale): String = when (locale) {
            Locale.GERMAN -> de
            Locale.ENGLISH -> en
        }
    }

    fun title(locale: Locale): String = Bilingual(
        de = "Synchronisation",
        en = "Synchronization",
    ).text(locale)

    fun status(phase: SyncPhase, locale: Locale): String = when (phase) {
        SyncPhase.PREPARING -> Bilingual(
            de = "Vorbereitung läuft",
            en = "Preparing",
        )
        SyncPhase.DOWNLOADING_QUESTIONNAIRES -> Bilingual(
            de = "Fragebögen werden geladen",
            en = "Downloading questionnaires",
        )
        SyncPhase.DOWNLOADING_CLIENT_INFO -> Bilingual(
            de = "Klienteninformationen werden geladen",
            en = "Downloading client information",
        )
        SyncPhase.DOWNLOADING_ANSWERS -> Bilingual(
            de = "Antworten werden geladen",
            en = "Downloading answers",
        )
        SyncPhase.PROCESSING -> Bilingual(
            de = "Daten werden verarbeitet",
            en = "Processing data",
        )
        SyncPhase.SECURELY_SAVING -> Bilingual(
            de = "Daten werden sicher gespeichert",
            en = "Securely saving data",
        )
        SyncPhase.FINISHED -> Bilingual(
            de = "Synchronisation abgeschlossen",
            en = "Synchronization complete",
        )
    }.text(locale)

    fun subtitle(phase: SyncPhase, locale: Locale): String = when (phase) {
        SyncPhase.PREPARING -> Bilingual(
            de = "Sprachen und Fragebogenlisten werden aktualisiert.",
            en = "Updating languages and questionnaire lists.",
        )
        SyncPhase.DOWNLOADING_QUESTIONNAIRES -> Bilingual(
            de = "Fragebögen werden für die Offline-Nutzung bereitgestellt.",
            en = "Preparing questionnaires for offline use.",
        )
        SyncPhase.DOWNLOADING_CLIENT_INFO -> Bilingual(
            de = "Zugewiesene Klienten werden vom Server abgerufen.",
            en = "Retrieving assigned clients from the server.",
        )
        SyncPhase.DOWNLOADING_ANSWERS -> Bilingual(
            de = "Bei vielen Klienten kann dieser Schritt etwas länger dauern.",
            en = "This step may take longer when many clients are assigned.",
        )
        SyncPhase.PROCESSING -> Bilingual(
            de = "Serverdaten werden aufbereitet und zugeordnet.",
            en = "Organizing and mapping server data.",
        )
        SyncPhase.SECURELY_SAVING -> Bilingual(
            de = "Sensible Daten werden verschlüsselt auf dem Gerät gespeichert.",
            en = "Sensitive data is encrypted and stored on this device.",
        )
        SyncPhase.FINISHED -> Bilingual(
            de = "Sie können die App jetzt verwenden.",
            en = "You may continue using the app.",
        )
    }.text(locale)
}
