diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/base/BaseViewModel.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/base/BaseViewModel.java index 26ea7248..ff523458 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/base/BaseViewModel.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/base/BaseViewModel.java @@ -11,6 +11,8 @@ public abstract class BaseViewModel extends ViewModel implements BasePresenterIn return GmeApplication.getStringExtractor().getStringFromStringId(id); } + @Override + public void onViewDestroyed() { - + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3PresenterInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3PresenterInterface.java index c16a11ce..c39f6c0b 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3PresenterInterface.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3PresenterInterface.java @@ -4,14 +4,22 @@ import androidx.lifecycle.LiveData; import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface; import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface; -import com.gmeremit.online.gmeremittance_native.kycV3.view.personal.PersonalFormModel; +import com.gmeremit.online.gmeremittance_native.kycV3.view.personal.viewdto.CustomerDetailErrorLiveDataDTO; +import com.gmeremit.online.gmeremittance_native.kycV3.view.personal.viewdto.PersonalFormModel; import com.jakewharton.rxbinding3.InitialValueObservable; public interface KYCV3PresenterInterface extends BasePresenterInterface { void onCustomerDetailFormAvailabilityChanged(boolean isReady); - LiveData getCustomerDetailFormLiveData(); + LiveData getCustomerDetailRelatedFormLiveData(); + CustomerDetailErrorLiveDataDTO getCustomerDetailRelatedFormErrorLiveData(); + LiveData getForm1SubmissionReadyLiveData(); + LiveData getForm2SubmissionReadyLiveData(); + LiveData getForm3SubmissionReadyLiveData(); + + + interface KYCV3ViewContractInterface extends BaseContractInterface { @@ -21,6 +29,12 @@ public interface KYCV3PresenterInterface extends BasePresenterInterface { interface KYCV3CustomerDetailViewContractInterface extends BaseContractInterface { InitialValueObservable getFullNameTextChangeEvent(); + InitialValueObservable getGenderChangeEvent(); + InitialValueObservable getDobChangeEvent(); + InitialValueObservable getEmailChangeEvent(); + InitialValueObservable getAddressChangeEvent(); + + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java index bbf1d267..ce73b6e3 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java @@ -1,13 +1,13 @@ package com.gmeremit.online.gmeremittance_native.kycV3.presenter; -import android.util.Log; - import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import com.gmeremit.online.gmeremittance_native.base.BaseViewModel; -import com.gmeremit.online.gmeremittance_native.kycV3.view.personal.PersonalFormModel; +import com.gmeremit.online.gmeremittance_native.kycV3.view.personal.viewdto.CustomerDetailErrorLiveDataDTO; +import com.gmeremit.online.gmeremittance_native.kycV3.view.personal.viewdto.PersonalFormModel; +import io.reactivex.Observable; import io.reactivex.disposables.CompositeDisposable; public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInterface { @@ -19,11 +19,21 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter private MutableLiveData customerDetailForm; + private MutableLiveData customerDetailForm1Button; + private MutableLiveData customerDetailForm2Button; + private MutableLiveData customerDetailForm3Button; + + private CustomerDetailErrorLiveDataDTO customerDetailErrorLiveDataDTO; + public KYCV3ViewModel(KYCV3PresenterInterface.KYCV3ViewContractInterface view, KYCV3GatewayInterface gatewayInterface) { this.view = view; this.gateway = gatewayInterface; this.customerDetailForm = new MutableLiveData<>(); + this.customerDetailForm1Button = new MutableLiveData<>(); + this.customerDetailForm2Button = new MutableLiveData<>(); + this.customerDetailForm3Button = new MutableLiveData<>(); this.customerDetailViewSubscriptions = new CompositeDisposable(); + this.customerDetailErrorLiveDataDTO = new CustomerDetailErrorLiveDataDTO(); } @Override @@ -37,17 +47,27 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter } @Override - public void onViewDestroyed() { - + protected void onCleared() { + super.onCleared(); } @Override public void onCustomerDetailFormAvailabilityChanged(boolean isReady) { if (isReady) { - this.customerDetailViewSubscriptions.add( - this.view.getCustomerDetailViewContract().getFullNameTextChangeEvent().subscribe(val -> { - customerDetailForm.setValue(new PersonalFormModel(val.toString())); - })); +// this.customerDetailViewSubscriptions.add( +// Observable.combineLatest( +// this.view.getCustomerDetailViewContract().getFullNameTextChangeEvent(), +// this.view.getCustomerDetailViewContract().getGenderChangeEvent(), +// this.view.getCustomerDetailViewContract().getDobChangeEvent(), +// this.view.getCustomerDetailViewContract().getEmailChangeEvent(), +// this.view.getCustomerDetailViewContract().getAddressChangeEvent(), +// (a,b,c,d,e)->{ +// +// } +// ) +// this.view.getCustomerDetailViewContract().getFullNameTextChangeEvent().subscribe(val -> { +// customerDetailForm.setValue(new PersonalFormModel(val.toString())); +// })); } else { if (!customerDetailViewSubscriptions.isDisposed()) customerDetailViewSubscriptions.dispose(); @@ -55,16 +75,86 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter } @Override - public LiveData getCustomerDetailFormLiveData() { + public LiveData getCustomerDetailRelatedFormLiveData() { return customerDetailForm; } + @Override + public CustomerDetailErrorLiveDataDTO getCustomerDetailRelatedFormErrorLiveData() { + return customerDetailErrorLiveDataDTO; + } + + @Override + public LiveData getForm1SubmissionReadyLiveData() { + return customerDetailForm1Button; + } + + @Override + public LiveData getForm2SubmissionReadyLiveData() { + return customerDetailForm2Button; + } + + @Override + public LiveData getForm3SubmissionReadyLiveData() { + return customerDetailForm3Button; + } + public class CustomerDetailViewValidator { - String fullName; + + /** + * Personal Information + */ + PersonalFormModel personalFormModel; + + + /** + * Bank and Id Details + */ public void validateFullName(String fullName) { - this.fullName = fullName; + personalFormModel.setFullName(fullName); + if (personalFormModel.isFullNameValid()) { + customerDetailForm1Button.setValue(personalFormModel.areAllFieldsValid()); + } else { + + } + } + + public void validateGender(String gender) { + if (personalFormModel.isGenderValid()) { + + customerDetailForm1Button.setValue(personalFormModel.areAllFieldsValid()); + } else { + customerDetailForm1Button.setValue(false); + + } } + + public void validatedob(String dateOfBirth) { + if (personalFormModel.isDOBValid()) { + + } else { + + } + } + + public void validateEmail(String email) { + if (personalFormModel.isEmailValid()) { + + } else { + + } + } + + public void validateKoreaAddress(String koreaAddress) { + if (personalFormModel.isAddressValid()) { + + } else { + + } + } + + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/KYCV3Activity.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/KYCV3Activity.java index cf020429..a8351d90 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/KYCV3Activity.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/KYCV3Activity.java @@ -98,11 +98,6 @@ public class KYCV3Activity extends BaseActivity implements KYCV3PresenterInterfa viewModel.onViewNotReady(); } - @Override - protected void onDestroy() { - super.onDestroy(); - viewModel.onViewDestroyed(); - } @Override public KYCV3CustomerDetailViewContractInterface getCustomerDetailViewContract() { diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/CustomerDetailFragment.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/CustomerDetailFragment.java index 8f5bf96c..b3fc1fec 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/CustomerDetailFragment.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/CustomerDetailFragment.java @@ -57,6 +57,15 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present @BindView(R.id.ed_address) EditText ed_address; + @BindView(R.id.ed_dob) + EditText ed_dob; + + @BindView(R.id.ed_gender) + EditText ed_gender; + + @BindView(R.id.ed_email) + EditText ed_email; + @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_kyc_customer_detail, container, false); @@ -78,9 +87,30 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present form2.setVisibility(View.GONE); form3.setVisibility(View.GONE); - ViewModelProviders.of(getActivity()).get(KYCV3ViewModel.class).getCustomerDetailFormLiveData().observe(this, val -> { - ed_address.setText(val.address); - }); + + KYCV3ViewModel kycv3ViewModel = ViewModelProviders.of(getActivity()).get(KYCV3ViewModel.class); + subscribeToSubmitButtonEnable(kycv3ViewModel); + subscribeToCustomerRelatedDataError(kycv3ViewModel); + subscribeToCustomerRelatedData(kycv3ViewModel); + + } + + 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)); + } + + private void subscribeToCustomerRelatedData(KYCV3ViewModel kycv3ViewModel) { + kycv3ViewModel.getCustomerDetailRelatedFormLiveData().observe(getViewLifecycleOwner(), val -> {}); + } + + private void subscribeToCustomerRelatedDataError(KYCV3ViewModel kycv3ViewModel) { + kycv3ViewModel.getCustomerDetailRelatedFormErrorLiveData().getFullNameErrorLiveData().observe(getViewLifecycleOwner(), error->{}); + kycv3ViewModel.getCustomerDetailRelatedFormErrorLiveData().getGenderErrorLiveData().observe(getViewLifecycleOwner(), error->{}); + kycv3ViewModel.getCustomerDetailRelatedFormErrorLiveData().getDateOfBirthErrorLiveData().observe(getViewLifecycleOwner(), error->{}); + kycv3ViewModel.getCustomerDetailRelatedFormErrorLiveData().getEmailErrorLiveData().observe(getViewLifecycleOwner(), error->{}); + kycv3ViewModel.getCustomerDetailRelatedFormErrorLiveData().getKoreaAddresLiveData().observe(getViewLifecycleOwner(), error->{}); } @@ -143,4 +173,24 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present public InitialValueObservable getFullNameTextChangeEvent() { return RxTextView.textChanges(ed_firstname); } + + @Override + public InitialValueObservable getGenderChangeEvent() { + return RxTextView.textChanges(ed_gender); + } + + @Override + public InitialValueObservable getDobChangeEvent() { + return RxTextView.textChanges(ed_dob); + } + + @Override + public InitialValueObservable getEmailChangeEvent() { + return RxTextView.textChanges(ed_email); + } + + @Override + public InitialValueObservable getAddressChangeEvent() { + return RxTextView.textChanges(ed_address); + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/AdditionalFormModel.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/viewdto/AdditionalFormModel.java similarity index 92% rename from app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/AdditionalFormModel.java rename to app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/viewdto/AdditionalFormModel.java index 257a3af8..19db5116 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/AdditionalFormModel.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/viewdto/AdditionalFormModel.java @@ -1,4 +1,4 @@ -package com.gmeremit.online.gmeremittance_native.kycV3.view.personal; +package com.gmeremit.online.gmeremittance_native.kycV3.view.personal.viewdto; /** * A Simple POJO that resembles the data required for additional form. diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/viewdto/CustomerDetailErrorLiveDataDTO.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/viewdto/CustomerDetailErrorLiveDataDTO.java new file mode 100644 index 00000000..ebfb336b --- /dev/null +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/viewdto/CustomerDetailErrorLiveDataDTO.java @@ -0,0 +1,41 @@ +package com.gmeremit.online.gmeremittance_native.kycV3.view.personal.viewdto; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +public class CustomerDetailErrorLiveDataDTO { + + private MutableLiveData fullNameError; + private MutableLiveData genderError; + private MutableLiveData dateOfBirthError; + private MutableLiveData emailError; + private MutableLiveData koreaAddres; + + public CustomerDetailErrorLiveDataDTO() { + fullNameError=new MutableLiveData<>(); + genderError=new MutableLiveData<>(); + dateOfBirthError=new MutableLiveData<>(); + emailError=new MutableLiveData<>(); + koreaAddres=new MutableLiveData<>(); + } + + public LiveData getFullNameErrorLiveData() { + return fullNameError; + } + + public LiveData getGenderErrorLiveData() { + return genderError; + } + + public LiveData getDateOfBirthErrorLiveData() { + return dateOfBirthError; + } + + public LiveData getEmailErrorLiveData() { + return emailError; + } + + public LiveData getKoreaAddresLiveData() { + return koreaAddres; + } +} diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/DocumentsFormModel.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/viewdto/DocumentsFormModel.java similarity index 92% rename from app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/DocumentsFormModel.java rename to app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/viewdto/DocumentsFormModel.java index 58e45614..a8e61177 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/DocumentsFormModel.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/viewdto/DocumentsFormModel.java @@ -1,4 +1,4 @@ -package com.gmeremit.online.gmeremittance_native.kycV3.view.personal; +package com.gmeremit.online.gmeremittance_native.kycV3.view.personal.viewdto; /** * A Simple POJO that resembles the data required for document form. diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/PersonalFormModel.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/viewdto/PersonalFormModel.java similarity index 71% rename from app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/PersonalFormModel.java rename to app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/viewdto/PersonalFormModel.java index 29f549c9..2d536be4 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/PersonalFormModel.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/viewdto/PersonalFormModel.java @@ -1,4 +1,4 @@ -package com.gmeremit.online.gmeremittance_native.kycV3.view.personal; +package com.gmeremit.online.gmeremittance_native.kycV3.view.personal.viewdto; /** * A Simple POJO that resembles the data required for personal form. @@ -54,4 +54,30 @@ public class PersonalFormModel { public void setAddress(String address) { this.address = address; } + + + public boolean isFullNameValid() + { + return false; + } + public boolean isGenderValid() + { + return false; + } + public boolean isDOBValid() + { + return false; + } + public boolean isEmailValid() + { + return false; + } + public boolean isAddressValid() + { + return false; + } + + public boolean areAllFieldsValid() { + return false; + } }