|
|
@ -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() { |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |