Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2019
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 10.74 KB | None | 0 0
  1. package ym.com.home.payment
  2.  
  3. import android.content.Intent
  4. import android.graphics.Color
  5. import android.graphics.drawable.ColorDrawable
  6. import android.os.Bundle
  7. import android.view.LayoutInflater
  8. import android.view.View
  9. import android.widget.TextView
  10. import androidx.core.content.ContextCompat
  11. import androidx.fragment.app.Fragment
  12. import androidx.fragment.app.FragmentManager
  13. import androidx.fragment.app.FragmentPagerAdapter
  14. import androidx.viewpager.widget.ViewPager
  15. import base.app.core.base.BaseActivity
  16. import com.google.android.material.tabs.TabLayout
  17. import base.app.core.util.showToast
  18. import kotlinx.android.synthetic.main.activity_payment_method.*
  19. import androidx.databinding.adapters.TextViewBindingAdapter.setText
  20. import androidx.lifecycle.Observer
  21. import base.app.core.constant.Payment
  22. import base.app.core.routing.HomeRoute
  23. import base.app.core.util.intentTo
  24. import base.app.core.util.showAlertSimple
  25. import com.midtrans.sdk.corekit.core.Constants
  26. import com.midtrans.sdk.corekit.core.MidtransSDK
  27. import com.midtrans.sdk.corekit.core.PaymentMethod
  28. import com.midtrans.sdk.uikit.views.alfamart.payment.AlfamartPaymentActivity
  29. import com.midtrans.sdk.uikit.views.banktransfer.payment.BankTransferPaymentActivity
  30. import com.midtrans.sdk.uikit.views.creditcard.saved.SavedCreditCardActivity
  31. import com.midtrans.sdk.uikit.views.indomaret.payment.IndomaretPaymentActivity
  32. import org.koin.android.viewmodel.ext.android.viewModel
  33. import org.koin.ext.getFullName
  34. import ym.com.home.R
  35. import ym.com.home.payment.model.PaymentViewModel
  36.  
  37. class PaymentMethodActivity : BaseActivity(),
  38.     PaymentMethodFragment.PaymentMethodListener,
  39.     PaymentCodeReferalDialogFragment.DialogCallback {
  40.  
  41.     private var referralCode:String? = null
  42.     private val viewModel: PaymentViewModel by viewModel()
  43.     private var adapter: ViewPagerAdapter? = null
  44.     private var paymentMethodSelected:String? = null
  45.  
  46.     override fun onCreate(savedInstanceState: Bundle?) {
  47.         super.onCreate(savedInstanceState)
  48.         setContentView(R.layout.activity_payment_method)
  49.         window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
  50.         setupViewPager(viewPager)
  51.         initView()
  52.         initListener()
  53.         setObserver()
  54.     }
  55.  
  56.     private fun initView() {
  57.         //custom ViewPager
  58.         viewPager.offscreenPageLimit = 2
  59.         viewPager.disableScroll(true)
  60.  
  61.         //custom TabLayout
  62.         tabLayout.setupWithViewPager(viewPager)
  63.         tabLayout.setSelectedTabIndicatorColor(ContextCompat.getColor(this, R.color.white))
  64.         tabLayout.getTabAt(0)?.setCustomView(R.layout.tab_payment_state)//sementara pakai static view
  65.         tabLayout.getTabAt(1)?.setCustomView(R.layout.tab_payment_state_two)
  66.         //adapter?.initTabView()//didn't work using child view (dynamic)
  67.     }
  68.  
  69.     private fun initListener() {
  70.  
  71.         imageBack.setOnClickListener {
  72.             super.onBackPressed()
  73.         }
  74.  
  75.         buttonLanjut.setOnClickListener {
  76.             val pos = viewPager.currentItem
  77.             if(pos == 0){
  78.                 viewPager.currentItem = 1
  79.             } else if (pos == 1 && viewModel.paymentChannel != "" || !referralCode.isNullOrEmpty()){
  80.                 //viewModel.paymentChannel = paymentMethodSelected!!
  81.                 //intentPayment(paymentMethodSelected)
  82.  
  83.                 // send request
  84.                 showLoading()
  85.                 viewModel.submitPayMidtrans(this, config.token())
  86.             } else {
  87.  
  88.             }
  89.         }
  90.  
  91.         tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
  92.             override fun onTabSelected(tab: TabLayout.Tab) {
  93.                 val view = tab.customView
  94.                 val textNomor = view?.findViewById<View>(R.id.textNomor) as TextView
  95.                 val textJudul = view.findViewById<View>(R.id.textJudul) as TextView
  96.                 textNomor.setTextColor(ContextCompat.getColor(this@PaymentMethodActivity, R.color.colorGreyDark))
  97.                 textNomor.background = ContextCompat.getDrawable(this@PaymentMethodActivity, R.drawable.bg_payment_method_circle_active)
  98.                 textJudul.setTextColor(ContextCompat.getColor(this@PaymentMethodActivity, R.color.colorGreyDark))
  99.             }
  100.  
  101.             override fun onTabUnselected(tab: TabLayout.Tab) {
  102.                 val view = tab.customView
  103.                 val textNomor = view?.findViewById<View>(R.id.textNomor) as TextView
  104.                 val textJudul = view.findViewById<View>(R.id.textJudul) as TextView
  105.                 textNomor.setTextColor(ContextCompat.getColor(this@PaymentMethodActivity, R.color.grey_500))
  106.                 textNomor.background = ContextCompat.getDrawable(this@PaymentMethodActivity, R.drawable.bg_payment_method_circle_unactive)
  107.                 textJudul.setTextColor(ContextCompat.getColor(this@PaymentMethodActivity, R.color.grey_500))
  108.             }
  109.  
  110.             override fun onTabReselected(tab: TabLayout.Tab) {
  111.  
  112.             }
  113.         })
  114.  
  115.         // set default position
  116.         viewPager.currentItem = 0
  117.     }
  118.  
  119.     private fun setupViewPager(viewPager: ViewPager) {
  120.         var adapter = ViewPagerAdapter(supportFragmentManager)
  121.         adapter.addFrag(PaymentPackageDetailFragment(), "Paket Pembayaran")
  122.         adapter.addFrag(PaymentMethodFragment(), "Payment Method")
  123.         viewPager.adapter = adapter
  124.         adapter = ViewPagerAdapter(supportFragmentManager)
  125.         adapter?.addFrag(PaymentPackageDetailFragment(), "Paket Pembayaran")
  126.         adapter?.addFrag(PaymentMethodFragment(this@PaymentMethodActivity), "Payment Method")
  127.         viewPager.setAdapter(adapter)
  128.     }
  129.  
  130.     inner class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) {
  131.  
  132.         private val mFragmentList = ArrayList<Fragment>()
  133.         private val mFragmentTitleList = ArrayList<String>()
  134.  
  135.         override fun getCount(): Int {
  136.             return mFragmentList.size
  137.         }
  138.  
  139.         override fun getItem(position: Int): Fragment {
  140.             if (position == 0) {
  141.  
  142.             }
  143.             return mFragmentList.get(position)
  144.         }
  145.  
  146.         fun addFrag(fragment: Fragment, title: String) {
  147.             mFragmentList.add(fragment)
  148.             mFragmentTitleList.add(title)
  149.         }
  150.  
  151.         override fun getPageTitle(position: Int): CharSequence {
  152.             return mFragmentTitleList.get(position)
  153.         }
  154.  
  155.         fun getTabView(position: Int): View {
  156.             val v = LayoutInflater.from(applicationContext).inflate(R.layout.tab_payment_state, null)
  157.             val textNomor = v.findViewById(R.id.textNomor) as TextView
  158.             val textJudul = v.findViewById(R.id.textJudul) as TextView
  159.  
  160.             textJudul.isAllCaps = false
  161.  
  162.             //textNomor.setText((position+1).toString())
  163.             textNomor.text = "1"
  164.             textJudul.text = mFragmentTitleList.get(position)
  165.             return v
  166.         }
  167.     }
  168.  
  169.     override fun onBackPressed() {
  170.         val currentPos = viewPager.currentItem
  171.         if(currentPos == 1){
  172.             viewPager.currentItem = 0
  173.         } else {
  174.             super.onBackPressed()
  175.         }
  176.     }
  177.  
  178.     fun intentPayment(payMethod:String?){
  179.  
  180.         when(payMethod){
  181.             Payment.TELOMSEL_CASH ->{
  182. //                val intent = Intent(this@PaymentMethodActivity, TelkomselCashPaymentActivity::class.java)
  183. //                startActivityForResult(intent, Constants.RESULT_CODE_PAYMENT_TRANSFER)
  184. //                if (MidtransSDK.getInstance().uiKitCustomSetting != null && MidtransSDK.getInstance().uiKitCustomSetting.isEnabledAnimation) {
  185. //                    overridePendingTransition(R.anim.slide_in, R.anim.slide_out)
  186. //                }
  187.  
  188.                 MidtransSDK.getInstance().startPaymentUiFlow(this@PaymentMethodActivity, PaymentMethod.TELKOMSEL_CASH, "snap_token")
  189.             }
  190.             Payment.INDOMARET ->{
  191.                 val intent = Intent(this@PaymentMethodActivity, IndomaretPaymentActivity::class.java)
  192.                 startActivityForResult(intent, Constants.RESULT_CODE_PAYMENT_TRANSFER)
  193.                 if (MidtransSDK.getInstance().uiKitCustomSetting != null && MidtransSDK.getInstance().uiKitCustomSetting.isEnabledAnimation) {
  194.                     overridePendingTransition(R.anim.slide_in, R.anim.slide_out)
  195.                 }
  196.             }
  197.             Payment.ALFAMART ->{
  198.                 val intent = Intent(this@PaymentMethodActivity, AlfamartPaymentActivity::class.java)
  199.                 startActivityForResult(intent, Constants.RESULT_CODE_PAYMENT_TRANSFER)
  200.                 if (MidtransSDK.getInstance().uiKitCustomSetting != null && MidtransSDK.getInstance().uiKitCustomSetting.isEnabledAnimation) {
  201.                     overridePendingTransition(R.anim.slide_in, R.anim.slide_out)
  202.                 }
  203.             }
  204.             Payment.BANK_TRANSFER ->{
  205.                 val intent = Intent(this@PaymentMethodActivity, BankTransferPaymentActivity::class.java)
  206.                 startActivityForResult(intent, Constants.RESULT_CODE_PAYMENT_TRANSFER)
  207.                 if (MidtransSDK.getInstance().uiKitCustomSetting != null && MidtransSDK.getInstance().uiKitCustomSetting.isEnabledAnimation) {
  208.                     overridePendingTransition(R.anim.slide_in, R.anim.slide_out)
  209.                 }
  210.             }
  211.             Payment.GOPAY ->{
  212.  
  213.             }
  214.             Payment.CREDIT_CARD ->{
  215.                 val intent = Intent(this@PaymentMethodActivity, SavedCreditCardActivity::class.java)
  216.                 startActivityForResult(intent, Constants.RESULT_CODE_PAYMENT_TRANSFER)
  217.                 if (MidtransSDK.getInstance().uiKitCustomSetting != null && MidtransSDK.getInstance().uiKitCustomSetting.isEnabledAnimation) {
  218.                     overridePendingTransition(R.anim.slide_in, R.anim.slide_out)
  219.                 }
  220.             }
  221.             else ->{
  222.                 showAlertSimple(this, "Pilih payment channel terlebih dahulu atau isi referral code")
  223.             }
  224.         }
  225.     }
  226.  
  227.     override fun doPaymentMethodSelected(paymentMethod: String?) {
  228.         paymentMethodSelected = paymentMethod
  229.         viewModel.paymentChannel = paymentMethodSelected!!
  230.     }
  231.  
  232.     override fun doOpenReferralCodeDialog() {
  233.         val dialog = PaymentCodeReferalDialogFragment()
  234.         dialog.show(supportFragmentManager!!, "PaymentCodeReferalDialogFragment")
  235.     }
  236.  
  237.     override fun onSubmitReferralCode(refCode: String) {
  238.         this.referralCode = refCode
  239.         viewModel.refCode = referralCode!!
  240.     }
  241.  
  242.     private fun setObserver() {
  243.         viewModel.isSubmitSuccess.observe(this, Observer {
  244.             dismissLoading()
  245.             viewModel.callAfterSubmit()
  246.         })
  247.  
  248.         viewModel.isPaymentCallback.observe(this, Observer {
  249.             intentTo(this, routingView.getRoute(HomeRoute.RoutePaymentResult)!!, true, false)
  250.         })
  251.     }
  252.  
  253. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement