Browse Source

Focus change listener fixes needed

master
Preyea Regmi 5 years ago
parent
commit
503846d3c1
  1. 15
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/model/KYCRelatedDataDTO.java
  2. 47
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java
  3. 26
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/CustomerDetailFragment.java

15
app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/model/KYCRelatedDataDTO.java

@ -62,7 +62,7 @@ public class KYCRelatedDataDTO {
if (personalInformation == null)
return false;
else {
return "KR".equalsIgnoreCase(personalInformation.getNativeCountry()) ;
return "KR".equalsIgnoreCase(personalInformation.getNativeCountry());
}
}
@ -266,7 +266,6 @@ public class KYCRelatedDataDTO {
Utils.isStringNotNullOrEmpty(primaryInformation.getAnotherIDIssueDate()) ||
Utils.isStringNotNullOrEmpty(primaryInformation.getAnotherIDNumber()) ||
Utils.isStringNotNullOrEmpty(primaryInformation.getBankId()) ||
Utils.isStringNotNullOrEmpty(primaryInformation.getBranchId()) ||
Utils.isStringNotNullOrEmpty(primaryInformation.getBankAccount()) ||
Utils.isStringNotNullOrEmpty(primaryInformation.getPassportNumber()) ||
Utils.isStringNotNullOrEmpty(primaryInformation.getPassportIssueDate()) ||
@ -277,6 +276,16 @@ public class KYCRelatedDataDTO {
}
public boolean arePicturesAvailable() {
return pictures!=null;
return pictures != null;
}
public void seedInitialData() {
if (primaryInformation == null)
primaryInformation = new PrimaryInformationDTO();
if (primaryInformation.getBranchId() == null || primaryInformation.getBranchId().length() == 0) {
if (gmeBranchList != null && gmeBranchList.size() > 0)
primaryInformation.setBranchId(gmeBranchList.get(0).getId());
}
}
}

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

