coding-blocks/CBOnlineApp

View on GitHub
app/src/main/java/com/codingblocks/cbonlineapp/course/checkout/CheckoutOrderDetailsFragment.kt

Summary

Maintainability
A
3 hrs
Test Coverage
package com.codingblocks.cbonlineapp.course.checkout

import android.graphics.Paint
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.lifecycle.observe
import com.codingblocks.cbonlineapp.R
import com.codingblocks.cbonlineapp.baseclasses.BaseCBFragment
import com.codingblocks.cbonlineapp.util.extensions.hideAndStop
import com.codingblocks.cbonlineapp.util.extensions.replaceFragmentSafely
import com.codingblocks.cbonlineapp.util.glide.loadImage
import kotlinx.android.synthetic.main.fragment_checkout_order_details.*
import org.jetbrains.anko.AnkoLogger
import org.jetbrains.anko.support.v4.toast
import org.koin.androidx.viewmodel.ext.android.sharedViewModel

class CheckoutOrderDetailsFragment : BaseCBFragment(), AnkoLogger {

    val vm by sharedViewModel<CheckoutViewModel>()

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?):
        View? = inflater.inflate(R.layout.fragment_checkout_order_details, container, false)

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        checkoutShimmer.showShimmer(true)
        vm.cart.observe(thisLifecycleOwner) { res ->
            checkoutShimmer.hideAndStop()
            if (res == null) {
                emptyCart.isVisible = true
                cartLayout.isVisible = false
            } else {
                emptyCart.isVisible = false
                cartLayout.isVisible = true
                orderBtn.isEnabled = true
                finalPriceTv.text = getString(R.string.rupee_price, res["totalAmount"].asString)
                res.getAsJsonObject("cartItems")?.run {
                    courseTitleTv.text = get("productDescription")?.asString
                    courseLogoImg.loadImage(get("image_url").asString)
                    batchTileTv.text = get("productName").asString
                    val price = get("final_price").asInt.div(100)
                    val credits = get("credits_used").asInt.div(100)
                    val mrp = get("list_price").asInt.div(100)
                    val tax = get("tax").asDouble.div(100)

                    priceTv.text = getString(R.string.rupee_price, price.toString())
                    creditsTv.text = getString(R.string.rupee_price, credits.toString())
                    mrpTv.apply {
                        text = getString(R.string.rupee_price, mrp.toString())
                        paintFlags = mrpTv.paintFlags or
                            Paint.STRIKE_THRU_TEXT_FLAG
                    }

                    vm.map["invoice_id"] = get("invoice_id").asString
                    subTotalTv.text = getString(R.string.rupee_price, price.toString())
                    totalTv.text = getString(R.string.rupee_price, (price - credits).toString())
                    taxesTv.text = getString(R.string.rupee_price, tax.toString())
                }
                orderBtn.setOnClickListener {
                    replaceFragmentSafely(
                        CheckoutPersonalDetailsFragment(),
                        containerViewId = R.id.checkoutContainer,
                        addToStack = true
                    )
                }
                removeProduct.setOnClickListener {
                    toast("Items Removed")
                    vm.clearCart()
                    emptyCart.isVisible = true
                    cartLayout.isVisible = false
                }
            }
        }

        exploreBtn.setOnClickListener { requireActivity().finish() }
        removeProduct.setOnClickListener(null)
    }
}