package com.proyek.akhir.kodel.ui.koperasi.beranda

import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.Penunggak
import com.proyek.akhir.kodel.data.response.Utang
import com.proyek.akhir.kodel.data.response.UtangItem
import com.proyek.akhir.kodel.ui.koperasi.beranda.isisaldo.IsiSaldoActivity
import com.proyek.akhir.kodel.ui.koperasi.beranda.jatuhtempo.JatuhTempoActivity
import com.proyek.akhir.kodel.ui.koperasi.beranda.pengguna.PenggunaActivity
import com.proyek.akhir.kodel.ui.koperasi.beranda.pinjaman.PeminjamKoperasiActivity
import com.proyek.akhir.kodel.ui.koperasi.beranda.tariksaldo.TarikSaldoActivity
import com.proyek.akhir.kodel.ui.user.dashboard.DashboardViewModel
import kotlinx.android.synthetic.main.fragment_beranda.*
import kotlinx.android.synthetic.main.fragment_beranda.view.*
import kotlinx.android.synthetic.main.fragment_beranda.view.penunggakKoperasi
import kotlinx.android.synthetic.main.fragment_beranda.view.rvPenunggakKoperasi
import kotlinx.android.synthetic.main.item_isi_saldo.view.*

class BerandaFragment : Fragment() {
    private val listPenunggak: MutableList<UtangItem> = mutableListOf()
    private lateinit var penunggakKoperasiAdapter: PenunggakKoperasiAdapter

    private lateinit var dashboardViewModel: DashboardViewModel

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        dashboardViewModel =
            ViewModelProvider(this).get(DashboardViewModel::class.java)
        val root = inflater.inflate(R.layout.fragment_beranda, container, false)

        root.rvPenunggakKoperasi.setHasFixedSize(true)

        root.rvPenunggakKoperasi.layoutManager =
            LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)

        root.swipeBarBeranda.setOnRefreshListener {
            root.swipeBarBeranda.isRefreshing = true
            callPenunggak()
            root.swipeBarBeranda.isRefreshing = false
        }

        penunggakKoperasiAdapter = PenunggakKoperasiAdapter(listPenunggak)
        root.rvPenunggakKoperasi.adapter = penunggakKoperasiAdapter

        root.btnPinjaman.setOnClickListener {
            startActivity(Intent(activity, PeminjamKoperasiActivity::class.java))
        }

        root.btnIsiSaldoKoperasi.setOnClickListener {
            startActivity(Intent(activity, IsiSaldoActivity::class.java))
        }

        root.btnJatuhTempo.setOnClickListener {
            startActivity(Intent(activity, JatuhTempoActivity::class.java))
        }

        root.btnTarikSaldoKoperasi.setOnClickListener {
            startActivity(Intent(activity, TarikSaldoActivity::class.java))
        }

        root.penggunaKoperasi.setOnClickListener {
            startActivity(Intent(activity, PenggunaActivity::class.java))
        }

        root.swipeBarBeranda.isRefreshing = true
        callPenunggak()
        return root
    }


    private fun callPenunggak() {
        dashboardViewModel = ViewModelProvider(this).get(DashboardViewModel::class.java)
        dashboardViewModel.setDataPenunggak().observe(viewLifecycleOwner, Observer { penunggak ->
            if (penunggak != null) {
                swipeBarBeranda.isRefreshing = false
                listPenunggak.clear()
                if (penunggak.size < 2) {
                    penunggakKoperasi.visibility = View.GONE
                } else {
                    penunggakKoperasi.visibility = View.VISIBLE
                }
                for (i in 0 until penunggak.size) {
                    listPenunggak.add(penunggak[i])
                }
            } else {
                swipeBarBeranda.isRefreshing = false
                lnrPenunggakKoperasi.visibility = View.INVISIBLE
                rvPenunggakKoperasi.visibility = View.INVISIBLE
            }
        })
    }
}
