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

import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.ProdukItem
import com.proyek.akhir.kodel.ui.user.produk.ProdukViewModel
import com.proyek.akhir.kodel.ui.user.produk.konfirmasi.KonfirmasiPembayaranActivity
import kotlinx.android.synthetic.main.activity_pembayaran.*
import java.text.SimpleDateFormat
import java.util.*

class PembayaranActivity : AppCompatActivity() {
    private lateinit var viewModelPembayaran: ProdukViewModel

    private lateinit var jumlahProdukTemp: String
    private var jumlahProduk = 1
    private lateinit var produk: ProdukItem
    private var hargaProdukTemp = 0
    private lateinit var codeKupon: String
    private var potonganKupon = 0.toString()
    private var totalHargaBayar = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_pembayaran)

        jumlahProdukTemp = intent.getStringExtra("jumlahProduk")
        jumlahProduk = jumlahProdukTemp.toInt()

        produk = intent.getParcelableExtra("itemProduk")


        swipeBarPembayaran.setOnRefreshListener {
            swipeBarPembayaran.isRefreshing = true
            showData()
            swipeBarPembayaran.isRefreshing = false
        }

        swipeBarPembayaran.isRefreshing = true
        showData()
        swipeBarPembayaran.isRefreshing = false

        textView11.setOnClickListener {
            jumlahProduk -= 1
            textView19.text = jumlahProduk.toString()
            totalHargaBayar = hargaProdukTemp * jumlahProduk
            totalHarga.text = getString(
                R.string.rp_x,
                (totalHargaBayar - ((potonganKupon.toInt() * totalHargaBayar) / 100)).toString()
            )
        }

        textView10.setOnClickListener {
            jumlahProduk += 1
            textView19.text = jumlahProduk.toString()
            totalHargaBayar = hargaProdukTemp * jumlahProduk
            totalHarga.text = getString(
                R.string.rp_x,
                (totalHargaBayar - ((potonganKupon.toInt() * totalHargaBayar) / 100)).toString()
            )
        }

        btnClaimVoucher.setOnClickListener {
            swipeBarPembayaran.isRefreshing = true
            codeKupon = valueKupon.text.toString()
            checkVoucher(codeKupon)
            swipeBarPembayaran.isRefreshing = false
        }

        btnBayar.setOnClickListener {
            val intent = Intent(this, KonfirmasiPembayaranActivity::class.java)
            intent.putExtra("totalHarga", (totalHargaBayar - ((potonganKupon.toInt() * totalHargaBayar) / 100)).toString())
            startActivity(intent)
        }

        backBtnPembayaran.setOnClickListener {
            onBackPressed()
        }
    }

    private fun showData() {
        Glide.with(this)
            .load(produk.gambarProduk)
            .into(imageView4)
        textView12.text = produk.namaProduk
        hargaProduk.text = produk.hargaProduk.toString()
        textView19.text = jumlahProduk.toString()
        hargaProdukTemp = produk.hargaProduk
        totalHargaBayar = hargaProdukTemp * jumlahProduk
        totalHarga.text = getString(
            R.string.rp_x,
            (totalHargaBayar - ((potonganKupon.toInt() * totalHargaBayar) / 100)).toString()
        )
        totalHarga.text = getString(R.string.rp_x, (hargaProdukTemp * jumlahProduk).toString())
    }

    private fun checkVoucher(codeKupon: String) {
        viewModelPembayaran = ViewModelProvider(this).get(ProdukViewModel::class.java)
        viewModelPembayaran.getKuponItem(codeKupon)
        viewModelPembayaran.setDataKupon().observe(this, Observer { kupon ->
            if (kupon.size != 0 || kupon != null) {
                val inputFormatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US)
                val datePinjamApi = inputFormatter.parse(kupon.first().validity)
                val millionSeconds = datePinjamApi?.time?.minus(Calendar.getInstance().timeInMillis)
                if (millionSeconds!! < 1) {
                    Toast.makeText(this, "Maaf Token Tidak Berlaku Lagi", Toast.LENGTH_LONG)
                        .show()
                } else {
                    Toast.makeText(this, "Voucher Berhasil!", Toast.LENGTH_LONG)
                        .show()
                    potonganKupon = kupon[0].valuekupon.toString()

                    totalHarga.text = getString(
                        R.string.rp_x,
                        (totalHargaBayar - ((potonganKupon.toInt() * totalHargaBayar) / 100)).toString()
                    )
                }

            } else {
                Toast.makeText(this, "Maaf Kupon Tidak Valid", Toast.LENGTH_SHORT).show()
            }
        })
    }
}
