blob: 485165598265c5315596d3be13a65ebf3fb873b3 [file] [log] [blame]
package org.apache.fineract.ui.online.loanaccounts.loanapplication.loancosigner;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.gson.Gson;
import com.stepstone.stepper.Step;
import com.stepstone.stepper.VerificationError;
import org.apache.fineract.R;
import org.apache.fineract.data.models.loan.CreditWorthinessSnapshot;
import org.apache.fineract.data.models.loan.LoanAccount;
import org.apache.fineract.data.models.loan.LoanParameters;
import org.apache.fineract.ui.base.FineractBaseActivity;
import org.apache.fineract.ui.base.Toaster;
import org.apache.fineract.ui.online.loanaccounts.loanapplication.BaseFragmentDebtIncome;
import org.apache.fineract.ui.online.loanaccounts.loanapplication.LoanApplicationAction;
import org.apache.fineract.ui.online.loanaccounts.loanapplication.OnNavigationBarListener;
import org.apache.fineract.utils.ConstantKeys;
import java.util.List;
import javax.inject.Inject;
import butterknife.BindView;
import butterknife.OnClick;
/**
* @author Rajan Maurya
* On 19/07/17.
*/
public class LoanCoSignerFragment extends BaseFragmentDebtIncome implements Step,
LoanCoSignerContract.View {
@BindView(R.id.et_customer)
AutoCompleteTextView etCustomer;
@BindView(R.id.iv_search_customer)
ImageView ivSearchCustomer;
@Inject
LoanCoSignerPresenter loanCoSignerPresenter;
View rootView;
String[] customers;
private OnNavigationBarListener.LoanCoSignerData onNavigationBarListener;
private LoanAccount loanAccount;
private LoanApplicationAction loanApplicationAction;
private LoanParameters loanParameters;
public static LoanCoSignerFragment newInstance(
LoanAccount loanAccount,
LoanApplicationAction loanApplicationAction) {
LoanCoSignerFragment fragment = new LoanCoSignerFragment();
Bundle args = new Bundle();
args.putSerializable(ConstantKeys.LOAN_APPLICATION_ACTION, loanApplicationAction);
args.putParcelable(ConstantKeys.LOAN_ACCOUNT, loanAccount);
fragment.setArguments(args);
return fragment;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
((FineractBaseActivity) getActivity()).getActivityComponent().inject(this);
loanCoSignerPresenter.attachView(this);
loanApplicationAction = (LoanApplicationAction) getArguments()
.getSerializable(ConstantKeys.LOAN_APPLICATION_ACTION);
if (loanApplicationAction == LoanApplicationAction.EDIT) {
loanAccount = getArguments().getParcelable(ConstantKeys.LOAN_ACCOUNT);
loanParameters = new Gson().fromJson(loanAccount.getParameters(), LoanParameters.class);
etCustomer.setText(
loanParameters.getCreditWorthinessSnapshots().get(0).getForCustomer()
);
}
rootView = view;
}
@OnClick(R.id.iv_search_customer)
void searchCustomer() {
if (TextUtils.isEmpty(etCustomer.getText().toString())) {
Toaster.show(rootView,
getString(R.string.customer_name_should_not_be_empty));
} else {
loanCoSignerPresenter.searchCustomer(etCustomer.getText().toString().trim());
}
}
@Override
protected int getFragmentLayout() {
return R.layout.fragment_loan_co_signer;
}
@Override
public VerificationError verifyStep() {
CreditWorthinessSnapshot creditWorthinessSnapshot = getCreditWorthinessSnapshot();
if (!TextUtils.isEmpty(etCustomer.getText().toString().trim()) && loanCoSignerPresenter
.findCustomer(etCustomer.getText().toString().trim(), customers)) {
creditWorthinessSnapshot.setForCustomer(etCustomer.getText().toString().trim());
}
onNavigationBarListener.setCoSignerDebtIncome(creditWorthinessSnapshot);
return null;
}
@Override
public void onSelected() {
}
@Override
public void onError(@NonNull VerificationError error) {
}
@Override
public void showCustomers(List<String> customer) {
customers = customer.toArray(new String[0]);
ArrayAdapter<String> customerAdapter = new ArrayAdapter<>(getActivity(),
android.R.layout.simple_list_item_1, customers);
etCustomer.setAdapter(customerAdapter);
etCustomer.showDropDown();
}
@Override
public void showProgressbar() {
onNavigationBarListener.showProgressbar(getString(R.string.fetching_customer_please_wait));
}
@Override
public void hideProgressbar() {
onNavigationBarListener.hideProgressbar();
}
@Override
public void showNoInternetConnection() {
Toaster.show(rootView, getString(R.string.no_internet_connection));
}
@Override
public void showError(String message) {
Toaster.show(rootView, getString(R.string.error_loading_customers));
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
Activity activity = context instanceof Activity ? (Activity) context : null;
try {
onNavigationBarListener = (OnNavigationBarListener.LoanCoSignerData) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnNavigationBarListener.LoanCoSignerData");
}
}
}