From 6f94ce371ba191ca34e4ada0910a9549f2cccd55 Mon Sep 17 00:00:00 2001 From: Preyea Regmi Date: Fri, 10 Jan 2020 14:20:50 +0545 Subject: [PATCH] KYC Customer Form Validation completed --- .../kycV3/model/IDTypeDTO.java | 5 + .../kycV3/presenter/KYCV3ViewModel.java | 145 +++++++++--------- .../view/personal/CustomerDetailFragment.java | 18 +-- 3 files changed, 88 insertions(+), 80 deletions(-) diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/model/IDTypeDTO.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/model/IDTypeDTO.java index 1147a2b7..02e28c86 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/model/IDTypeDTO.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/model/IDTypeDTO.java @@ -45,6 +45,11 @@ public class IDTypeDTO { this.dependent = dependent; } + public static IDTypeDTO createEmptyInstance() { + IDTypeDTO idTypeDTO = new IDTypeDTO(); + idTypeDTO.setId(null); + return idTypeDTO; + } @Override public String toString() { 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 de02c4b8..5bbec0fe 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 @@ -150,7 +150,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter @Override public void onCustomerDetailFormReady(boolean isReady) { - this.customerDetailViewSubscriptions.add( Observable.combineLatest(form1ValidationSubject, form2ValidationSubject, form3ValidationSubject, (form1Result, form2Result, form3Result) -> { @@ -159,7 +158,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter return form1Result && form2Result && form3Result; }).subscribeWith(new CustomerDetailFormViewBindingObserver())); - this.customerDetailViewSubscriptions.add(setUpForm1Validation().subscribe(result -> form1ValidationSubject.onNext(result))); this.customerDetailViewSubscriptions.add(setUpForm2Validation().subscribe(result -> form2ValidationSubject.onNext(result))); this.customerDetailViewSubscriptions.add(setUpForm3Validation().subscribe(result -> form3ValidationSubject.onNext(result))); @@ -228,7 +226,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter } - private Observable setUpForm2Validation() { List> list = new ArrayList<>(); list.add(this.view.getCustomerDetailViewContract().getForm2ViewBindings().getPrimaryBankChangeEvent().map(val -> validator.validateBank(val))); @@ -259,24 +256,23 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter private Observable setupAlternateIDDependenciesValidation() { return Observable.merge(this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIDNoChangeEvent().map(val -> { log("Alternated Id No started emission: " + val); - return validator.validateAlternateIdNo2(val.toString()); + return validator.validateAlternateIdNo(val.toString()); }), this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIDIssuedDateChangeEvent().map(val -> { log("Alternated Id Issued Date started emission:" + val); - return validator.validateAlternateIDIssuedDate2(val.toString()); + return validator.validateAlternateIDIssuedDate(val.toString()); }), this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIDExpiryDateChangeEvent().map(val -> { log("Alternated Id Expiry Date started emission:" + val); - return validator.validateAlternateIDExpiryDate2(val.toString()); + return validator.validateAlternateIDExpiryDate(val.toString()); }), this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIdTypeChangeEvent().map(val -> { log("Alternated Id Type started emission:" + val.getText()); - return validator.validateAlternateIdType2(val); + return validator.validateAlternateIdType(val); }) ); } - private Observable setUpForm3Validation() { return Observable.combineLatest( this.view.getCustomerDetailViewContract().getForm3ViewBindings().getPassporIdDocChangeEvent(), @@ -330,28 +326,8 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter @Override public void clearAlternateIDFields() { - //Update View - alternateIDIssueVisibilityDateRequireLiveData.setValue(false); - alternateIDExpiryDateVisibilityLiveData.setValue(false); - alternateIDNumberFieldEnableLiveData.setValue(false); - - customerDetailErrorLiveDataDTO.setValueToAnotherIdNoError(null); - customerDetailErrorLiveDataDTO.setValueToAnotherIDIssuedDateError(null); - customerDetailErrorLiveDataDTO.setValueToAnotherIDExpiryDateError(null); - - //Update Data - if (validator.getKycRelatedDataDTO().getPrimaryInformation() != null) { - validator.getKycRelatedDataDTO().getPrimaryInformation().setAnotherIDType(""); - validator.getKycRelatedDataDTO().getPrimaryInformation().setAnotherIDNumber(""); - validator.getKycRelatedDataDTO().getPrimaryInformation().setAnotherIDIssueDate(""); - validator.getKycRelatedDataDTO().getPrimaryInformation().setAnotherIDExpiryDate(""); - } - - alternateIdRelatedViewResetLiveData.setValue(true); - alternateIdRelatedValidationSubject.onNext(true); - } @@ -480,7 +456,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter public void getKycRelatedData() { compositeDisposable.add( - this.gateway.getKycRelatedData(gateway.getBasicAuth(view.getContext()), "sdf", "kyc") + this.gateway.getKycRelatedData(gateway.getBasicAuth(view.getContext()), gateway.getUserID(), "kyc") .doOnSubscribe(sub -> view.showProgressBar(true, "")) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -793,43 +769,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter } - public boolean validateAlternateIdType2(IDTypeDTO val) { - boolean result = false; - if (kycRelatedDataDTO.getPrimaryInformation() == null) - kycRelatedDataDTO.setPrimaryInformation(new PrimaryInformationDTO()); - - if (val == null) { - customerDetailErrorLiveDataDTO.setValueToAnotherIdTypeError("Select different ID Type"); - kycRelatedDataDTO.getPrimaryInformation().setAnotherIDType(""); - } else { - kycRelatedDataDTO.getPrimaryInformation().setAnotherIDType(val.getId()); - anotherIdPictureLabeliveData.setValue(getAnotherIdTranslatedLable(val.getText())); - if (ID_TYPE_ALIEN_REGISTRATION_CARD.equalsIgnoreCase(val.getText()) || ID_TYPE_NATIONAL_ID_CARD.equalsIgnoreCase(val.getText())) { - view.getCustomerDetailViewContract().updateAnotherIdNumberMask(1); - } else { - view.getCustomerDetailViewContract().updateAnotherIdNumberMask(0); - - } - - if (kycRelatedDataDTO.getPrimaryInformation().isAnotherIDTypeValid()) { - alternateIDIssueVisibilityDateRequireLiveData.setValue(false); - alternateIDExpiryDateVisibilityLiveData.setValue(false); - for (String dependent : val.getDependent()) { - if ("docIssueDate".equalsIgnoreCase(dependent)) { - alternateIDIssueVisibilityDateRequireLiveData.setValue(true); - } else if ("docExpiryDate".equalsIgnoreCase(dependent)) { - alternateIDExpiryDateVisibilityLiveData.setValue(true); - } - } - result = validateAlternateIDRelatedFieldData(); - } else { - customerDetailErrorLiveDataDTO.setValueToAnotherIdTypeError("Select different ID Type"); - } - } - alternateIDNumberFieldEnableLiveData.setValue(result); - log("Alternate Id Type validation result: " + result); - return result; - } private boolean validateAlternateIDRelatedFieldData() { boolean result = true; @@ -841,7 +780,30 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter String alternateIdNumber = kycRelatedDataDTO.getPrimaryInformation().getAnotherIDNumber(); if (selectedIdTypeId == null || selectedIdTypeId.length() == 0) + { + //Update View + alternateIDIssueVisibilityDateRequireLiveData.setValue(false); + alternateIDExpiryDateVisibilityLiveData.setValue(false); + alternateIDNumberFieldEnableLiveData.setValue(false); + + customerDetailErrorLiveDataDTO.setValueToAnotherIdNoError(null); + customerDetailErrorLiveDataDTO.setValueToAnotherIDIssuedDateError(null); + customerDetailErrorLiveDataDTO.setValueToAnotherIDExpiryDateError(null); + + //Update Data + if (validator.getKycRelatedDataDTO().getPrimaryInformation() != null) { + validator.getKycRelatedDataDTO().getPrimaryInformation().setAnotherIDType(""); + validator.getKycRelatedDataDTO().getPrimaryInformation().setAnotherIDNumber(""); + validator.getKycRelatedDataDTO().getPrimaryInformation().setAnotherIDIssueDate(""); + validator.getKycRelatedDataDTO().getPrimaryInformation().setAnotherIDExpiryDate(""); + } + + alternateIdRelatedViewResetLiveData.setValue(true); + log("Alternate Id related view reset"); + return true; + + } else { selectedIdType = kycRelatedDataDTO.getSelectedIdTYpeFromId(selectedIdTypeId).getText(); customerDetailErrorLiveDataDTO.setValueToAnotherIdNoError(null); @@ -923,7 +885,52 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter return true; } - public boolean validateAlternateIdNo2(String alternateID) { + public boolean validateAlternateIdType(IDTypeDTO val) { + boolean result = false; + if (kycRelatedDataDTO.getPrimaryInformation() == null) + kycRelatedDataDTO.setPrimaryInformation(new PrimaryInformationDTO()); + + if (val == null) { + customerDetailErrorLiveDataDTO.setValueToAnotherIdTypeError("Select different ID Type"); + kycRelatedDataDTO.getPrimaryInformation().setAnotherIDType(""); + } + else if(val.getId()==null||val.getId().length()==0) + { + kycRelatedDataDTO.getPrimaryInformation().setAnotherIDType(null); + log("Alternate id is null so view is being reset"); + result=validateAlternateIDRelatedFieldData(); + } + else { + kycRelatedDataDTO.getPrimaryInformation().setAnotherIDType(val.getId()); + anotherIdPictureLabeliveData.setValue(getAnotherIdTranslatedLable(val.getText())); + if (ID_TYPE_ALIEN_REGISTRATION_CARD.equalsIgnoreCase(val.getText()) || ID_TYPE_NATIONAL_ID_CARD.equalsIgnoreCase(val.getText())) { + view.getCustomerDetailViewContract().updateAnotherIdNumberMask(1); + } else { + view.getCustomerDetailViewContract().updateAnotherIdNumberMask(0); + + } + + if (kycRelatedDataDTO.getPrimaryInformation().isAnotherIDTypeValid()) { + alternateIDIssueVisibilityDateRequireLiveData.setValue(false); + alternateIDExpiryDateVisibilityLiveData.setValue(false); + for (String dependent : val.getDependent()) { + if ("docIssueDate".equalsIgnoreCase(dependent)) { + alternateIDIssueVisibilityDateRequireLiveData.setValue(true); + } else if ("docExpiryDate".equalsIgnoreCase(dependent)) { + alternateIDExpiryDateVisibilityLiveData.setValue(true); + } + } + result = validateAlternateIDRelatedFieldData(); + } else { + customerDetailErrorLiveDataDTO.setValueToAnotherIdTypeError("Select different ID Type"); + } + } + alternateIDNumberFieldEnableLiveData.setValue(result); + log("Alternate Id Type validation result: " + result); + return result; + } + + public boolean validateAlternateIdNo(String alternateID) { kycRelatedDataDTO.getPrimaryInformation().setAnotherIDNumber(alternateID); if (kycRelatedDataDTO.getPrimaryInformation().isAnotherIDNoValid()) { @@ -934,7 +941,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter } } - public boolean validateAlternateIDIssuedDate2(String alternateIDIssuedDate) { + public boolean validateAlternateIDIssuedDate(String alternateIDIssuedDate) { Log.d("AlternateIdValidation", "Issued Date : " + alternateIDIssuedDate); if (kycRelatedDataDTO.getPrimaryInformation() == null) @@ -945,7 +952,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter } - public boolean validateAlternateIDExpiryDate2(String alternateIDIExpiryDate) { + public boolean validateAlternateIDExpiryDate(String alternateIDIExpiryDate) { Log.d("AlternateIdValidation", "Expiry Date : " + alternateIDIExpiryDate); if (kycRelatedDataDTO.getPrimaryInformation() == null) diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/CustomerDetailFragment.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/CustomerDetailFragment.java index b95a77e4..83e0d2ee 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/CustomerDetailFragment.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/CustomerDetailFragment.java @@ -236,6 +236,7 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present private float thumbNailHeight; private float thumbNailWidth; + private boolean isAlternatedRelatedViewBeingReset; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -251,6 +252,7 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present } private void init() { + isAlternatedRelatedViewBeingReset = false; form1ViewBindings = new Form1ViewBindings(); form2ViewBindings = new Form2ViewBindings(); form3ViewBindings = new Form3ViewBindings(); @@ -444,17 +446,17 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present }); kycv3ViewModel.getAlternateIdRelatedViewResetLiveData().observe(getViewLifecycleOwner(), action -> { - if(action) - { + if (action) { + isAlternatedRelatedViewBeingReset = true; ed_idType.setText(""); ed_anotherId.setText(""); ed_anotherExpiryDate.setText(""); ed_anotherIssueDate.setText(""); + isAlternatedRelatedViewBeingReset = false; } }); - } private void subscribeToCustomerRelatedDataError(KYCV3ViewModel kycv3ViewModel) { @@ -543,13 +545,7 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present @OnClick(R.id.txt_another_id_clear) public void onClearAnotherIdRelatedFields() { - -// form2ViewBindings.alternateIDNoIssuedDateSubject.onNext(""); -// form2ViewBindings.alternateIDNoIssuedDateSubject.onNext(""); -// ed_anotherId.setText(""); - - - ViewModelProviders.of(getActivity()).get(KYCV3ViewModel.class).clearAlternateIDFields(); + form2ViewBindings.idTypeSubject.onNext(IDTypeDTO.createEmptyInstance()); } @@ -1213,7 +1209,7 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present } public Observable getAlternateIDNoChangeEvent() { - return RxTextView.textChanges(ed_anotherId).skipInitialValue(); + return RxTextView.textChanges(ed_anotherId).skipInitialValue().filter(val -> !isAlternatedRelatedViewBeingReset); }