Browse Source

Alternate id image validation fixes

master
Preyea Regmi 5 years ago
parent
commit
7eabcf4f3d
  1. 4
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/model/PicturesDTO.java
  2. 81
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java

4
app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/model/PicturesDTO.java

@ -57,4 +57,8 @@ public class PicturesDTO {
public File getAlternateIDImageFile() {
return alternateIDImageFile;
}
public boolean hasValidAlternateImage() {
return (alternateIDImageFile!=null||(anotherIDPicture!=null&&anotherIDPicture.length()>0));
}
}

81
app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java

@ -96,6 +96,9 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
private BehaviorSubject<Boolean> form1ValidationSubject;
private BehaviorSubject<Boolean> form2ValidationSubject;
private BehaviorSubject<Boolean> form3ValidationSubject;
private BehaviorSubject<Boolean> alternateIdImageValidationSubject;
private BehaviorSubject<Boolean> userIsKoreanSubject;
public KYCV3ViewModel(KYCV3PresenterInterface.KYCV3ViewContractInterface view, KYCV3GatewayInterface gatewayInterface) {
@ -126,6 +129,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
this.penntestReferenceSubmissionLiveData = new MutableLiveData<>();
this.penntestReferenceErrorMessageLiveData = new MutableLiveData<>();
alternateIdRelatedValidationSubject = BehaviorSubject.createDefault(true);
alternateIdImageValidationSubject = BehaviorSubject.createDefault(true);
form1ValidationSubject = BehaviorSubject.createDefault(false);
form2ValidationSubject = BehaviorSubject.createDefault(false);
form3ValidationSubject = BehaviorSubject.createDefault(false);
@ -162,7 +166,8 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
this.customerDetailViewSubscriptions.add(setUpForm2Validation().subscribe(result -> form2ValidationSubject.onNext(result)));
this.customerDetailViewSubscriptions.add(setUpForm3Validation().subscribe(result -> form3ValidationSubject.onNext(result)));
this.customerDetailViewSubscriptions.add(setupAlternateIDDependenciesValidation().subscribe(result -> alternateIdRelatedValidationSubject.onNext(result)));
this.customerDetailViewSubscriptions.add( this.view.getCustomerDetailViewContract().getForm3ViewBindings().getAlternateIdDocChangeEvent().subscribe(alternateImage->{ alternateIdImageValidationSubject.onNext(alternateImage);}));
this.customerDetailViewSubscriptions.add(this.view.getCustomerDetailViewContract().getForm2ViewBindings().getReferralCodeChangeEvent().subscribe(val -> validator.validateReferralCode(val)));
}
@ -234,7 +239,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
list.add(this.view.getCustomerDetailViewContract().getForm2ViewBindings().getPassportIssuedDateChangeEvent().map(val -> validator.validatePassportIssuedDate(val.toString())));
list.add(this.view.getCustomerDetailViewContract().getForm2ViewBindings().getPassportExpiryDateChangeEvent().map(val -> validator.validatePassportExpiryDate(val.toString())));
list.add(this.view.getCustomerDetailViewContract().getForm2ViewBindings().getGMEBranchChangeEvent().map(val -> validator.validateGmeBranch(val)));
list.add(this.view.getCustomerDetailViewContract().getForm2ViewBindings().getReferralCodeChangeEvent().map(val -> validator.validateReferralCode(val)));
list.add(alternateIdRelatedValidationSubject);
return Observable.combineLatest(
@ -242,8 +246,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
args ->
{
boolean result = ((boolean) args[0]) && ((boolean) args[1]) && ((boolean) args[2])
&& ((boolean) args[3]) && ((boolean) args[4]) && ((boolean) args[5]) && ((boolean) args[6])
&& ((boolean) args[7]);
&& ((boolean) args[3]) && ((boolean) args[4]) && ((boolean) args[5]) && ((boolean) args[6]);
customerDetailForm2Button.setValue(result);
log("Form 2 isValid : " + result);
return result;
@ -276,7 +279,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
private Observable<Boolean> setUpForm3Validation() {
return Observable.combineLatest(
this.view.getCustomerDetailViewContract().getForm3ViewBindings().getPassporIdDocChangeEvent(),
this.view.getCustomerDetailViewContract().getForm3ViewBindings().getAlternateIdDocChangeEvent(),
alternateIdImageValidationSubject,
(isPassportIDDocValid, isAlternateIdDocValid) -> isPassportIDDocValid && isAlternateIdDocValid
);
@ -327,8 +330,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
public void clearAlternateIDFields() {
}
public void checkImageStatus(int requestCode, int resultCode, File data, float thumbnailHeight, float thumbnailWidth) {
@ -769,7 +770,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
}
private boolean validateAlternateIDRelatedFieldData() {
boolean result = true;
if (kycRelatedDataDTO.getPrimaryInformation() != null) {
@ -779,8 +779,8 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
String alternateIdIssuedDate = kycRelatedDataDTO.getPrimaryInformation().getAnotherIDIssueDate();
String alternateIdNumber = kycRelatedDataDTO.getPrimaryInformation().getAnotherIDNumber();
if (selectedIdTypeId == null || selectedIdTypeId.length() == 0)
{
if (selectedIdTypeId == null || selectedIdTypeId.length() == 0) {
//When Alternate Id Fields are cleared
//Update View
alternateIDIssueVisibilityDateRequireLiveData.setValue(false);
alternateIDExpiryDateVisibilityLiveData.setValue(false);
@ -801,10 +801,11 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
alternateIdRelatedViewResetLiveData.setValue(true);
log("Alternate Id related view reset");
return true;
}
else {
} else {
selectedIdType = kycRelatedDataDTO.getSelectedIdTYpeFromId(selectedIdTypeId).getText();
customerDetailErrorLiveDataDTO.setValueToAnotherIdNoError(null);
@ -815,8 +816,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
result = false;
if (alternateIdNumber == null || alternateIdNumber.length() == 0) {
result = false;
}
else if (alternateIdNumber.length() != ID_CARD_VALID_LENGTH) {
} else if (alternateIdNumber.length() != ID_CARD_VALID_LENGTH) {
customerDetailErrorLiveDataDTO.setValueToAnotherIdNoError("Invalid National Id Card");
view.getCustomerDetailViewContract().enableAlternateIdFocusChangeAndImeOptionListener(false);
result = false;
@ -849,8 +849,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
result = false;
if (alternateIdNumber == null || alternateIdNumber.length() == 0) {
result = false;
}
else if ( alternateIdNumber.length() != ID_CARD_VALID_LENGTH) {
} else if (alternateIdNumber.length() != ID_CARD_VALID_LENGTH) {
customerDetailErrorLiveDataDTO.setValueToAnotherIdNoError("Invalid Driving License Card");
view.getCustomerDetailViewContract().enableAlternateIdFocusChangeAndImeOptionListener(false);
result = false;
@ -867,8 +866,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
customerDetailErrorLiveDataDTO.setValueToAnotherIdNoError("Invalid Passport");
view.getCustomerDetailViewContract().enableAlternateIdFocusChangeAndImeOptionListener(false);
result = false;
}
else {
} else {
customerDetailErrorLiveDataDTO.setValueToAnotherIdNoError(null);
view.getCustomerDetailViewContract().enableAlternateIdFocusChangeAndImeOptionListener(true);
}
@ -893,14 +891,23 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
if (val == null) {
customerDetailErrorLiveDataDTO.setValueToAnotherIdTypeError("Select different ID Type");
kycRelatedDataDTO.getPrimaryInformation().setAnotherIDType("");
}
else if(val.getId()==null||val.getId().length()==0)
{
} 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 {
//We don't require alternate Image
alternateIdImageValidationSubject.onNext(true);
result = validateAlternateIDRelatedFieldData();
} else {
//We require alternate Id Image explicitly
boolean hasAlternateImage=false;
if(kycRelatedDataDTO.getPictures()!=null)
{
hasAlternateImage=kycRelatedDataDTO.getPictures().hasValidAlternateImage();
}
log("Has Alternate IMage : "+hasAlternateImage);
alternateIdImageValidationSubject.onNext(hasAlternateImage);
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())) {
@ -924,6 +931,8 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
} else {
customerDetailErrorLiveDataDTO.setValueToAnotherIdTypeError("Select different ID Type");
}
}
alternateIDNumberFieldEnableLiveData.setValue(result);
log("Alternate Id Type validation result: " + result);
@ -1026,10 +1035,8 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
public boolean validateReferralCode(CharSequence referralCode) {
if (referralCode == null)
kycRelatedDataDTO.getPrimaryInformation().setRefferalCode(null);
else
kycRelatedDataDTO.getPrimaryInformation().setRefferalCode(referralCode.toString());
kycRelatedDataDTO.logFormSubmissionData();
referralCode = "";
kycRelatedDataDTO.getPrimaryInformation().setRefferalCode(referralCode.toString());
return true;
}
@ -1256,23 +1263,5 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
}
}
public class AlternateIdFormViewBindingObserver extends DisposableObserver<Boolean> {
@Override
public void onNext(Boolean aBoolean) {
customerDetailForm2Button.setValue(aBoolean);
customerDetailForm3Button.setValue(aBoolean);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
}
}
Loading…
Cancel
Save