@ -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("F", getStringfromStringId(R.string.female_text)));
data.setGenderList(genderList);
data.seedInitialData();
this.validator = new CustomerDetailViewValidator(data);
boolean isCustomerKorean = validator.getKycRelatedDataDTO().isUserOfKoreanNative();
@ -352,11 +353,8 @@ 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]);
Log.d(TAG, "Form 2 valid: " + result);
customerDetailForm2Button.setValue(result);
log("Alternate ID Related Field Valid : " + ((boolean) args[3]));
log("Passport Related Field Valid : " + ((boolean) args[4]));
return result;
}
);
@ -366,20 +364,22 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
private Observable<Boolean> setupAlternateIDRelatedFieldValidation() {
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 -> {
log("Alternated Id Issued Date started emission:" + val);
return validator.validateAlternateIDIssuedDate(val.toString());
}),
this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIDExpiryDateChangeEvent().map(val -> {
log("Alternated Id Expiry Date started emission:" + val);
return validator.validateAlternateIDExpiryDate(val.toString());
}),
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) {
validator.validatePassportImage(data);
passportImageLiveData.setValue(ImageUtils.generateThumbnailFromImageFile(data.getAbsolutePath(), THUMBNAIL_HEIGHT, THUMBNAIL_WIDTH));
view.getCustomerDetailViewContract().showForm3();
}
break;
@ -485,6 +487,8 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
if (resultCode == RESULT_OK) {
validator.validateAlternateIDImage(data);
alternateIDImageLiveData.setValue(ImageUtils.generateThumbnailFromImageFile(data.getAbsolutePath(), THUMBNAIL_HEIGHT, THUMBNAIL_WIDTH));
view.getCustomerDetailViewContract().showForm3();
}
break;
@ -665,7 +669,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
@Override
public void validatePassportNumberFromServer() {
view.getCustomerDetailViewContract().enablePassportNumberFocusChangeListener(false);
compositeDisposable.add(this.gateway.validateParameters(ID_TYPE_PASSPORT, validator.getKycRelatedDataDTO().getPrimaryInformation().getPassportNumber())
.doOnSubscribe(d -> view.showProgressBar(true, getStringfromStringId(R.string.processing_request_text)))
.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
public void validateAlternateIDFromServer() {
IDTypeDTO selectedIDType = validator.getKycRelatedDataDTO().getSelectedIdTYpeFromId(validator.getKycRelatedDataDTO().getPrimaryInformation().getAnotherIDType());
@ -904,7 +909,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
kycRelatedDataDTO.logFormSubmissionData();
if (kycRelatedDataDTO.getPrimaryInformation().isPassportIssuedDateValid()) {
customerDetailErrorLiveDataDTO.setValueToPassportIssuedDateError(null);
view.getCustomerDetailViewContract().enablePassportNumberFocusChangeListener(true);
return true;
} else {
customerDetailErrorLiveDataDTO.setValueToPassportIssuedDateError(getStringfromStringId(R.string.empty_field_error_text));
@ -1089,10 +1093,8 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
kycRelatedDataDTO.getPrimaryInformation().setAnotherIDNumber(alternateID);
if (kycRelatedDataDTO.getPrimaryInformation().isAnotherIDNoValid()) {
boolean result = validateAlternateIDRelatedFieldData();
if (result)
validateAlternateIDFromServer();
return result;
return validateAlternateIDRelatedFieldData();
} else {
customerDetailErrorLiveDataDTO.setValueToAnotherIdNoError(getStringfromStringId(R.string.empty_field_error_text));
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) {
@ -1253,7 +1267,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
@Override
public void onFailed(String message) {
new Handler().postDelayed(() -> view.hideKeyBoard(), 300);
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null);
}

26
app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/CustomerDetailFragment.java

@ -306,13 +306,27 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
private void subscribeToSubmitButtonEnable(KYCV3ViewModel kycv3ViewModel) {
kycv3ViewModel.getForm1SubmissionReadyLiveData().observe(getViewLifecycleOwner(), val -> btnSubmit1.setEnabled(val));
kycv3ViewModel.getForm2SubmissionReadyLiveData().observe(getViewLifecycleOwner(), val -> btnSubmit2.setEnabled(val));
kycv3ViewModel.getForm3SubmissionReadyLiveData().observe(getViewLifecycleOwner(), val -> btnSubmit3.setEnabled(val));
kycv3ViewModel.getForm2SubmissionReadyLiveData().observe(getViewLifecycleOwner(), val -> {
btnSubmit2.setEnabled(val);
if (val)
btnSubmit2.requestFocus();
});
kycv3ViewModel.getForm3SubmissionReadyLiveData().observe(getViewLifecycleOwner(), val -> {
btnSubmit3.setEnabled(val);
if (val)
btnSubmit3.requestFocus();
});
}
private void subscribeToCustomerRelatedData(KYCV3ViewModel kycv3ViewModel) {
kycv3ViewModel.getCustomerDetailRelatedFormLiveData().observe(getViewLifecycleOwner(), val -> {
IDTextDTO selectedGmeBranch = val.getSelectedGmeBranchFromId(val.getPrimaryInformation().getBranchId());
if (selectedGmeBranch != null) {
ed_branch.setText(selectedGmeBranch.toString());
form2ViewBindings.branchSubject.onNext(selectedGmeBranch);
}
if (val.isPersonalInfoAvailable()) {
ed_firstname.setText(val.getPersonalInformation().getFullName());
ed_email.setText(val.getPersonalInformation().getEmail());
@ -364,12 +378,6 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
}
IDTextDTO selectedGmeBranch = val.getSelectedGmeBranchFromId(val.getPrimaryInformation().getBranchId());
if (selectedGmeBranch != null) {
ed_branch.setText(selectedGmeBranch.toString());
form2ViewBindings.branchSubject.onNext(selectedGmeBranch);
}
ed_referral.setText(val.getPrimaryInformation().getRefferalCode());
form2ViewBindings.passportNoIssuedDateSubject.onNext(val.getPrimaryInformation().getPassportIssueDate());
@ -390,6 +398,7 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
});
kycv3ViewModel.getPassportImageLiveData().observe(getViewLifecycleOwner(), bitmap -> {
if (bitmap != null) {
Utility.showImageFromBitmap(getActivity(), iv_passport_id, bitmap);
@ -886,7 +895,6 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
if (!hasFocus) {
ViewModelProviders.of(getActivity()).get(KYCV3ViewModel.class).validatePassportNumberFromServer();
ed_passportId.setOnFocusChangeListener(null);
ed_passportId.clearFocus();
}
});
} else {

Loading…
Cancel
Save