From 5fd5acf6808a72511919eaa6b5b5536dd04a513d Mon Sep 17 00:00:00 2001 From: Preyea Regmi Date: Wed, 25 Dec 2019 17:37:30 +0545 Subject: [PATCH] API integration completed, testing is due --- .../presenter/KYCV3PresenterInterface.java | 7 ++ .../kycV3/presenter/KYCV3ViewModel.java | 92 ++++++++++++++++--- .../kycV3/view/KYCV3Activity.java | 50 +++++----- .../view/penny/PerformPennyTestFragment.java | 32 ++++--- 4 files changed, 131 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3PresenterInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3PresenterInterface.java index e70128ed..706e4f2d 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3PresenterInterface.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3PresenterInterface.java @@ -19,6 +19,7 @@ import io.reactivex.Observable; public interface KYCV3PresenterInterface extends BasePresenterInterface { void onCustomerDetailFormReady(boolean isReady); + void onPennyTestFormReady(boolean isReady); LiveData getCustomerDetailRelatedFormLiveData(); CustomerDetailErrorLiveDataDTO getCustomerDetailRelatedFormErrorLiveData(); @@ -67,6 +68,10 @@ public interface KYCV3PresenterInterface extends BasePresenterInterface { void updateBankInfoUponVerification(String bankCode,String bankName); + LiveData getPennyTestReferenceErrorLiveData(); + + void perfromPennyTest(); + interface KYCV3ViewContractInterface extends BaseContractInterface { @@ -78,6 +83,8 @@ public interface KYCV3PresenterInterface extends BasePresenterInterface { void navigateToPennyTestConfirmView(); + void onPennyTestCompleted(); + interface KYCV3CustomerDetailViewContractInterface extends BaseContractInterface { diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java index 566370d1..2b5cacd1 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java @@ -62,6 +62,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter private MutableLiveData selectedBankIconLiveData; private MutableLiveData penntestReferenceSubmissionLiveData; + private MutableLiveData penntestReferenceErrorMessageLiveData; private final CompositeDisposable compositeDisposable; @@ -95,6 +96,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter selectedBankIconLiveData = new MutableLiveData<>(); this.penntestReferenceSubmissionLiveData = new MutableLiveData<>(); + this.penntestReferenceErrorMessageLiveData = new MutableLiveData<>(); } @@ -138,29 +140,34 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter } })); - setupForm3Validation(); getDummyKYCRelatedData(); // getKycRelatedData(); } + @Override + public void onPennyTestFormReady(boolean isReady) { + setupForm3Validation(); + + } + private void setupForm3Validation() { compositeDisposable.add( - this.view.getPennyTestViewContract().getPennyTestReferenceViewBindings().subscribeWith(new DisposableObserver() { - @Override - public void onNext(CharSequence charSequence) { - penntestReferenceSubmissionLiveData.setValue(validator.validatePennyTestReference(charSequence)); - } + this.view.getPennyTestViewContract().getPennyTestReferenceViewBindings().subscribeWith(new DisposableObserver() { + @Override + public void onNext(CharSequence charSequence) { + penntestReferenceSubmissionLiveData.setValue(validator.validatePennyTestReference(charSequence)); + } - @Override - public void onError(Throwable e) { + @Override + public void onError(Throwable e) { - } + } - @Override - public void onComplete() { + @Override + public void onComplete() { - } - })); + } + })); } private void getDummyKYCRelatedData() { @@ -283,6 +290,23 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter selectedBankIconLiveData.setValue(BankIconMapper.getBankIconFromBankCode(bankName)); } + @Override + public LiveData getPennyTestReferenceErrorLiveData() { + return penntestReferenceErrorMessageLiveData; + } + + @Override + public void perfromPennyTest() { + compositeDisposable.add( + this.gateway.postDataForPennyTest(this.gateway.getAuth(), this.gateway.getBankAccountNumber(), validator.getEnteredPennyTestReference(), this.gateway.getUserIDNumber()) + .doOnSubscribe(subs->view.showProgressBar(true,"")) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .doFinally(()->view.showProgressBar(false,"")) + .subscribeWith(new PennyTestResultObserver()) + ); + } + public void checkImageStatus(int requestCode, int resultCode, File data, float thumbnailHeight, float thumbnailWidth) { if (data == null) { view.showToastMessage(getStringfromStringId(R.string.no_image_available_text)); @@ -791,8 +815,15 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter } public boolean validatePennyTestReference(CharSequence reference) { - this.enteredPennyTestReference = reference+""; - return reference == null || reference.length() != 4; + this.enteredPennyTestReference = reference + ""; + boolean result = reference == null || reference.length() != 4; + if (result) + penntestReferenceErrorMessageLiveData.setValue("Refrence code must be 4 digit"); + else + penntestReferenceErrorMessageLiveData.setValue(null); + + return !result; + } @@ -933,4 +964,35 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter } } + public class PennyTestResultObserver extends GenericApiObserverResponseV2 { + + + @Override + protected void onSuccess(GenericResponseDataModel t) { + if (t.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) { + view.showPopUpMessage(t.getMsg(), CustomAlertDialog.AlertType.SUCCESS,alertType -> view.onPennyTestCompleted()); + } else { + view.showPopUpMessage(t.getMsg(), CustomAlertDialog.AlertType.FAILED,null); + } + } + + @Override + public void onFailed(String message) { + view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED,null); + + } + + @Override + protected void onConnectionNotEstablished(String message) { + view.showPopUpMessage(message, CustomAlertDialog.AlertType.NO_INTERNET, null); + } + + @Override + protected void unauthorizedAccess(String message) { + gateway.clearAllUserData(); + view.showPopUpMessage(message, CustomAlertDialog.AlertType.ALERT, alertType -> view.logout()); + + } + } + } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/KYCV3Activity.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/KYCV3Activity.java index 17d853dc..761a28ed 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/KYCV3Activity.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/KYCV3Activity.java @@ -75,13 +75,12 @@ public class KYCV3Activity extends BaseActivity implements KYCV3PresenterInterfa private void initialize() { toolbarTitle.setText(getString(R.string.penny_test_pending_text)); setupViewPager(); - KYCV3ViewModelFactory kycv3ViewModelFactory= new KYCV3ViewModelFactory(this); - viewModel= ViewModelProviders.of(this,kycv3ViewModelFactory).get(KYCV3ViewModel.class); + KYCV3ViewModelFactory kycv3ViewModelFactory = new KYCV3ViewModelFactory(this); + viewModel = ViewModelProviders.of(this, kycv3ViewModelFactory).get(KYCV3ViewModel.class); } - private void setupViewPager() { kycViewPagerAdapter = new GenericViewPagerAdapter(getSupportFragmentManager()); @@ -107,11 +106,9 @@ public class KYCV3Activity extends BaseActivity implements KYCV3PresenterInterfa kycFormViewPager.setAdapter(kycViewPagerAdapter); - } - public void onAutoDebitScreenShown() - { + public void onAutoDebitScreenShown() { TransitionManager.beginDelayedTransition(kyc_header_view); page1TxtView.setTextColor(ContextCompat.getColor(page1TxtView.getContext(), R.color.white)); page1TxtView.setBackgroundResource(R.drawable.circular_valid_bg); @@ -125,8 +122,7 @@ public class KYCV3Activity extends BaseActivity implements KYCV3PresenterInterfa } - public void onPennyTestScreenShown() - { + public void onPennyTestScreenShown() { TransitionManager.beginDelayedTransition(kyc_header_view); page1TxtView.setTextColor(ContextCompat.getColor(page1TxtView.getContext(), R.color.white)); page1TxtView.setBackgroundResource(R.drawable.circular_valid_bg); @@ -137,8 +133,8 @@ public class KYCV3Activity extends BaseActivity implements KYCV3PresenterInterfa page3TxtView.setTextColor(ContextCompat.getColor(page3TxtView.getContext(), R.color.white)); page3TxtView.setBackgroundResource(R.drawable.circular_valid_bg); } - public void onCustomerRegistration() - { + + public void onCustomerRegistration() { TransitionManager.beginDelayedTransition(kyc_header_view); page1TxtView.setTextColor(ContextCompat.getColor(page1TxtView.getContext(), R.color.white)); @@ -165,12 +161,16 @@ public class KYCV3Activity extends BaseActivity implements KYCV3PresenterInterfa } - @Override public KYCV3CustomerDetailViewContractInterface getCustomerDetailViewContract() { return customerDetailFragment; } + @Override + public PennyTestViewContractInterface getPennyTestViewContract() { + return pennyTestFragment; + } + @Override public void onKYCFormSubmittedSuccessfully() { kycFormViewPager.setCurrentItem(1); @@ -181,6 +181,11 @@ public class KYCV3Activity extends BaseActivity implements KYCV3PresenterInterfa kycFormViewPager.setCurrentItem(2); } + @Override + public void onPennyTestCompleted() { + exitView(); + } + @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { @@ -188,18 +193,17 @@ public class KYCV3Activity extends BaseActivity implements KYCV3PresenterInterfa @Override public void onPageSelected(int position) { - switch (position) - { - case 0: - onCustomerRegistration(); - break; - case 1: - onAutoDebitScreenShown(); - break; - case 2: - onPennyTestScreenShown(); - break; - } + switch (position) { + case 0: + onCustomerRegistration(); + break; + case 1: + onAutoDebitScreenShown(); + break; + case 2: + onPennyTestScreenShown(); + break; + } } @Override diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/penny/PerformPennyTestFragment.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/penny/PerformPennyTestFragment.java index 65197f25..ad70fe15 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/penny/PerformPennyTestFragment.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/penny/PerformPennyTestFragment.java @@ -4,6 +4,7 @@ import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; @@ -17,6 +18,7 @@ import com.gmeremit.online.gmeremittance_native.base.BaseFragment; import com.gmeremit.online.gmeremittance_native.kycV3.presenter.KYCV3PresenterInterface; import com.gmeremit.online.gmeremittance_native.kycV3.presenter.KYCV3ViewModel; import com.gmeremit.online.gmeremittance_native.utils.other.Utility; +import com.google.android.material.textfield.TextInputLayout; import com.jakewharton.rxbinding3.widget.RxTextView; import butterknife.BindView; @@ -41,9 +43,16 @@ public class PerformPennyTestFragment extends BaseFragment implements KYCV3Prese @BindView(R.id.bankIcon) ImageView bankIcon; + + @BindView(R.id.depositReferenceInputWrapper) + TextInputLayout depositReferenceInputWrapper; + @BindView(R.id.ed_creditNumber) EditText ed_creditNumber; + @BindView(R.id.pennyTestCompleteButton) + Button pennyTestCompleteButton; + @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_kyc_perform_penny_test, container, false); @@ -65,19 +74,18 @@ public class PerformPennyTestFragment extends BaseFragment implements KYCV3Prese private void performDefaultAction(Bundle savedInstance) { KYCV3ViewModel kycv3ViewModel = ViewModelProviders.of(getActivity()).get(KYCV3ViewModel.class); - kycv3ViewModel.getPennyTestMessageLiveData().observe(getViewLifecycleOwner(), message -> { - - }); - kycv3ViewModel.getSelectedBankNameLiveData().observe(getViewLifecycleOwner(), bankName -> { - bankNameTxtView.setText(bankName); - }); - kycv3ViewModel.getEnteredBankAccountNoLiveData().observe(getViewLifecycleOwner(), bankAccountNumber -> { - bankAccNoTxtView.setText(bankAccountNumber); - }); - kycv3ViewModel.getSelectedBankIconCodeLiveData().observe(getViewLifecycleOwner(), resIcon -> { - bankIcon.setImageResource(resIcon); - }); + kycv3ViewModel.getPennyTestMessageLiveData().observe(getViewLifecycleOwner(), message -> txt_pennytest_msg.setText(message)); + kycv3ViewModel.getSelectedBankNameLiveData().observe(getViewLifecycleOwner(), bankName -> bankNameTxtView.setText(bankName)); + kycv3ViewModel.getEnteredBankAccountNoLiveData().observe(getViewLifecycleOwner(), bankAccountNumber -> bankAccNoTxtView.setText(bankAccountNumber)); + kycv3ViewModel.getSelectedBankIconCodeLiveData().observe(getViewLifecycleOwner(), resIcon -> bankIcon.setImageResource(resIcon)); + kycv3ViewModel.getPennyTestReferenceErrorLiveData().observe(getViewLifecycleOwner(), errorMessage -> depositReferenceInputWrapper.setError(errorMessage)); + kycv3ViewModel.getPennyTestReferenceSubmissionLiveData().observe(getViewLifecycleOwner(), action -> pennyTestCompleteButton.setEnabled(action)); + kycv3ViewModel.onPennyTestFormReady(true); + } + @OnClick(R.id.pennyTestCompleteButton) + public void perfromPennyTest() { + ViewModelProviders.of(getActivity()).get(KYCV3ViewModel.class).perfromPennyTest(); } @OnClick(R.id.resend_request)