From aac5ab1753fb6e47fb3b2a04128c1627f87d7ce3 Mon Sep 17 00:00:00 2001 From: Preyea Regmi Date: Mon, 3 Jun 2019 16:01:03 +0545 Subject: [PATCH] Coupon feature added --- .idea/caches/build_file_checksums.ser | Bin 0 -> 662 bytes app/build.gradle | 4 +- app/src/dev/google-services.json | 4 +- .../datav2/ExchangeCalculationModel.java | 44 ++++++ .../resend/ReSendMoneyV2Presenter.java | 3 +- .../ReSendMoneyV2PresenterInterface.java | 2 +- .../ResendMoneyAmountDetailFragment.java | 87 ++++++++++- .../rewardlisting/OrderListingRvAdapter.java | 34 ++++- .../rewardlisting/RewardListingRvAdapter.java | 31 ++++ .../RewardListingV2Presenter.java | 13 ++ .../RewardListingV2PresenterInterface.java | 6 + .../view/RewardParentActionListener.java | 12 ++ .../rewardlisting/OrderHistoryFragment.java | 66 +++++++- .../rewardlisting/RewardListFragment.java | 61 +++++++- .../RewardListingV2Activity.java | 13 +- .../model/SendMoneyAPIRequestBody.java | 8 + .../presenter/SendMoneyV2Presenter.java | 8 +- .../SendMoneyV2PresenterInterface.java | 2 +- .../AmountDetailSendMoneyFragment.java | 143 +++++++++++++----- .../ic_rounded_background_coloured.xml | 2 +- .../layout/dialog_fingerprint_auth_prompt.xml | 4 +- ...fragment_amount_detail_resend_money_v2.xml | 105 ++++++++++++- .../fragment_amount_detail_send_money_v2.xml | 82 +++++++++- .../res/layout/fragment_order_history.xml | 64 +++++--- .../main/res/layout/fragment_reward_list.xml | 1 + .../main/res/layout/fragment_splash_one.xml | 1 - app/src/main/res/layout/order_list_item.xml | 95 +++++++++++- app/src/main/res/layout/reward_list_item.xml | 74 ++++++++- 28 files changed, 861 insertions(+), 108 deletions(-) create mode 100644 .idea/caches/build_file_checksums.ser create mode 100644 app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/RewardParentActionListener.java diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser new file mode 100644 index 0000000000000000000000000000000000000000..cc607b735690f77b7ae092a92850a33b711eb069 GIT binary patch literal 662 zcmZ4UmVvdnh`~NNKUXg?FQq6yGexf?KR>5fFEb@IQ7^qHF(oHeub?PDD>b=9F91S2 zm1gFoxMk*~I%lLNXBU^|7Q2L-Ts|(GuF1r}nf0c10SfXjYom*&5H=NGf+n(_Q?YAa#j zNdoy7rmK*lj)4uNaQ(xb2LB7^dFqF9FA863c(H^*ASXXLF$WY{1*t_PnW@F4aK%|a zC7LA{ZRS 0; } + private void showCoupon(String discountValue, String discountType, String schemeId, String discountPercent, String couponName) { + + String couponString = ""; + if (schemeId == null || schemeId.length() < 1) { + couponString = "0"; + } else { + //Percent type discount + + + if (discountType.equalsIgnoreCase("1")) { + couponString = couponName + " (" + discountPercent + "%)"; + } + //Value type discount + else { + couponString = couponName + " (" + discountValue + " KRW)"; + } + } + gmeCouponTxt.setText(couponString); + + + couponViewContainer.setVisibility(View.VISIBLE); + couponBottomView.setVisibility(View.VISIBLE); + } + @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { @@ -293,12 +349,23 @@ public class ResendMoneyAmountDetailFragment extends BaseFragment implements Vie selectedsendingCurrency = data.getCollCurr(); selectedExRateId = data.getExrateId(); selectedTransferAmount = data.getsAmt(); + selectedSchemeId = data.getSchemeId(); + + //TODO Dummy data + data.setSchemeId("666"); + data.setDiscountType("1"); + data.setDiscountValue("5000.7324423429"); + data.setDiscountPercent("10"); + data.setCouponName("Gold"); String transferDisplay = " - " + Utils.formatCurrency(selectedTransferFeeAmount) + " " + selectedsendingCurrency + " (" + getString(R.string.transfer_fee_included_text) + ")"; String exRateDisplay = " " + selectedExRate + " (" + getString(R.string.current_exchange_rate_text) + ")"; - showTransferfeeAndExRate(true, transferDisplay, exRateDisplay); + showTransferfeeAndExRate(true, transferDisplay, exRateDisplay,""); showSendAndRecieveAmount(selectedSendAmount, selectedRecipientAmount); + + showCoupon(Utils.formatCurrencyWithoutTruncatingDecimal(data.getDiscountValue()), data.getDiscountType(), data.getSchemeId(), data.getDiscountPercent(), data.getCouponName()); + updateButtonToCalculate(false); } else { @@ -321,12 +388,16 @@ public class ResendMoneyAmountDetailFragment extends BaseFragment implements Vie selectedsendingCurrency = data.getCollCurr(); selectedExRateId = data.getExrateId(); selectedTransferAmount = data.getsAmt(); + selectedSchemeId = data.getSchemeId(); String transferDisplay = " - " + Utils.formatCurrency(selectedTransferFeeAmount) + " " + selectedsendingCurrency + " (" + getString(R.string.transfer_fee_included_text) + ")"; String exRateDisplay = " " + selectedExRate + " (" + getString(R.string.current_exchange_rate_text) + ")"; - showTransferfeeAndExRate(true, transferDisplay, exRateDisplay); + showTransferfeeAndExRate(true, transferDisplay, exRateDisplay,""); showSendAndRecieveAmount(selectedSendAmount, selectedRecipientAmount); + + showCoupon(Utils.formatCurrencyWithoutTruncatingDecimal(data.getDiscountValue()), data.getDiscountType(), data.getSchemeId(), data.getDiscountPercent(), data.getCouponName()); + updateButtonToCalculate(false); } else { showPopUpMessage(exchangeCalculationApiResponse.getMsg(), CustomAlertDialog.AlertType.FAILED, null); @@ -459,7 +530,7 @@ public class ResendMoneyAmountDetailFragment extends BaseFragment implements Vie shouldCaulatedByRecipient = false; updateRecievingAmount(""); updateButtonToCalculate(true); - showTransferfeeAndExRate(false, "", ""); + showTransferfeeAndExRate(false, "", "",""); } } @@ -480,7 +551,7 @@ public class ResendMoneyAmountDetailFragment extends BaseFragment implements Vie shouldCaulatedByRecipient = true; updateSendAmount(""); updateButtonToCalculate(true); - showTransferfeeAndExRate(false, "", ""); + showTransferfeeAndExRate(false, "", "",""); } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/adapter/rewardlisting/OrderListingRvAdapter.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/adapter/rewardlisting/OrderListingRvAdapter.java index d90d504e..4fb5326d 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/adapter/rewardlisting/OrderListingRvAdapter.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/adapter/rewardlisting/OrderListingRvAdapter.java @@ -5,12 +5,16 @@ import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.TextView; import com.gmeremit.online.gmeremittance_native.R; import java.util.ArrayList; import java.util.List; +import butterknife.BindView; +import butterknife.ButterKnife; + public class OrderListingRvAdapter extends RecyclerView.Adapter { private final OrderItemSelectionListener listener; @@ -38,26 +42,42 @@ public class OrderListingRvAdapter extends RecyclerView.Adapter data) - { - if(data!=null&&data.size()>0) { + public void setData(List data) { + if (data != null && data.size() > 0) { this.data = data; notifyDataSetChanged(); } } - public interface OrderItemSelectionListener - { + public interface OrderItemSelectionListener { void onOrderSelected(Object order); } - public class OrderListingItemViewHolder extends RecyclerView.ViewHolder - { + public class OrderListingItemViewHolder extends RecyclerView.ViewHolder { + + @BindView(R.id.tv_date) + TextView dateTxt; + + @BindView(R.id.tv_gme_order_id) + TextView orderIdTxt; + + @BindView(R.id.tv_order_name) + TextView orderNameTxt; + + @BindView(R.id.tv_branch_name) + TextView branchName; + + @BindView(R.id.tv_order_point) + TextView orderPointTxt; + + @BindView(R.id.tv_status) + TextView statusTxt; public OrderListingItemViewHolder(@NonNull View itemView) { super(itemView); + ButterKnife.bind(this, itemView); } } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/adapter/rewardlisting/RewardListingRvAdapter.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/adapter/rewardlisting/RewardListingRvAdapter.java index e400597a..1e0b9601 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/adapter/rewardlisting/RewardListingRvAdapter.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/adapter/rewardlisting/RewardListingRvAdapter.java @@ -5,7 +5,11 @@ import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; +import com.bumptech.glide.Glide; import com.gmeremit.online.gmeremittance_native.R; import com.gmeremit.online.gmeremittance_native.homeV2.adapters.HomeMenuRvAdapterV2; import com.gmeremit.online.gmeremittance_native.homeV2.model.MenuItem; @@ -14,6 +18,9 @@ import com.gmeremit.online.gmeremittance_native.homeV2.view.HomeMenuItemViewHold import java.util.ArrayList; import java.util.List; +import butterknife.BindView; +import butterknife.ButterKnife; + public class RewardListingRvAdapter extends RecyclerView.Adapter { private final RewardCLickListener listener; @@ -34,6 +41,18 @@ public class RewardListingRvAdapter extends RecyclerView.Adapter subscribeToRewardFetchingEvent() { + return null; + } + + @Override + public Observable subscribeToOrderListFetchingEvent() { + return null; + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/presenter/rewardlisting/RewardListingV2PresenterInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/presenter/rewardlisting/RewardListingV2PresenterInterface.java index 17b436cd..b6de442a 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/presenter/rewardlisting/RewardListingV2PresenterInterface.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/presenter/rewardlisting/RewardListingV2PresenterInterface.java @@ -3,10 +3,16 @@ package com.gmeremit.online.gmeremittance_native.rewardV2.presenter.rewardlistin import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface; import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface; +import io.reactivex.Observable; +import okhttp3.ResponseBody; + public interface RewardListingV2PresenterInterface extends BasePresenterInterface { void fetchRewards(); + Observable subscribeToRewardFetchingEvent(); + Observable subscribeToOrderListFetchingEvent(); + interface RewardListingV2ContractInterface extends BaseContractInterface { void lazyInstatiateView(); diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/RewardParentActionListener.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/RewardParentActionListener.java new file mode 100644 index 00000000..873bf5cb --- /dev/null +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/RewardParentActionListener.java @@ -0,0 +1,12 @@ +package com.gmeremit.online.gmeremittance_native.rewardV2.view; + +import com.gmeremit.online.gmeremittance_native.rewardV2.presenter.rewardlisting.RewardListingV2PresenterInterface; + +import io.reactivex.Observable; + +public interface RewardParentActionListener { + + + RewardListingV2PresenterInterface getPresenter(); + +} diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/OrderHistoryFragment.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/OrderHistoryFragment.java index b212bc6e..9a6b6d56 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/OrderHistoryFragment.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/OrderHistoryFragment.java @@ -2,16 +2,33 @@ package com.gmeremit.online.gmeremittance_native.rewardV2.view.rewardlisting; import android.os.Bundle; import android.support.annotation.Nullable; +import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.gmeremit.online.gmeremittance_native.R; import com.gmeremit.online.gmeremittance_native.base.BaseFragment; +import com.gmeremit.online.gmeremittance_native.rewardV2.adapter.rewardlisting.OrderListingRvAdapter; +import com.gmeremit.online.gmeremittance_native.rewardV2.view.RewardParentActionListener; +import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponseV2; +import com.gmeremit.online.gmeremittance_native.utils.https.GenericResponseDataModel; +import butterknife.BindView; import butterknife.ButterKnife; +import io.reactivex.disposables.CompositeDisposable; + +public class OrderHistoryFragment extends BaseFragment implements OrderListingRvAdapter.OrderItemSelectionListener { + + @BindView(R.id.orderListRv) + RecyclerView orderListRv; + + private CompositeDisposable compositeDisposable; + + private OrderListObserver orderListObserver; + + private OrderListingRvAdapter orderListAdapter; -public class OrderHistoryFragment extends BaseFragment { @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -27,11 +44,58 @@ public class OrderHistoryFragment extends BaseFragment { } private void performDefaultAction(Bundle savedInstanceState) { + if (savedInstanceState == null) { + compositeDisposable.add(((RewardParentActionListener) getActivity()).getPresenter().subscribeToOrderListFetchingEvent().subscribeWith(orderListObserver)); + } + } + private void setupRv() { + orderListAdapter=new OrderListingRvAdapter(this); + orderListRv.setAdapter(orderListAdapter); } private void initialize() { + compositeDisposable = new CompositeDisposable(); + orderListObserver = new OrderListObserver(); + setupRv(); + } + + @Override + public void onOrderSelected(Object order) { + + } + + + @Override + public void onDestroy() { + super.onDestroy(); + if (compositeDisposable != null && !compositeDisposable.isDisposed()) + compositeDisposable.dispose(); + } + + + public class OrderListObserver extends GenericApiObserverResponseV2 { + + + @Override + protected void onSuccess(GenericResponseDataModel t) { + + } + + @Override + public void onFailed(String message) { + + } + + @Override + protected void onConnectionNotEstablished(String message) { + + } + + @Override + protected void unauthorizedAccess(String message) { + } } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/RewardListFragment.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/RewardListFragment.java index 12837798..da466d68 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/RewardListFragment.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/RewardListFragment.java @@ -10,19 +10,27 @@ import android.view.ViewGroup; import com.gmeremit.online.gmeremittance_native.R; import com.gmeremit.online.gmeremittance_native.base.BaseFragment; import com.gmeremit.online.gmeremittance_native.kycV2.presenter.kyc.KYCV2Presenter; +import com.gmeremit.online.gmeremittance_native.rewardV2.adapter.rewardlisting.RewardListingRvAdapter; +import com.gmeremit.online.gmeremittance_native.rewardV2.view.RewardParentActionListener; +import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponseV2; +import com.gmeremit.online.gmeremittance_native.utils.https.GenericResponseDataModel; import butterknife.BindView; import butterknife.ButterKnife; +import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.disposables.Disposable; +import io.reactivex.observers.DisposableObserver; -public class RewardListFragment extends BaseFragment { +public class RewardListFragment extends BaseFragment implements RewardListingRvAdapter.RewardCLickListener { @BindView(R.id.rewards_rv) RecyclerView rewardsRV; - @BindView(R.id.txt_reward_points) - RecyclerView txt_reward_points; + private RewardListingRvAdapter rewardListingRvAdapter; + private RewardListObserver rewardlistObserver; + private CompositeDisposable compositeDisposable; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -38,13 +46,58 @@ public class RewardListFragment extends BaseFragment { } private void performDefaultAction(Bundle savedInstanceState) { - + if (savedInstanceState == null) { + compositeDisposable.add(((RewardParentActionListener) getActivity()).getPresenter().subscribeToRewardFetchingEvent().subscribeWith(rewardlistObserver)); + } } private void initialize() { + compositeDisposable = new CompositeDisposable(); + rewardlistObserver = new RewardListObserver(); + setupRv(); + } + + private void setupRv() { + rewardListingRvAdapter = new RewardListingRvAdapter(this); + rewardsRV.setAdapter(rewardListingRvAdapter); + + } + + @Override + public void onDestroy() { + super.onDestroy(); + if (compositeDisposable != null && !compositeDisposable.isDisposed()) + compositeDisposable.dispose(); + } + + @Override + public void onRewardSelected(Object reward) { } + public class RewardListObserver extends GenericApiObserverResponseV2 { + + + @Override + protected void onSuccess(GenericResponseDataModel t) { + + } + + @Override + public void onFailed(String message) { + + } + + @Override + protected void onConnectionNotEstablished(String message) { + + } + + @Override + protected void unauthorizedAccess(String message) { + + } + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/RewardListingV2Activity.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/RewardListingV2Activity.java index d2857beb..d628c558 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/RewardListingV2Activity.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/RewardListingV2Activity.java @@ -4,6 +4,7 @@ import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.os.Bundle; +import android.support.v7.widget.RecyclerView; import com.gmeremit.online.gmeremittance_native.R; import com.gmeremit.online.gmeremittance_native.base.BaseActivity; @@ -12,13 +13,14 @@ import com.gmeremit.online.gmeremittance_native.kycV2.view.view2.KYCView2Fragmen import com.gmeremit.online.gmeremittance_native.rewardV2.adapter.rewardlisting.RewardListingViewPagerAdapter; import com.gmeremit.online.gmeremittance_native.rewardV2.presenter.rewardlisting.RewardListingV2Presenter; import com.gmeremit.online.gmeremittance_native.rewardV2.presenter.rewardlisting.RewardListingV2PresenterInterface; +import com.gmeremit.online.gmeremittance_native.rewardV2.view.RewardParentActionListener; import java.util.ArrayList; import java.util.List; import butterknife.BindView; -public class RewardListingV2Activity extends BaseActivity implements RewardListingV2PresenterInterface.RewardListingV2ContractInterface { +public class RewardListingV2Activity extends BaseActivity implements RewardListingV2PresenterInterface.RewardListingV2ContractInterface, RewardParentActionListener { @BindView(R.id.rewardFormViewPager) ViewPager viewPager; @@ -26,6 +28,7 @@ public class RewardListingV2Activity extends BaseActivity implements RewardListi @BindView(R.id.rewardTabLayout) TabLayout tabLayout; + private RewardListingV2PresenterInterface presenter; private RewardListingViewPagerAdapter rewardlistingViewPagerAdapter; private RewardListFragment rewardlistingFrag; @@ -43,7 +46,9 @@ public class RewardListingV2Activity extends BaseActivity implements RewardListi private void performDefaultAction(Bundle savedInstanceState) { if (savedInstanceState == null) { presenter.fetchRewards(); - } else { + } else + { + } @@ -95,4 +100,8 @@ public class RewardListingV2Activity extends BaseActivity implements RewardListi setUpTabLayout(); } + @Override + public RewardListingV2PresenterInterface getPresenter() { + return presenter; + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/model/SendMoneyAPIRequestBody.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/model/SendMoneyAPIRequestBody.java index 4a85b90a..48c2fa8f 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/model/SendMoneyAPIRequestBody.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/model/SendMoneyAPIRequestBody.java @@ -366,6 +366,14 @@ public class SendMoneyAPIRequestBody { isUseBiometric = useBiometric; } + public String getSchemeId() { + return schemeId; + } + + public void setSchemeId(String schemeId) { + this.schemeId = schemeId; + } + @Override public String toString() { return "SendMoneyAPIRequestBody{" + diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2Presenter.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2Presenter.java index b818fec3..753aca38 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2Presenter.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2Presenter.java @@ -59,6 +59,8 @@ public class SendMoneyV2Presenter extends BasePresenter implements SendMoneyV2Pr private String selectedCalcBy = null; private String selectedForexId = null; private String selectedTransferAmount = null; + private String selectedSchemeId=null; + private long countDownRemainingValue; @@ -172,7 +174,7 @@ public class SendMoneyV2Presenter extends BasePresenter implements SendMoneyV2Pr @Override public void setSendingAmount(String sendingAmount, String recipientCurrencyCode, String selectedExRate, String recievingAmount, String transferFee, - boolean shouldCalcByRecipient, String forexId, String transferAmount) { + boolean shouldCalcByRecipient, String forexId, String transferAmount, String schemeId) { this.selectedSendingAmount = sendingAmount; this.selectedSendingCurrency = recipientCurrencyCode; this.selectedExRate = selectedExRate; @@ -181,6 +183,7 @@ public class SendMoneyV2Presenter extends BasePresenter implements SendMoneyV2Pr this.selectedCalcBy = shouldCalcByRecipient ? Constants.CALC_BY_RECIPEINT : Constants.CALC_BY_SENDER; this.selectedForexId = forexId; this.selectedTransferAmount = transferAmount; + this.selectedSchemeId=schemeId; } @Override @@ -190,6 +193,7 @@ public class SendMoneyV2Presenter extends BasePresenter implements SendMoneyV2Pr selectedSendingCurrency = null; selectedRecievingAmount = null; selectedTransferAmount = null; + selectedSchemeId=null; } private boolean checkIfUserHasEnabledBiometricAuth() { @@ -307,6 +311,8 @@ public class SendMoneyV2Presenter extends BasePresenter implements SendMoneyV2Pr sendMoneyAPIRequestBody.setTxnPassword(password); sendMoneyAPIRequestBody.setUseBiometric(isBiometricUsed); + sendMoneyAPIRequestBody.setSchemeId(selectedSchemeId); + compositeObservable.add( gateway.performSendMoneyTransaction(gateway.getAuth(), sendMoneyAPIRequestBody) .subscribeOn(Schedulers.io()) diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2PresenterInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2PresenterInterface.java index 3c4756e6..12a626bb 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2PresenterInterface.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2PresenterInterface.java @@ -40,7 +40,7 @@ public interface SendMoneyV2PresenterInterface extends BasePresenterInterface { VerificationViewModel getVerificationRelatedData(); - void setSendingAmount(String sendingAmount, String recipientCurrencyCode, String selectedExRate, String recievingAmount, String transferFee, boolean calcBy, String forexId,String transferAmount); + void setSendingAmount(String sendingAmount, String recipientCurrencyCode, String selectedExRate, String recievingAmount, String transferFee, boolean calcBy, String forexId,String transferAmount,String schemeId); void clearExRateData(); diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/amountdetail/AmountDetailSendMoneyFragment.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/amountdetail/AmountDetailSendMoneyFragment.java index b7cb277a..70700aff 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/amountdetail/AmountDetailSendMoneyFragment.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/amountdetail/AmountDetailSendMoneyFragment.java @@ -5,9 +5,13 @@ import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.support.annotation.Nullable; +import android.support.v4.content.ContextCompat; import android.support.v4.view.ViewCompat; import android.text.Editable; +import android.text.Spannable; +import android.text.SpannableString; import android.text.TextWatcher; +import android.text.style.ForegroundColorSpan; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; @@ -53,12 +57,26 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. @BindView(R.id.transferFeeTxtView) TextView transferFeeTxtView; + @BindView(R.id.exchangeRateTxtView) TextView exchangeRateTxtView; @BindView(R.id.recepientCurrencyTextView) TextView recepientCurrencyTextView; + @BindView(R.id.gmeCouponTxt) + TextView gmeCouponTxt; + + @BindView(R.id.gmeCouponTitleTxt) + TextView gmeCouponTitleTxt; + + + @BindView(R.id.couponViewContainer) + View couponViewContainer; + + @BindView(R.id.couponBottomView) + View couponBottomView; + @BindView(R.id.countrySelectionSpinner) ViewGroup countrySelectionSpinner; @@ -92,6 +110,7 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. private String selectedExRateId; private String selectedExRateWithoutTrunc; private String selectedTransferAmount; + private String selectedSchemeId; @Override @@ -193,12 +212,11 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. } - private boolean focusOutAndHideKeyboard() { - if(sendMoneyEditText.hasFocus()||recieveMoneyEditText.hasFocus()) - { + private boolean focusOutAndHideKeyboard() { + if (sendMoneyEditText.hasFocus() || recieveMoneyEditText.hasFocus()) { - View currentViewWithFocus=rootView.getFocusedChild(); - if(currentViewWithFocus!=null) + View currentViewWithFocus = rootView.getFocusedChild(); + if (currentViewWithFocus != null) currentViewWithFocus.clearFocus(); hideKeyBoard(); @@ -221,7 +239,7 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. hideKeyBoard(); sendMoneyEditText.clearFocus(); recieveMoneyEditText.clearFocus(); - ((SendMoneyActionListener) getActivity()).getPresenter().setSendingAmount(sendMoneyEditText.getText().toString(), amountDetailRelatedData.getDefaultSelectedCurrency().getCurrencyCode(), selectedExRateWithoutTrunc, selectedRecipientAmount, selectedTransferFeeAmount, shouldCaulatedByRecipient, selectedExRateId,selectedTransferAmount); + ((SendMoneyActionListener) getActivity()).getPresenter().setSendingAmount(sendMoneyEditText.getText().toString(), amountDetailRelatedData.getDefaultSelectedCurrency().getCurrencyCode(), selectedExRateWithoutTrunc, selectedRecipientAmount, selectedTransferFeeAmount, shouldCaulatedByRecipient, selectedExRateId, selectedTransferAmount, selectedSchemeId); ((SendMoneyActionListener) getActivity()).showTransactionReviewPage(); } @@ -265,7 +283,7 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. this.recepientCurrencyTextView.setText(selectedCountryCurrency); } - private void showTransferfeeAndExRate(boolean action, String transferDisplay, String exRateDisplay) { + private void showTransferfeeAndExRate(boolean action, String transferDisplay, String exRateDisplay, String discountValue) { if (action) { @@ -279,18 +297,32 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. if (this.transferFeeTxtView.getVisibility() == View.VISIBLE) this.transferFeeTxtView.setVisibility(View.INVISIBLE); - this.transferFeeTxtView.setText(transferDisplay); + + Spannable transString = new SpannableString(transferDisplay + discountValue); + transString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(getActivity(), R.color.darkgray)), 0, transferDisplay.length() , Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + transString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(getActivity(), R.color.colorPrimary)), transferDisplay.length(), transferDisplay.length() + discountValue.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + transferFeeTxtView.setText(transString); + this.transferFeeTxtView.setTranslationY(this.transferFeeTxtView.getHeight()); this.transferFeeTxtView.setVisibility(View.VISIBLE); ViewCompat.animate(this.transferFeeTxtView).translationY(0).setDuration(550).setInterpolator(this.interpolator).start(); + if (couponViewContainer.getVisibility() != View.VISIBLE) { + couponViewContainer.setVisibility(View.VISIBLE); + couponBottomView.setVisibility(View.VISIBLE); + } + } else { if (exchangeRateTxtView.getVisibility() == View.VISIBLE) this.exchangeRateTxtView.setVisibility(View.INVISIBLE); - if (transferFeeTxtView.getVisibility() == View.VISIBLE) { + if (transferFeeTxtView.getVisibility() == View.VISIBLE) this.transferFeeTxtView.setVisibility(View.INVISIBLE); + + if (couponViewContainer.getVisibility() == View.VISIBLE) { + couponViewContainer.setVisibility(View.INVISIBLE); + couponBottomView.setVisibility(View.INVISIBLE); } } } @@ -316,8 +348,7 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. updateRecievingAmount(""); updateButtonToCalculate(true); shouldCaulatedByRecipient = false; - } - else + } else getForex(); } @@ -367,21 +398,32 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. selectedSendAmount = data.getCollAmt(); selectedsendingCurrency = data.getCollCurr(); selectedExRateId = data.getExrateId(); - selectedTransferAmount=data.getsAmt(); + selectedTransferAmount = data.getsAmt(); + selectedSchemeId = data.getSchemeId(); + + //TODO Dummy data + data.setSchemeId("666"); + data.setDiscountType("1"); + data.setDiscountValue("5000.7324423429"); + data.setDiscountPercent("10"); + data.setCouponName("Gold"); + - String transferDisplay = " - " + Utils.formatCurrency(selectedTransferFeeAmount) + " " + selectedsendingCurrency + " ("+getString(R.string.transfer_fee_included_text)+")"; - String exRateDisplay = " " + selectedExRate + " ("+getString(R.string.current_exchange_rate_text)+")"; + String transferDisplay = " -" + Utils.formatCurrency(selectedTransferFeeAmount) + " " + selectedsendingCurrency + " (" + getString(R.string.transfer_fee_included_text) + ")"; + String exRateDisplay = " " + selectedExRate + " (" + getString(R.string.current_exchange_rate_text) + ")"; - showTransferfeeAndExRate(true, transferDisplay, exRateDisplay); + showTransferfeeAndExRate(true, transferDisplay, exRateDisplay, ""); showSendAndRecieveAmount(selectedSendAmount, selectedRecipientAmount); + + + showCoupon(Utils.formatCurrencyWithoutTruncatingDecimal(data.getDiscountValue()), data.getDiscountType(), data.getSchemeId(), data.getDiscountPercent(), data.getCouponName()); + updateButtonToCalculate(false); } else showPopUpMessage(exchangeCalculationApiResponse.getMsg(), CustomAlertDialog.AlertType.FAILED, null); - } - else - { - scheduleTaskLater(()->{ + } else { + scheduleTaskLater(() -> { showProgressBar(false, ""); if (exchangeCalculationApiResponse.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) { ExchangeCalculationModel data = exchangeCalculationApiResponse.getData(); @@ -392,13 +434,17 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. selectedSendAmount = data.getCollAmt(); selectedsendingCurrency = data.getCollCurr(); selectedExRateId = data.getExrateId(); - selectedTransferAmount=data.getsAmt(); + selectedTransferAmount = data.getsAmt(); + selectedSchemeId = data.getSchemeId(); - String transferDisplay = " - " + Utils.formatCurrency(selectedTransferFeeAmount) + " " + selectedsendingCurrency + " ("+getString(R.string.transfer_fee_included_text)+")"; - String exRateDisplay = " " + selectedExRate + " ("+getString(R.string.current_exchange_rate_text)+")"; + String transferDisplay = " - " + Utils.formatCurrency(selectedTransferFeeAmount) + " " + selectedsendingCurrency + " (" + getString(R.string.transfer_fee_included_text) + ")"; + String exRateDisplay = " " + selectedExRate + " (" + getString(R.string.current_exchange_rate_text) + ")"; - showTransferfeeAndExRate(true, transferDisplay, exRateDisplay); + showTransferfeeAndExRate(true, transferDisplay, exRateDisplay, data.getDiscountValue()); showSendAndRecieveAmount(selectedSendAmount, selectedRecipientAmount); + + showCoupon(Utils.formatCurrencyWithoutTruncatingDecimal(data.getDiscountValue()), data.getDiscountType(), data.getSchemeId(), data.getDiscountPercent(), data.getCouponName()); + updateButtonToCalculate(false); } else @@ -410,13 +456,11 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. @Override public void onFailed(String message) { - if(isUIReady()) { + if (isUIReady()) { showProgressBar(false, ""); showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null); - } - else - { - scheduleTaskLater(()->{ + } else { + scheduleTaskLater(() -> { showProgressBar(false, ""); showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null); }); @@ -425,13 +469,11 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. @Override protected void onConnectionNotEstablished(String message) { - if(isUIReady()) { + if (isUIReady()) { showProgressBar(false, ""); showPopUpMessage(message, CustomAlertDialog.AlertType.NO_INTERNET, null); - } - else - { - scheduleTaskLater(()->{ + } else { + scheduleTaskLater(() -> { showProgressBar(false, ""); showPopUpMessage(message, CustomAlertDialog.AlertType.NO_INTERNET, null); }); @@ -441,9 +483,33 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. @Override protected void unauthorizedAccess(String message) { GmeApplication.getStorage().edit().clear().commit(); - showPopUpMessage(message, CustomAlertDialog.AlertType.ALERT,alertType -> logout()); + showPopUpMessage(message, CustomAlertDialog.AlertType.ALERT, alertType -> logout()); + + } + } + private void showCoupon(String discountValue, String discountType, String schemeId, String discountPercent, String couponName) { + + String couponString = ""; + if (schemeId == null || schemeId.length() < 1) { + couponString = "0"; + } else { + //Percent type discount + + + if (discountType.equalsIgnoreCase("1")) { + couponString = couponName + " (" + discountPercent + "%)"; + } + //Value type discount + else { + couponString = couponName + " (" + discountValue + " KRW)"; + } } + gmeCouponTxt.setText(couponString); + + + couponViewContainer.setVisibility(View.VISIBLE); + couponBottomView.setVisibility(View.VISIBLE); } public class AmountDetailRelatedDataObserver extends GenericApiObserverResponse { @@ -492,17 +558,16 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. @Override protected void unauthorizedAccess(String message) { GmeApplication.getStorage().edit().clear().commit(); - showPopUpMessage(message, CustomAlertDialog.AlertType.ALERT,alertType -> logout()); + showPopUpMessage(message, CustomAlertDialog.AlertType.ALERT, alertType -> logout()); } } private boolean validateAll() { - return validateAmountIsNotEmpty(sendMoneyEditText.getText().toString())&&validateAmountIsNotEmpty(recieveMoneyEditText.getText().toString()); + return validateAmountIsNotEmpty(sendMoneyEditText.getText().toString()) && validateAmountIsNotEmpty(recieveMoneyEditText.getText().toString()); } - private void updateButtonToCalculate(boolean action) { shouldCalculateExRate = action; if (action) @@ -585,7 +650,7 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. shouldCaulatedByRecipient = false; updateRecievingAmount(""); updateButtonToCalculate(true); - showTransferfeeAndExRate(false, "", ""); + showTransferfeeAndExRate(false, "", "", ""); } } @@ -606,7 +671,7 @@ public class AmountDetailSendMoneyFragment extends BaseFragment implements View. shouldCaulatedByRecipient = true; updateSendAmount(""); updateButtonToCalculate(true); - showTransferfeeAndExRate(false, "", ""); + showTransferfeeAndExRate(false, "", "", ""); } diff --git a/app/src/main/res/drawable/ic_rounded_background_coloured.xml b/app/src/main/res/drawable/ic_rounded_background_coloured.xml index 8a957806..ce2280da 100644 --- a/app/src/main/res/drawable/ic_rounded_background_coloured.xml +++ b/app/src/main/res/drawable/ic_rounded_background_coloured.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/layout/dialog_fingerprint_auth_prompt.xml b/app/src/main/res/layout/dialog_fingerprint_auth_prompt.xml index 19291e2d..2a9d7dc3 100644 --- a/app/src/main/res/layout/dialog_fingerprint_auth_prompt.xml +++ b/app/src/main/res/layout/dialog_fingerprint_auth_prompt.xml @@ -1,5 +1,6 @@ + android:layout_gravity="center" /> + @@ -112,7 +116,7 @@ android:layout_height="50dp" /> - + android:textSize="15sp"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:padding="18dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + android:paddingBottom="4dp" + android:visibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/searchViewContainer"> - + + + + app:layoutManager="android.support.v7.widget.LinearLayoutManager" + app:layout_constraintTop_toBottomOf="@id/barrier4" /> + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_reward_list.xml b/app/src/main/res/layout/fragment_reward_list.xml index e4a94628..7089781a 100644 --- a/app/src/main/res/layout/fragment_reward_list.xml +++ b/app/src/main/res/layout/fragment_reward_list.xml @@ -87,6 +87,7 @@ android:id="@+id/rewards_rv" android:layout_width="match_parent" android:layout_height="0dp" + app:layoutManager="android.support.v7.widget.GridLayoutManager" android:layout_weight="1" android:paddingEnd="14dp" android:paddingStart="14dp" /> diff --git a/app/src/main/res/layout/fragment_splash_one.xml b/app/src/main/res/layout/fragment_splash_one.xml index 3d4c9525..5aee6e90 100644 --- a/app/src/main/res/layout/fragment_splash_one.xml +++ b/app/src/main/res/layout/fragment_splash_one.xml @@ -15,7 +15,6 @@ android:layout_marginEnd="8dp" android:layout_marginStart="8dp" - android:src="@drawable/ic_send_money_vd" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/layout/order_list_item.xml b/app/src/main/res/layout/order_list_item.xml index d8fb3247..b596d11c 100644 --- a/app/src/main/res/layout/order_list_item.xml +++ b/app/src/main/res/layout/order_list_item.xml @@ -1,6 +1,93 @@ - + + + + + + + + + + + - \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/reward_list_item.xml b/app/src/main/res/layout/reward_list_item.xml index d8fb3247..73a35226 100644 --- a/app/src/main/res/layout/reward_list_item.xml +++ b/app/src/main/res/layout/reward_list_item.xml @@ -1,6 +1,74 @@ - + + + + + + + + + + + + \ No newline at end of file