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

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.proyek.akhir.kodel.data.response.Kupon
import com.proyek.akhir.kodel.data.response.Produk
import com.proyek.akhir.kodel.utils.ApiClient
import retrofit2.Call
import retrofit2.Response

class ProdukViewModel : ViewModel() {
    private val anggotaProduk = MutableLiveData<Produk>()
    private val anggotaProdukItem = MutableLiveData<Produk>()
    private val anggotaKupon = MutableLiveData<Kupon>()

    init {
        getProduk()
    }

    private fun getProduk() {
        ApiClient().getServiceDel().getProduk().enqueue(object : retrofit2.Callback<Produk> {
            override fun onFailure(call: Call<Produk>, t: Throwable) {
                anggotaProduk.value = null
            }

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

    fun getProdukItem(idProduk: String) {
        ApiClient().getServiceDel().getProdukItem(idProduk)
            .enqueue(object : retrofit2.Callback<Produk> {
                override fun onFailure(call: Call<Produk>, t: Throwable) {
                    anggotaProdukItem.value = null
                }

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

    fun getKuponItem(codeKupon: String) {
        ApiClient().getServiceKode().getCupon(codeKupon)
            .enqueue(object : retrofit2.Callback<Kupon> {
                override fun onFailure(call: Call<Kupon>, t: Throwable) {
                    anggotaKupon.value = null
                }

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

            })
    }

    fun setDataProduk(): MutableLiveData<Produk> {
        return anggotaProduk
    }

    fun setDataItemProduk(): MutableLiveData<Produk> {
        return anggotaProdukItem
    }

    fun setDataKupon(): MutableLiveData<Kupon> {
        return anggotaKupon
    }
}