From d44f355a75ed0a21a6267eca45c3da461d4e233f Mon Sep 17 00:00:00 2001 From: preyearegmi Date: Tue, 28 Aug 2018 11:40:48 +0900 Subject: [PATCH] Edit flow added --- .../recipientadd/CountryDetailModel.java | 15 +++ .../recipientadd/ProvinceDetailModel.java | 16 +++ .../recipientadd/RecipientRelatedModel.java | 45 ++++++++ .../recipientadd/RecipientAddV2Presenter.java | 102 ++++++++++++++++++ .../RecipientAddV2PresenterInterface.java | 15 ++- .../recipientadd/RecipientAddV2Activity.java | 69 +++++++----- 6 files changed, 233 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientadd/CountryDetailModel.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientadd/CountryDetailModel.java index 7ccf0056..7fc06773 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientadd/CountryDetailModel.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientadd/CountryDetailModel.java @@ -62,4 +62,19 @@ public class CountryDetailModel { public void setProvinces(List provinces) { this.provinces = provinces; } + + public ProvinceDetailModel getSelectedProvinceFromList(String id) + { + if(provinces==null||provinces.size()<1) + return null; + else + { + for(ProvinceDetailModel item:provinces) + { + if(item.getId().equalsIgnoreCase(id)) + return item; + } + } + return null; + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientadd/ProvinceDetailModel.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientadd/ProvinceDetailModel.java index a25da058..74398f56 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientadd/ProvinceDetailModel.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientadd/ProvinceDetailModel.java @@ -47,4 +47,20 @@ public class ProvinceDetailModel { public void setDistrict(List district) { this.district = district; } + + + public DistrictDetailModel getSelectedDistrictFromList(String id) + { + if(district==null||district.size()<1) + return null; + else + { + for(DistrictDetailModel item:district) + { + if(item.getId().equalsIgnoreCase(id)) + return item; + } + } + return null; + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientadd/RecipientRelatedModel.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientadd/RecipientRelatedModel.java index 9bf76a0b..523d3f2a 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientadd/RecipientRelatedModel.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientadd/RecipientRelatedModel.java @@ -44,4 +44,49 @@ public class RecipientRelatedModel { } + public CountryDetailModel getSelectedCountryModelFromList(String id) + { + if(country==null||country.size()<1) + return null; + else + { + for(CountryDetailModel item:country) + { + if(item.getId().equalsIgnoreCase(id)) + return item; + } + } + return null; + } + + public RelationDetailModel getSelectedRelationModelFromList(String id) + { + if(relations==null||relations.size()<1) + return null; + else + { + for(RelationDetailModel item:relations) + { + if(item.getId().equalsIgnoreCase(id)) + return item; + } + } + return null; + } + + public TransferDetailModel getSelectedTransferModelFromList(String id) + { + if(transferReasons==null||transferReasons.size()<1) + return null; + else + { + for(TransferDetailModel item:transferReasons) + { + if(item.getId().equalsIgnoreCase(id)) + return item; + } + } + return null; + } + } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientadd/RecipientAddV2Presenter.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientadd/RecipientAddV2Presenter.java index dd5884de..b3d81135 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientadd/RecipientAddV2Presenter.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientadd/RecipientAddV2Presenter.java @@ -2,17 +2,21 @@ package com.gmeremit.online.gmeremittance_native.recipientV2.presenter.recipient import com.gmeremit.online.gmeremittance_native.base.BasePresenter; import com.gmeremit.online.gmeremittance_native.customwidgets.CustomAlertDialog; +import com.gmeremit.online.gmeremittance_native.exchange_rate.presenter.ExchangeRateV2Presenter; import com.gmeremit.online.gmeremittance_native.recipientV2.gateway.RecipientAddV2Gateway; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.AddRecipientApiResponse; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.CountryDetailModel; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.DistrictDetailModel; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.ProvinceDetailModel; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.RecipientRelatedDataApiResponse; +import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.RecipientRelatedModel; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.RelationDetailModel; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.TransferDetailModel; +import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientlisting.RecipientInfoModel; import com.gmeremit.online.gmeremittance_native.utils.Constants; import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponse; +import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.schedulers.Schedulers; @@ -75,6 +79,18 @@ public class RecipientAddV2Presenter extends BasePresenter implements RecipientA this.view.showToastMessage("Please fill up required details."); } + @Override + public void prepareRecipientForEdit(RecipientInfoModel recipientToBeEdited) { + compositeDisposable.add( Observable.zip( this.gateway.getRelatedDataFromServer(gateway.getAuth()), + Observable.just(recipientToBeEdited), EditableMergedData::new) + .doOnSubscribe(disposable -> this.view.showProgressBar(true, "Fetching data...")) + .doOnError((err) -> this.view.showProgressBar(false, "")) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new EditableMergedDataObserver()) + + ); + } + private boolean validateLocation(CountryDetailModel country, ProvinceDetailModel province, DistrictDetailModel district) { if (country != null) { @@ -147,4 +163,90 @@ public class RecipientAddV2Presenter extends BasePresenter implements RecipientA } } + + public class EditableMergedData + { + RecipientRelatedDataApiResponse dataApiResponse; + RecipientInfoModel recipientInfoModel; + + public EditableMergedData(RecipientRelatedDataApiResponse dataApiResponse, RecipientInfoModel recipientInfoModel) { + this.dataApiResponse = dataApiResponse; + this.recipientInfoModel = recipientInfoModel; + } + + public RecipientRelatedDataApiResponse getDataApiResponse() { + return dataApiResponse; + } + + public void setDataApiResponse(RecipientRelatedDataApiResponse dataApiResponse) { + this.dataApiResponse = dataApiResponse; + } + + public RecipientInfoModel getRecipientInfoModel() { + return recipientInfoModel; + } + + public void setRecipientInfoModel(RecipientInfoModel recipientInfoModel) { + this.recipientInfoModel = recipientInfoModel; + } + } + + + public class EditableMergedDataObserver extends GenericApiObserverResponse + { + + @Override + protected void onSuccess(EditableMergedData editableMergedData) { + if(editableMergedData.getDataApiResponse().getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) + { + RecipientRelatedModel metaData=editableMergedData.getDataApiResponse().getData(); + RecipientInfoModel editableData=editableMergedData.getRecipientInfoModel(); + + CountryDetailModel selectedCountryDetailModel=metaData.getSelectedCountryModelFromList(editableData.getCountryId()); + TransferDetailModel selectedTransferDetailModel=metaData.getSelectedTransferModelFromList(editableData.getReasonId()); + RelationDetailModel selectedRelationDetailModel=metaData.getSelectedRelationModelFromList(editableData.getRelationId()); + + ProvinceDetailModel selectedProvinceDetailModel=null; + DistrictDetailModel selectedDistrictDetailModel=null; + + if(selectedCountryDetailModel!=null) + { + selectedProvinceDetailModel=selectedCountryDetailModel.getSelectedProvinceFromList(editableData.getStateId()); + + if(selectedProvinceDetailModel!=null) + { + selectedDistrictDetailModel=selectedProvinceDetailModel.getSelectedDistrictFromList(editableData.getDistrictId()); + } + } + + view.showDataForEditing(editableData.getFirstName(),editableData.getMiddleName(),editableData.getLastName(), + selectedCountryDetailModel, + selectedProvinceDetailModel, + selectedDistrictDetailModel, + editableData.getAddress(), + selectedRelationDetailModel, + editableData.getMobileNumber(), + editableData.getEmail(), + selectedTransferDetailModel); + + + } + else + { + view.showToastMessage(editableMergedData.getDataApiResponse().getMsg()); + view.exitView(); + } + } + + @Override + public void onFailed(String message) { + + } + + @Override + protected void onConnectionNotEstablished(String message) { + + } + } + } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientadd/RecipientAddV2PresenterInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientadd/RecipientAddV2PresenterInterface.java index dfe70525..fe41a2ff 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientadd/RecipientAddV2PresenterInterface.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientadd/RecipientAddV2PresenterInterface.java @@ -8,6 +8,7 @@ import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.P import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.RecipientRelatedModel; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.RelationDetailModel; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.TransferDetailModel; +import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientlisting.RecipientInfoModel; public interface RecipientAddV2PresenterInterface extends BasePresenterInterface { @@ -15,8 +16,20 @@ public interface RecipientAddV2PresenterInterface extends BasePresenterInterface void addRecipient(String firstName, String middleName, String lastName, CountryDetailModel selectedCountry, ProvinceDetailModel selectedProvince, DistrictDetailModel selectedDistrict, String address, RelationDetailModel selectedRelation, String mobileNo, String email, TransferDetailModel selectedTransfer); + void prepareRecipientForEdit(RecipientInfoModel recipientToBeEdited); + interface RecipientAddV2ContractInterface extends BaseContractInterface { void showRelatedData(RecipientRelatedModel data); - } + + void showDataForEditing(String firstName, String middleName, String lastName, + CountryDetailModel selectedCountry, + ProvinceDetailModel selectedProvince, + DistrictDetailModel selectedDistrict, + String address, + RelationDetailModel selectedRelation, + String mobileNo, + String email, + TransferDetailModel selectedTransfer); + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/view/recipientadd/RecipientAddV2Activity.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/view/recipientadd/RecipientAddV2Activity.java index 5d4af0db..a0b3618d 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/view/recipientadd/RecipientAddV2Activity.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/view/recipientadd/RecipientAddV2Activity.java @@ -15,6 +15,7 @@ import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.P import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.RecipientRelatedModel; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.RelationDetailModel; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.TransferDetailModel; +import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientlisting.RecipientInfoModel; import com.gmeremit.online.gmeremittance_native.recipientV2.presenter.recipientadd.RecipientAddV2Presenter; import com.gmeremit.online.gmeremittance_native.recipientV2.presenter.recipientadd.RecipientAddV2PresenterInterface; import com.gmeremit.online.gmeremittance_native.recipientV2.view.RecipientCountryListingDialog; @@ -22,6 +23,7 @@ import com.gmeremit.online.gmeremittance_native.recipientV2.view.RecipientDistri import com.gmeremit.online.gmeremittance_native.recipientV2.view.RecipientProvinceListingDialog; import com.gmeremit.online.gmeremittance_native.recipientV2.view.RecipientRelationListingDialog; import com.gmeremit.online.gmeremittance_native.recipientV2.view.RecipientTransferListingDialog; +import com.gmeremit.online.gmeremittance_native.recipientV2.view.recipientlisting.RecipientListingV2Activity; import com.gmeremit.online.gmeremittance_native.utils.Constants; import java.util.List; @@ -79,25 +81,28 @@ public class RecipientAddV2Activity extends BaseActivity implements View.OnClick Button submitButton; - public static String RECIPIENT_INFO_BUNDLE_KEY="recipientInfoKey"; - - + public static String RECIPIENT_INFO_BUNDLE_KEY = "recipientInfoKey"; private RecipientAddV2PresenterInterface presenterInterface; private RecipientCountryListingDialog recipientCountryListingDialog; private CountryDetailModel selectedCountry; private ProvinceDetailModel selectedProvince; + private TransferDetailModel selectedTransferReason; + private RelationDetailModel seletedRelation; + private DistrictDetailModel selectedDistrict; + private List transferReasonList; private List countryList; private List relationList; private RecipientProvinceListingDialog provinceListingDialog; private RecipientDistrictListingDialog districtListingDialog; - private DistrictDetailModel selectedDistrict; private RecipientTransferListingDialog transferListingDialog; private RecipientRelationListingDialog relationListingDialog; - private TransferDetailModel selectedTransferReason; - private RelationDetailModel seletedRelation; + + + private RecipientInfoModel recipientToBeEdited = null; + /** * ed_firstname @@ -152,7 +157,15 @@ public class RecipientAddV2Activity extends BaseActivity implements View.OnClick private void performDefaultAction(Bundle savedInstanceState) { toolbarTitle.setText("Add Recipient"); //TODO modify this for reciepient CRUD - presenterInterface.getAllData(); + try { + recipientToBeEdited = getIntent().getExtras().getParcelable(RECIPIENT_INFO_BUNDLE_KEY); + } catch (Exception e) { + recipientToBeEdited = null; + } + if (recipientToBeEdited != null) + presenterInterface.prepareRecipientForEdit(recipientToBeEdited); + else + presenterInterface.getAllData(); } @Override @@ -202,21 +215,21 @@ public class RecipientAddV2Activity extends BaseActivity implements View.OnClick showTransferListingInDialog(); break; case R.id.iv_back: - onBackPressed(); + onBackPressed(); break; - case R.id.btn_submit: - this.presenterInterface.addRecipient(ed_firstname.getText().toString(), + case R.id.btn_submit: + this.presenterInterface.addRecipient(ed_firstname.getText().toString(), ed_middlename.getText().toString(), - ed_lastname.getText().toString(), - selectedCountry, - selectedProvince, - selectedDistrict, - ed_address.getText().toString(), - seletedRelation, - ed_mobile_no.getText().toString(), - ed_email.getText().toString(), - selectedTransferReason - ); + ed_lastname.getText().toString(), + selectedCountry, + selectedProvince, + selectedDistrict, + ed_address.getText().toString(), + seletedRelation, + ed_mobile_no.getText().toString(), + ed_email.getText().toString(), + selectedTransferReason + ); break; } } @@ -244,7 +257,7 @@ public class RecipientAddV2Activity extends BaseActivity implements View.OnClick if (this.selectedProvince != null) { districtListingDialog.setDistrictData(this.selectedProvince.getDistrict()); districtListingDialog.show(getFragmentManager(), "RecipientProvinceListingDialog"); - } else { + } else { showToastMessage("Select a State/Province first."); } } @@ -276,20 +289,20 @@ public class RecipientAddV2Activity extends BaseActivity implements View.OnClick if (countryPaymentService.getIsProvienceReq().equalsIgnoreCase(Constants.TRUE_STRING)) { ed_province.setText(""); selectedProvince = null; - selectedDistrict=null; + selectedDistrict = null; provinceViewContainer.setVisibility(View.VISIBLE); districtViewContainer.setVisibility(View.VISIBLE); } else { ed_province.setText(""); ed_district.setText(""); selectedProvince = null; - selectedDistrict=null; + selectedDistrict = null; provinceViewContainer.setVisibility(View.GONE); districtViewContainer.setVisibility(View.GONE); } if (recipientCountryListingDialog != null) { recipientCountryListingDialog.dismiss(); - recipientCountryListingDialog=null; + recipientCountryListingDialog = null; } } @@ -308,7 +321,7 @@ public class RecipientAddV2Activity extends BaseActivity implements View.OnClick this.ed_province.setText(this.selectedProvince.getText()); if (provinceListingDialog != null) { provinceListingDialog.dismiss(); - provinceListingDialog=null; + provinceListingDialog = null; } } @@ -318,7 +331,7 @@ public class RecipientAddV2Activity extends BaseActivity implements View.OnClick this.ed_district.setText(this.selectedDistrict.getText()); if (districtListingDialog != null) { districtListingDialog.dismiss(); - districtListingDialog=null; + districtListingDialog = null; } } @@ -328,7 +341,7 @@ public class RecipientAddV2Activity extends BaseActivity implements View.OnClick this.ed_transfer.setText(this.selectedTransferReason.getText()); if (transferListingDialog != null) { transferListingDialog.dismiss(); - transferListingDialog=null; + transferListingDialog = null; } } @@ -338,7 +351,7 @@ public class RecipientAddV2Activity extends BaseActivity implements View.OnClick this.ed_relation.setText(this.seletedRelation.getText()); if (relationListingDialog != null) { relationListingDialog.dismiss(); - relationListingDialog=null; + relationListingDialog = null; } } }