blob: 1763c9565828c5d6c1c43de8f2656648ffcb6c7f [file] [log] [blame]
package org.apache.fineract.ui.online.customers.customerpayroll
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import kotlinx.android.synthetic.main.fragment_payroll.*
import kotlinx.android.synthetic.main.layout_exception_handler.*
import org.apache.fineract.R
import org.apache.fineract.data.models.payroll.PayrollConfiguration
import org.apache.fineract.ui.base.FineractBaseActivity
import org.apache.fineract.ui.base.FineractBaseFragment
import org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll.EditPayrollActivity
import org.apache.fineract.utils.ConstantKeys
import javax.inject.Inject
class PayrollFragment : FineractBaseFragment(), PayrollContract.View {
@Inject
lateinit var payrollPresenter: PayrollPresenter
lateinit var customerIdentifier: String
lateinit var payrollConfiguration: PayrollConfiguration
companion object {
fun newInstance(customerIdentifier: String) =
PayrollFragment().apply {
arguments = Bundle().apply {
putString(ConstantKeys.CUSTOMER_IDENTIFIER, customerIdentifier)
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
customerIdentifier = it.getString(ConstantKeys.CUSTOMER_IDENTIFIER)
}
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val rootView = inflater.inflate(R.layout.fragment_payroll, container, false)
(activity as FineractBaseActivity).activityComponent.inject(this)
payrollPresenter.attachView(this)
initializeFineractUIErrorHandler(activity, rootView)
return rootView
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
showUserInterface()
btn_try_again.setOnClickListener {
layoutError.visibility = View.GONE
payrollPresenter.getPayrollConfiguration(customerIdentifier)
}
fabEditPayroll.setOnClickListener{
val intent = Intent(activity,EditPayrollActivity::class.java)
intent.putExtra(ConstantKeys.PAYROLL_CONFIG, payrollConfiguration)
intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER,customerIdentifier)
startActivity(intent)
}
payrollPresenter.getPayrollConfiguration(customerIdentifier)
}
override fun showUserInterface() {
setToolbarTitle(getString(R.string.payroll))
clPayroll.visibility = View.INVISIBLE
}
override fun showPayrollConfiguration(payrollConfiguration: PayrollConfiguration) {
this.payrollConfiguration = payrollConfiguration
clPayroll.visibility = View.VISIBLE
tvAccount.text = payrollConfiguration.mainAccountNumber
tvCreatedBy.text = payrollConfiguration.createdBy
tvLastModifiedBy.text = payrollConfiguration.lastModifiedBy
if (payrollConfiguration.payrollAllocations.isEmpty()) {
tvPayrollAllocations.text = getString(R.string.no_payroll_allocation)
} else {
val accNo = StringBuilder()
payrollConfiguration.payrollAllocations.forEach {
accNo.append("${it.accountNumber}\n")
}
tvPayrollAllocations.text = accNo.toString()
}
}
override fun showProgressbar() {
showMifosProgressBar()
}
override fun hideProgressbar() {
hideMifosProgressBar()
}
override fun showNoInternetConnection() {
clPayroll.visibility = View.INVISIBLE
showFineractNoInternetUI()
}
override fun showError(message: String?) {
showFineractErrorUI(getString(R.string.payroll_configuration))
}
override fun onDestroyView() {
super.onDestroyView()
payrollPresenter.detachView()
}
}