package com.example.mathseduc.controllers

import android.os.StrictMode
import android.util.Log
import com.example.mathseduc.models.Lobby
import com.example.mathseduc.models.Question
import com.example.mathseduc.models.Utiliser
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import okhttp3.MultipartBody
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import org.json.JSONObject
import java.io.IOException


class ControllerQuestion {
    companion object {
        fun getQuestionsForLobby(questionIds: ArrayList<String>): List<Question>? {
            val questions = ArrayList<Question>()

            for (questionId in questionIds) {
                val question = getQuestionById(questionId)
                if (question != null) {
                    questions.add(question)
                }
            }

            return if (questions.isNotEmpty()) questions else null
        }

        private fun getQuestionById(questionId: String): Question? {
            val policy = StrictMode.ThreadPolicy.Builder().permitAll().build()
            StrictMode.setThreadPolicy(policy)

            // Client HTTP API
            val client = OkHttpClient()

            // API Access
            val request = Request.Builder()
                .url("https://trusting-panini.87-106-126-109.plesk.page/api/questions/$questionId/qUOGkWdoPCgbmuqxIC8xiaX0rV1Pw1LoPafkaoHOgszEyD9P2vcOu493xCDZpAqO")
                .build()

            // API Response
            client.newCall(request).execute().use { response ->
                if (!response.isSuccessful) {
                    // Handle error, log, or throw an exception as needed
                    return null
                }

                // Gson deserialization
                val gson = Gson()
                val typeTokenProduct = object : TypeToken<ArrayList<Question>>() {}.type

                val question: ArrayList<Question> = gson.fromJson(response.body!!.string(), typeTokenProduct)

                // Assuming the API returns a list with a single question
                return if (question.isNotEmpty()) question[0] else null
            }
        }
    }
}