|
@ -237,6 +237,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter |
|
|
genderList.add(new IDTextDTO("M", getStringfromStringId(R.string.male_text))); |
|
|
genderList.add(new IDTextDTO("M", getStringfromStringId(R.string.male_text))); |
|
|
genderList.add(new IDTextDTO("F", getStringfromStringId(R.string.female_text))); |
|
|
genderList.add(new IDTextDTO("F", getStringfromStringId(R.string.female_text))); |
|
|
data.setGenderList(genderList); |
|
|
data.setGenderList(genderList); |
|
|
|
|
|
data.seedInitialData(); |
|
|
this.validator = new CustomerDetailViewValidator(data); |
|
|
this.validator = new CustomerDetailViewValidator(data); |
|
|
|
|
|
|
|
|
boolean isCustomerKorean = validator.getKycRelatedDataDTO().isUserOfKoreanNative(); |
|
|
boolean isCustomerKorean = validator.getKycRelatedDataDTO().isUserOfKoreanNative(); |
|
@ -352,11 +353,8 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter |
|
|
args -> |
|
|
args -> |
|
|
{ |
|
|
{ |
|
|
boolean result = ((boolean) args[0]) && ((boolean) args[1]) && ((boolean) args[2]) && ((boolean) args[3]) && ((boolean) args[4]); |
|
|
boolean result = ((boolean) args[0]) && ((boolean) args[1]) && ((boolean) args[2]) && ((boolean) args[3]) && ((boolean) args[4]); |
|
|
Log.d(TAG, "Form 2 valid: " + result); |
|
|
|
|
|
|
|
|
|
|
|
customerDetailForm2Button.setValue(result); |
|
|
customerDetailForm2Button.setValue(result); |
|
|
log("Alternate ID Related Field Valid : " + ((boolean) args[3])); |
|
|
|
|
|
log("Passport Related Field Valid : " + ((boolean) args[4])); |
|
|
|
|
|
|
|
|
|
|
|
return result; |
|
|
return result; |
|
|
} |
|
|
} |
|
|
); |
|
|
); |
|
@ -366,20 +364,22 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter |
|
|
|
|
|
|
|
|
private Observable<Boolean> setupAlternateIDRelatedFieldValidation() { |
|
|
private Observable<Boolean> setupAlternateIDRelatedFieldValidation() { |
|
|
return Observable.merge(this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIDNoChangeEvent().map(val -> { |
|
|
return Observable.merge(this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIDNoChangeEvent().map(val -> { |
|
|
log("Alternated Id No started emission: " + val); |
|
|
|
|
|
return validator.validateAlternateIdNo(val.toString()); |
|
|
|
|
|
|
|
|
boolean result = validator.validateAlternateIdNo(val.toString()); |
|
|
|
|
|
if (validator.hasRequiredDataForAlternatIdVerificationFromServer()) |
|
|
|
|
|
validateAlternateIDFromServer(); |
|
|
|
|
|
return result; |
|
|
}), |
|
|
}), |
|
|
this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIDIssuedDateChangeEvent().map(val -> { |
|
|
this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIDIssuedDateChangeEvent().map(val -> { |
|
|
log("Alternated Id Issued Date started emission:" + val); |
|
|
|
|
|
return validator.validateAlternateIDIssuedDate(val.toString()); |
|
|
return validator.validateAlternateIDIssuedDate(val.toString()); |
|
|
}), |
|
|
}), |
|
|
this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIDExpiryDateChangeEvent().map(val -> { |
|
|
this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIDExpiryDateChangeEvent().map(val -> { |
|
|
log("Alternated Id Expiry Date started emission:" + val); |
|
|
|
|
|
return validator.validateAlternateIDExpiryDate(val.toString()); |
|
|
return validator.validateAlternateIDExpiryDate(val.toString()); |
|
|
}), |
|
|
}), |
|
|
this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIdTypeChangeEvent().map(val -> { |
|
|
this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIdTypeChangeEvent().map(val -> { |
|
|
log("Alternated Id Type started emission:" + val.getText()); |
|
|
|
|
|
return validator.validateAlternateIdType(val); |
|
|
|
|
|
|
|
|
boolean result = validator.validateAlternateIdType(val); |
|
|
|
|
|
if (validator.hasRequiredDataForAlternatIdVerificationFromServer()) |
|
|
|
|
|
validateAlternateIDFromServer(); |
|
|
|
|
|
return result; |
|
|
}) |
|
|
}) |
|
|
); |
|
|
); |
|
|
} |
|
|
} |
|
@ -477,6 +477,8 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter |
|
|
if (resultCode == RESULT_OK) { |
|
|
if (resultCode == RESULT_OK) { |
|
|
validator.validatePassportImage(data); |
|
|
validator.validatePassportImage(data); |
|
|
passportImageLiveData.setValue(ImageUtils.generateThumbnailFromImageFile(data.getAbsolutePath(), THUMBNAIL_HEIGHT, THUMBNAIL_WIDTH)); |
|
|
passportImageLiveData.setValue(ImageUtils.generateThumbnailFromImageFile(data.getAbsolutePath(), THUMBNAIL_HEIGHT, THUMBNAIL_WIDTH)); |
|
|
|
|
|
view.getCustomerDetailViewContract().showForm3(); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
@ -485,6 +487,8 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter |
|
|
if (resultCode == RESULT_OK) { |
|
|
if (resultCode == RESULT_OK) { |
|
|
validator.validateAlternateIDImage(data); |
|
|
validator.validateAlternateIDImage(data); |
|
|
alternateIDImageLiveData.setValue(ImageUtils.generateThumbnailFromImageFile(data.getAbsolutePath(), THUMBNAIL_HEIGHT, THUMBNAIL_WIDTH)); |
|
|
alternateIDImageLiveData.setValue(ImageUtils.generateThumbnailFromImageFile(data.getAbsolutePath(), THUMBNAIL_HEIGHT, THUMBNAIL_WIDTH)); |
|
|
|
|
|
view.getCustomerDetailViewContract().showForm3(); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
@ -665,7 +669,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public void validatePassportNumberFromServer() { |
|
|
public void validatePassportNumberFromServer() { |
|
|
view.getCustomerDetailViewContract().enablePassportNumberFocusChangeListener(false); |
|
|
|
|
|
compositeDisposable.add(this.gateway.validateParameters(ID_TYPE_PASSPORT, validator.getKycRelatedDataDTO().getPrimaryInformation().getPassportNumber()) |
|
|
compositeDisposable.add(this.gateway.validateParameters(ID_TYPE_PASSPORT, validator.getKycRelatedDataDTO().getPrimaryInformation().getPassportNumber()) |
|
|
.doOnSubscribe(d -> view.showProgressBar(true, getStringfromStringId(R.string.processing_request_text))) |
|
|
.doOnSubscribe(d -> view.showProgressBar(true, getStringfromStringId(R.string.processing_request_text))) |
|
|
.subscribeOn(Schedulers.io()) |
|
|
.subscribeOn(Schedulers.io()) |
|
@ -675,6 +678,8 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//Validate ID number with corresponding IdType from server after validating locally. |
|
|
|
|
|
//So dependent data needs to be validated prior validating from server. |
|
|
@Override |
|
|
@Override |
|
|
public void validateAlternateIDFromServer() { |
|
|
public void validateAlternateIDFromServer() { |
|
|
IDTypeDTO selectedIDType = validator.getKycRelatedDataDTO().getSelectedIdTYpeFromId(validator.getKycRelatedDataDTO().getPrimaryInformation().getAnotherIDType()); |
|
|
IDTypeDTO selectedIDType = validator.getKycRelatedDataDTO().getSelectedIdTYpeFromId(validator.getKycRelatedDataDTO().getPrimaryInformation().getAnotherIDType()); |
|
@ -904,7 +909,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter |
|
|
kycRelatedDataDTO.logFormSubmissionData(); |
|
|
kycRelatedDataDTO.logFormSubmissionData(); |
|
|
if (kycRelatedDataDTO.getPrimaryInformation().isPassportIssuedDateValid()) { |
|
|
if (kycRelatedDataDTO.getPrimaryInformation().isPassportIssuedDateValid()) { |
|
|
customerDetailErrorLiveDataDTO.setValueToPassportIssuedDateError(null); |
|
|
customerDetailErrorLiveDataDTO.setValueToPassportIssuedDateError(null); |
|
|
view.getCustomerDetailViewContract().enablePassportNumberFocusChangeListener(true); |
|
|
|
|
|
return true; |
|
|
return true; |
|
|
} else { |
|
|
} else { |
|
|
customerDetailErrorLiveDataDTO.setValueToPassportIssuedDateError(getStringfromStringId(R.string.empty_field_error_text)); |
|
|
customerDetailErrorLiveDataDTO.setValueToPassportIssuedDateError(getStringfromStringId(R.string.empty_field_error_text)); |
|
@ -1089,10 +1093,8 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter |
|
|
|
|
|
|
|
|
kycRelatedDataDTO.getPrimaryInformation().setAnotherIDNumber(alternateID); |
|
|
kycRelatedDataDTO.getPrimaryInformation().setAnotherIDNumber(alternateID); |
|
|
if (kycRelatedDataDTO.getPrimaryInformation().isAnotherIDNoValid()) { |
|
|
if (kycRelatedDataDTO.getPrimaryInformation().isAnotherIDNoValid()) { |
|
|
boolean result = validateAlternateIDRelatedFieldData(); |
|
|
|
|
|
if (result) |
|
|
|
|
|
validateAlternateIDFromServer(); |
|
|
|
|
|
return result; |
|
|
|
|
|
|
|
|
return validateAlternateIDRelatedFieldData(); |
|
|
|
|
|
|
|
|
} else { |
|
|
} else { |
|
|
customerDetailErrorLiveDataDTO.setValueToAnotherIdNoError(getStringfromStringId(R.string.empty_field_error_text)); |
|
|
customerDetailErrorLiveDataDTO.setValueToAnotherIdNoError(getStringfromStringId(R.string.empty_field_error_text)); |
|
|
return false; |
|
|
return false; |
|
@ -1202,6 +1204,18 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public boolean hasRequiredDataForAlternatIdVerificationFromServer() { |
|
|
|
|
|
if (kycRelatedDataDTO.getPrimaryInformation() != null) { |
|
|
|
|
|
String idNumber; |
|
|
|
|
|
String idType; |
|
|
|
|
|
|
|
|
|
|
|
idNumber = kycRelatedDataDTO.getPrimaryInformation().getAnotherIDNumber(); |
|
|
|
|
|
idType = kycRelatedDataDTO.getPrimaryInformation().getAnotherIDType(); |
|
|
|
|
|
return idNumber != null && idNumber.length() == ID_CARD_VALID_LENGTH && idType != null && idType.length() > 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private String getAnotherIdTranslatedLable(String englishLabel) { |
|
|
private String getAnotherIdTranslatedLable(String englishLabel) { |
|
@ -1253,7 +1267,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public void onFailed(String message) { |
|
|
public void onFailed(String message) { |
|
|
new Handler().postDelayed(() -> view.hideKeyBoard(), 300); |
|
|
|
|
|
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null); |
|
|
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|