package id.ac.ubharajaya.sistemakademik

import org.json.JSONObject
import java.net.ConnectException
import java.net.SocketTimeoutException
import java.net.UnknownHostException

object ErrorHandler {

    // Menerjemahkan Exception Java ke Pesan Manusia
    fun parseException(e: Exception): String {
        return when (e) {
            is UnknownHostException -> "🚫 Tidak ada koneksi internet. Periksa wifi/data Anda."
            is SocketTimeoutException -> "⏳ Waktu habis. Server tidak merespons (Timeout)."
            is ConnectException -> "🔌 Gagal terhubung ke server. Server mungkin sedang offline."
            else -> "⚠️ Terjadi kesalahan: ${e.message}"
        }
    }

    // Menerjemahkan Response Code HTTP
    fun parseHttpError(responseCode: Int, errorBody: String): String {
        // Coba ambil pesan error spesifik dari JSON server (jika ada)
        val serverMessage = try {
            val json = JSONObject(errorBody)
            json.optString("error", "")
        } catch (e: Exception) {
            ""
        }

        if (serverMessage.isNotEmpty()) return serverMessage

        // Jika tidak ada pesan JSON, gunakan pesan default berdasarkan kode
        return when (responseCode) {
            400 -> "❌ Permintaan tidak valid (Bad Request)."
            401 -> "🔒 Sesi telah berakhir. Silakan login kembali."
            403 -> "⛔ Anda tidak memiliki akses ke fitur ini."
            404 -> "🔍 Data atau alamat tidak ditemukan."
            500 -> "🔥 Terjadi kesalahan internal pada server."
            502, 503 -> "🚧 Server sedang dalam perbaikan (Maintenance)."
            else -> "⚠️ Terjadi kesalahan (Kode: $responseCode)."
        }
    }
}