Browse Source

KYC Customer Form Validation completed

master
Preyea Regmi 5 years ago
parent
commit
6f94ce371b
  1. 5
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/model/IDTypeDTO.java
  2. 145
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java
  3. 18
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/CustomerDetailFragment.java

5
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() {

145
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<Boolean> setUpForm2Validation() {
List<Observable<?>> 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<Boolean> 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<Boolean> 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)

18
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<CharSequence> getAlternateIDNoChangeEvent() {
return RxTextView.textChanges(ed_anotherId).skipInitialValue();
return RxTextView.textChanges(ed_anotherId).skipInitialValue().filter(val -> !isAlternatedRelatedViewBeingReset);
}

Loading…
Cancel
Save