package com.proyek.akhir.kodel.ui.user.dashboard

import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.proyek.akhir.kodel.data.response.Anggota
import com.proyek.akhir.kodel.data.response.Berita
import com.proyek.akhir.kodel.data.response.Pinjam
import com.proyek.akhir.kodel.data.response.Utang
import com.proyek.akhir.kodel.utils.ApiClient
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response

class DashboardViewModel : ViewModel() {
    private val anggotaKoperasi = MutableLiveData<Anggota>()
    private val anggotaUtang = MutableLiveData<Utang>()
    private val anggotaBerita = MutableLiveData<Berita>()
    private val anggotaPenunggak = MutableLiveData<Utang>()
    private val anggotaJatuhTempo = MutableLiveData<Utang>()
    private val anggotaPeminjam = MutableLiveData<Pinjam>()

    init {
        getAnggotaKoperasi()
        getAnggotaUtang()
        getGetAnggotaBerita()
        getAllPenunggak()
        getAllJatuhTemp()
    }

    private fun getAnggotaKoperasi() {
        ApiClient().getServiceDel().getAnggota().enqueue(object : Callback<Anggota> {
            override fun onFailure(call: Call<Anggota>, t: Throwable) {
                anggotaKoperasi.value = null
            }

            override fun onResponse(call: Call<Anggota>, response: Response<Anggota>) {
                if (response.isSuccessful) {
                    anggotaKoperasi.value = response.body()

                } else {
                    anggotaKoperasi.value = null
                }
            }
        })
    }

    private fun getAnggotaUtang() {
        ApiClient().getServiceDel().getUtang().enqueue(object : retrofit2.Callback<Utang> {
            override fun onFailure(call: Call<Utang>, t: Throwable) {
                anggotaUtang.value = null
            }

            override fun onResponse(call: Call<Utang>, response: Response<Utang>) {
                if (response.isSuccessful) {
                    anggotaUtang.value = response.body()
                } else {
                    anggotaUtang.value = null
                }
            }
        })
    }

    private fun getGetAnggotaBerita() {
        ApiClient().getServiceKode().getBerita().enqueue(object : Callback<Berita> {
            override fun onFailure(call: Call<Berita>, t: Throwable) {
                anggotaBerita.value = null
            }

            override fun onResponse(call: Call<Berita>, response: Response<Berita>) {
                if (response.isSuccessful) {
                    anggotaBerita.value = response.body()
                } else {
                    anggotaBerita.value = null
                }
            }
        })
    }

    private fun getAllPenunggak() {
        ApiClient().getServiceDel().getUtangAll().enqueue(object : Callback<Utang> {
            override fun onFailure(call: Call<Utang>, t: Throwable) {
                anggotaPenunggak.value = null
            }

            override fun onResponse(call: Call<Utang>, response: Response<Utang>) {
                if (response.isSuccessful) {
                    anggotaPenunggak.value = response.body()
                } else {
                    anggotaPenunggak.value = null
                }
            }
        })
    }

    private fun getAllJatuhTemp() {
        ApiClient().getServiceDel().getAllPenunggak().enqueue(object : Callback<Utang> {
            override fun onFailure(call: Call<Utang>, t: Throwable) {
                anggotaJatuhTempo.value = null
            }

            override fun onResponse(call: Call<Utang>, response: Response<Utang>) {
                if (response.isSuccessful) {
                    anggotaJatuhTempo.value = response.body()
                } else {
                    anggotaJatuhTempo.value = null
                }
            }
        })
    }

    fun getAllPeminjam() {
        ApiClient().getServiceKode().getAllPinjam().enqueue(object : Callback<Pinjam> {
            override fun onFailure(call: Call<Pinjam>, t: Throwable) {
                anggotaPeminjam.value = null
            }

            override fun onResponse(
                call: Call<Pinjam>,
                response: Response<Pinjam>
            ) {
                if (response.isSuccessful) {
                    anggotaPeminjam.value = response.body()
                } else {
                    anggotaPeminjam.value = null
                }
            }
        })
    }



    fun setDataAnggota(): MutableLiveData<Anggota> {
        return anggotaKoperasi
    }

    fun setDataUtang(): MutableLiveData<Utang> {
        return anggotaUtang
    }

    fun setDataBerita(): MutableLiveData<Berita> {
        return anggotaBerita
    }

    fun setDataPenunggak(): MutableLiveData<Utang> {
        return anggotaPenunggak
    }

    fun setDataJatuhTempo(): MutableLiveData<Utang> {
        return anggotaJatuhTempo
    }

    fun setDataPeminjam(): MutableLiveData<Pinjam> {
        return anggotaPeminjam
    }
    //  val anggota : Int? = anggotaKoperasi.value?.get(0)?.saldoAnggota


}