Browse Source

Penny test flow integrated from home

master
Preyea Regmi 6 years ago
parent
commit
995304fe88
  1. 4
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/gateway/HomeV2Gateway.java
  2. 72
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java
  3. 171
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeFragmentV2.java
  4. 30
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV2/presenter/KYCV2Presenter.java
  5. 14
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV2/view/pennytest/PennyTestActivity.java
  6. 3
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV2/view/view3/KYCView3Fragment.java
  7. 54
      app/src/main/res/layout/fragment_home_v2.xml

4
app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/gateway/HomeV2Gateway.java

@ -102,6 +102,9 @@ public class HomeV2Gateway extends PrivilegedGateway implements HomeV2Interactor
userStateCache = new UserCachedState();
userStateCache.setHasSubmittedKyc(action);
GmeApplication.getStorage().edit().putBoolean(PrefKeys.USER_KYC_SUBMITTED, action).apply();
}
@Override
@ -109,6 +112,7 @@ public class HomeV2Gateway extends PrivilegedGateway implements HomeV2Interactor
if (userStateCache == null)
userStateCache = new UserCachedState();
userStateCache.setVerifiedUser(action);
GmeApplication.getStorage().edit().putBoolean(PrefKeys.USER_KYC_VERIFIED, action).apply();
}

72
app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java

@ -149,28 +149,38 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt
view.showInfoInDrawer(fullName, userInfoModelV2.getEmail(), userInfoModelV2.getAvailableBalance(), userInfoModelV2.getWalletNumber(), userInfoModelV2.getPrimaryBankName(), userInfoModelV2.getMobileNumber());
String message = "";
String title = "";
String kycMessage = "";
String kycTitle = "";
boolean disableKYCViewClick = userInfoModelV2.getKyc() && !userInfoModelV2.isVerified();
boolean shouldShowKYCView = false;
if (!userInfoModelV2.getKyc()) {
shouldShowKYCView = true;
title = "Verify your Account";
message = "Kindly complete your registration process with us to start using GME services.";
kycTitle = "Verify your Account";
kycMessage = "Kindly complete your registration process with us to start using GME services.";
} else if (!userInfoModelV2.isVerified()) {
shouldShowKYCView = true;
title = "Verification in Process";
message = "Your registration request is in approval process. You will soon be able to use GME services.";
kycTitle = "Verification in Process";
kycMessage = "Your registration request is in approval process. You will soon be able to use GME services.";
}
//TODO populate data related to pennyTest Here
boolean isPennyTestPending = true;
boolean hasRequestedPennyTest = false;
String pennyTestTitle = "Verify your Bank Account";
String pennyTestMessage = "Please complete your primary bank account verification process.";
if (homeFragmentRelatedSubject != null)
homeFragmentRelatedSubject.onNext(new HomeFragmentRelatedData(shouldShowKYCView, message, title, disableKYCViewClick, fullName, userInfoModelV2.getYearlyLimit(), userInfoModelV2.getRewardPoint()));
homeFragmentRelatedSubject.onNext(new HomeFragmentRelatedData(shouldShowKYCView, kycMessage, kycTitle,
disableKYCViewClick, fullName, userInfoModelV2.getYearlyLimit(),
userInfoModelV2.getRewardPoint(), isPennyTestPending&&userInfoModelV2.getKyc(), hasRequestedPennyTest,
pennyTestTitle, pennyTestMessage));
view.showWithdrawView(userInfoModelV2.isVerified());
view.showWithdrawView(userInfoModelV2.isVerified());
}
@ -195,34 +205,44 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt
public class HomeFragmentRelatedData {
private boolean shouldShowKycView;
private String message;
private String title;
private String kycMessage;
private String kycTitle;
private boolean disableKYCViewClick;
private String userName;
private String yearlyLimit;
private String rewardPoint;
public HomeFragmentRelatedData(boolean shouldShowKycView, String message, String title, boolean disableKYCViewClick, String userName, String yearlyLimit, String rewardPoint) {
private boolean isPennyTestPending;
private boolean hasRequestedPennyTest;
private String pennyTestTitle;
private String pennyTestMessage;
public HomeFragmentRelatedData(boolean shouldShowKycView, String kycMessage, String kycTitle, boolean disableKYCViewClick, String userName, String yearlyLimit, String rewardPoint, boolean isPennyTestPending, boolean hasRequestedPennyTest, String pennyTestTitle, String pennyTestMessage) {
this.shouldShowKycView = shouldShowKycView;
this.message = message;
this.title = title;
this.kycMessage = kycMessage;
this.kycTitle = kycTitle;
this.disableKYCViewClick = disableKYCViewClick;
this.userName = userName;
this.yearlyLimit = yearlyLimit;
this.rewardPoint = rewardPoint;
this.isPennyTestPending = isPennyTestPending;
this.hasRequestedPennyTest = hasRequestedPennyTest;
this.pennyTestTitle = pennyTestTitle;
this.pennyTestMessage = pennyTestMessage;
}
public boolean isShouldShowKycView() {
return shouldShowKycView;
}
public String getMessage() {
return message;
public String getKycMessage() {
return kycMessage;
}
public String getTitle() {
return title;
public String getKycTitle() {
return kycTitle;
}
public boolean isDisableKYCViewClick() {
@ -240,6 +260,22 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt
public String getRewardPoint() {
return rewardPoint;
}
public boolean isPennyTestPending() {
return isPennyTestPending;
}
public boolean hasRequestedPennyTest() {
return hasRequestedPennyTest;
}
public String getPennyTestTitle() {
return pennyTestTitle;
}
public String getPennyTestMessage() {
return pennyTestMessage;
}
}

171
app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeFragmentV2.java

@ -3,6 +3,7 @@ package com.gmeremit.online.gmeremittance_native.homeV2.view;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.GridLayoutManager;
@ -19,6 +20,7 @@ import com.gmeremit.online.gmeremittance_native.homeV2.adapters.HomeMenuRvAdapte
import com.gmeremit.online.gmeremittance_native.homeV2.model.MenuItem;
import com.gmeremit.online.gmeremittance_native.homeV2.presenter.HomeV2Presenter;
import com.gmeremit.online.gmeremittance_native.kycV2.view.KYCFormV2Activity;
import com.gmeremit.online.gmeremittance_native.kycV2.view.pennytest.PennyTestActivity;
import com.gmeremit.online.gmeremittance_native.utils.Utils;
import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponse;
@ -58,6 +60,15 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2.
@BindView(R.id.user_status_layout_nonverified)
View kyc_notice_view;
@BindView(R.id.penny_test_label)
TextView pennyTitleLabel;
@BindView(R.id.penny_test_text)
TextView pennyVerificationBody;
@BindView(R.id.penny_test_pending_view)
View penny_notice_view;
@BindView(R.id.swiperefresh)
SwipeRefreshLayout swiperefresh;
@ -65,6 +76,7 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2.
private boolean disableKYCViewClick;
private HomeFragmentDataObserver homeFragmentDataObserver;
private CompositeDisposable compositeDisposable;
private boolean hasRequestedPennyTestEarlier=false;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@ -82,8 +94,8 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2.
private void init() {
setupMenuRecyclerView();
homeFragmentDataObserver=new HomeFragmentDataObserver();
compositeDisposable=new CompositeDisposable();
homeFragmentDataObserver = new HomeFragmentDataObserver();
compositeDisposable = new CompositeDisposable();
}
@ -102,9 +114,10 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2.
public void onStart() {
super.onStart();
kyc_notice_view.setOnClickListener(this);
swiperefresh.setOnRefreshListener(()->{
HomeParentViewContractV2 parentView= ((HomeParentViewContractV2)getActivity());
if(parentView!=null)
penny_notice_view.setOnClickListener(this);
swiperefresh.setOnRefreshListener(() -> {
HomeParentViewContractV2 parentView = ((HomeParentViewContractV2) getActivity());
if (parentView != null)
parentView.getPresenter().getRequiredData();
});
}
@ -113,6 +126,7 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2.
public void onStop() {
super.onStop();
kyc_notice_view.setOnClickListener(null);
penny_notice_view.setOnClickListener(null);
}
@ -129,10 +143,10 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2.
}
private void performDefaultAction(Bundle savedInupdateInfostanceState) {
HomeParentViewContractV2 parentView= ((HomeParentViewContractV2)getActivity());
if(parentView!=null)
{ compositeDisposable.add(
parentView.getPresenter().subscribeToHomeFragmentDataFetchEvent().subscribeWith(homeFragmentDataObserver));
HomeParentViewContractV2 parentView = ((HomeParentViewContractV2) getActivity());
if (parentView != null) {
compositeDisposable.add(
parentView.getPresenter().subscribeToHomeFragmentDataFetchEvent().subscribeWith(homeFragmentDataObserver));
}
}
@ -165,7 +179,7 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2.
}
public void updateInfo(String userName,String yearlyLimit, String rewardPoint) {
public void updateInfo(String userName, String yearlyLimit, String rewardPoint) {
if (isUIReady()) {
swiperefresh.setRefreshing(false);
tv_currency.setVisibility(View.VISIBLE);
@ -188,34 +202,47 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2.
public void onClick(View v) {
switch (v.getId()) {
case R.id.user_status_layout_nonverified:
if(!disableKYCViewClick) {
String email="";
String dob=null;
HomeParentViewContractV2 parentView= ((HomeParentViewContractV2)getActivity());
if(parentView!=null)
email= parentView.getPresenter().getUserEmailID();
dob= parentView.getPresenter().getUserDob();
if (!disableKYCViewClick) {
String email = "";
String dob = null;
HomeParentViewContractV2 parentView = ((HomeParentViewContractV2) getActivity());
if (parentView != null) {
email = parentView.getPresenter().getUserEmailID();
dob = parentView.getPresenter().getUserDob();
}
Intent startKycIntent = new Intent(getActivity(), KYCFormV2Activity.class);
startKycIntent.putExtra(KYCFormV2Activity.USER_EMAIL_ID_BUNDLE_KEY,email);
startKycIntent.putExtra(KYCFormV2Activity.USER_DOB_BUNDLE_KEY,dob);
startActivityForResult(startKycIntent,KYC_FORM_REQUEST_FROM_HOME);
startKycIntent.putExtra(KYCFormV2Activity.USER_EMAIL_ID_BUNDLE_KEY, email);
startKycIntent.putExtra(KYCFormV2Activity.USER_DOB_BUNDLE_KEY, dob);
startActivityForResult(startKycIntent, KYC_FORM_REQUEST_FROM_HOME);
}
break;
case R.id.penny_test_pending_view:
showPennyTestView(this.hasRequestedPennyTestEarlier);
break;
}
}
private void showPennyTestView(boolean hasRequestedPennyTestEarlier)
{
Intent startPennyTestIntent = new Intent(getActivity(), PennyTestActivity.class);
startPennyTestIntent.putExtra(PennyTestActivity.HAS_REQUESTED_FOR_PENNY_TEST,hasRequestedPennyTestEarlier);
startActivity(startPennyTestIntent);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == KYC_FORM_REQUEST_FROM_HOME) {
if(resultCode == Activity.RESULT_OK){
boolean result=data.getBooleanExtra(KYC_RESULT_STATUS_BUNDLE_KEY,false);
if(result)
{
HomeParentViewContractV2 parentView= ((HomeParentViewContractV2)getActivity());
if(parentView!=null)
if (resultCode == Activity.RESULT_OK) {
boolean result = data.getBooleanExtra(KYC_RESULT_STATUS_BUNDLE_KEY, false);
if (result) {
HomeParentViewContractV2 parentView = ((HomeParentViewContractV2) getActivity());
if (parentView != null)
parentView.getPresenter().manuallyUpdateKYCForStatusToSubmitted();
new Handler().postDelayed(()->showPennyTestView(false),500);
}
}
@ -232,45 +259,36 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2.
}
public void showKYCVerifiedIfRequired(boolean shouldShowView, String message, String title, boolean disableKYCViewClick) {
if(isUIReady())
{
if(shouldShowView)
{
this.disableKYCViewClick=disableKYCViewClick;
if (isUIReady()) {
if (shouldShowView) {
this.disableKYCViewClick = disableKYCViewClick;
kycVerificationBody.setText(message);
kycTitleLabel.setText(title);
if(kyc_notice_view.getVisibility()!=View.VISIBLE)
Utils.expand(kyc_notice_view,null,200);
}
else
{
if (kyc_notice_view.getVisibility() != View.VISIBLE)
Utils.expand(kyc_notice_view, null, 200);
} else {
if(kyc_notice_view.getVisibility()!=View.GONE)
Utils.collapse(kyc_notice_view,()->{
if (kyc_notice_view.getVisibility() != View.GONE)
Utils.collapse(kyc_notice_view, () -> {
// kycVerificationBody.setText(message);
// kycVerificationBody.setText(title);
},200);
}, 200);
}
}
else
{
scheduleTaskLater(()->{
} else {
scheduleTaskLater(() -> {
if(shouldShowView)
{
this.disableKYCViewClick=disableKYCViewClick;
if (shouldShowView) {
this.disableKYCViewClick = disableKYCViewClick;
kycVerificationBody.setText(message);
kycTitleLabel.setText(title);
if(kyc_notice_view.getVisibility()!=View.VISIBLE)
Utils.expand(kyc_notice_view,null,200);
}
else
{
if (kyc_notice_view.getVisibility() != View.VISIBLE)
Utils.expand(kyc_notice_view, null, 200);
} else {
if(kyc_notice_view.getVisibility()!=View.GONE)
Utils.collapse(kyc_notice_view,()->{
if (kyc_notice_view.getVisibility() != View.GONE)
Utils.collapse(kyc_notice_view, () -> {
},200);
}, 200);
}
@ -278,14 +296,51 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2.
}
}
public void showPennyTestViewIfRequired(boolean shouldShowView, String message, String title) {
if (isUIReady()) {
if (shouldShowView) {
pennyVerificationBody.setText(message);
pennyTitleLabel.setText(title);
if (penny_notice_view.getVisibility() != View.VISIBLE)
Utils.expand(penny_notice_view, null, 200);
} else {
if (penny_notice_view.getVisibility() != View.GONE)
Utils.collapse(penny_notice_view, () -> {
// kycVerificationBody.setText(message);
// kycVerificationBody.setText(title);
}, 200);
}
} else {
scheduleTaskLater(() -> {
class HomeFragmentDataObserver extends GenericApiObserverResponse<HomeV2Presenter.HomeFragmentRelatedData>
{
if (shouldShowView) {
pennyVerificationBody.setText(message);
pennyTitleLabel.setText(title);
if (penny_notice_view.getVisibility() != View.VISIBLE)
Utils.expand(penny_notice_view, null, 200);
} else {
if (penny_notice_view.getVisibility() != View.GONE)
Utils.collapse(penny_notice_view, () -> {
}, 200);
}
});
}
}
class HomeFragmentDataObserver extends GenericApiObserverResponse<HomeV2Presenter.HomeFragmentRelatedData> {
@Override
protected void onSuccess(HomeV2Presenter.HomeFragmentRelatedData dashboardRelatedData) {
showKYCVerifiedIfRequired(dashboardRelatedData.isShouldShowKycView(),dashboardRelatedData.getMessage(),dashboardRelatedData.getTitle(),dashboardRelatedData.isDisableKYCViewClick());
updateInfo(dashboardRelatedData.getUserName(),dashboardRelatedData.getYearlyLimit(),dashboardRelatedData.getRewardPoint());
updateInfo(dashboardRelatedData.getUserName(), dashboardRelatedData.getYearlyLimit(), dashboardRelatedData.getRewardPoint());
showKYCVerifiedIfRequired(dashboardRelatedData.isShouldShowKycView(), dashboardRelatedData.getKycMessage(), dashboardRelatedData.getKycTitle(), dashboardRelatedData.isDisableKYCViewClick());
hasRequestedPennyTestEarlier=dashboardRelatedData.hasRequestedPennyTest();
new Handler().postDelayed(() -> showPennyTestViewIfRequired(dashboardRelatedData.isPennyTestPending(), dashboardRelatedData.getPennyTestMessage(), dashboardRelatedData.getPennyTestTitle())
, 400);
}
@Override

30
app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV2/presenter/KYCV2Presenter.java

@ -403,21 +403,23 @@ public class KYCV2Presenter extends BasePresenter implements KYCV2PresenterInter
@Override
public void prepareToSendData() {
KYCView1VModel view1VModel = view.getView1Contract().getView1RelatedData();
KYCView2VModel view2VModel = view.getView2Contract().getView2RelatedData();
if (validateKYCView1(view1VModel)) {
if (validateKYCView2(view2VModel)) {
if (validateKYCView3(null)) {
sendKycForRegistration(view1VModel, view2VModel);
} else
view.showView3();
} else
view.showView2();
} else
view.showView1();
view.closeViewWithSucess();
// KYCView1VModel view1VModel = view.getView1Contract().getView1RelatedData();
// KYCView2VModel view2VModel = view.getView2Contract().getView2RelatedData();
//
// if (validateKYCView1(view1VModel)) {
// if (validateKYCView2(view2VModel)) {
// if (validateKYCView3(null)) {
// sendKycForRegistration(view1VModel, view2VModel);
// } else
// view.showView3();
// } else
// view.showView2();
//
// } else
// view.showView1();
//
}

14
app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV2/view/pennytest/PennyTestActivity.java

@ -60,6 +60,8 @@ public class PennyTestActivity extends BaseActivity implements View.OnClickListe
private static float DEFAULT_CORNER_RADIUS;
private List<Fragment> fragments=new ArrayList<>();
private PennyTestViewPagerAdapter viewPagerAdapter;
public static String HAS_REQUESTED_FOR_PENNY_TEST="bundleKeyPennyTestRequest";
private boolean hasRequestedPennyTest=false;
@Override
@ -72,17 +74,21 @@ public class PennyTestActivity extends BaseActivity implements View.OnClickListe
window.getAttributes().windowAnimations = R.style.SlideInAnimation;
window.setBackgroundDrawableResource(R.drawable.ic_rounded_grey_bg_with_inset);
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
}
if(savedInstanceState==null)
hasRequestedPennyTest=getIntent().getBooleanExtra(HAS_REQUESTED_FOR_PENNY_TEST,false);
initialize();
setupViewPager(true);
setupViewPager();
}
private void setupViewPager(boolean action) {
if(action)
private void setupViewPager() {
if(!hasRequestedPennyTest)
fragments.add(new PennyTestPromptFragment());
fragments.add(new PennyTestOperationFragment());

3
app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV2/view/view3/KYCView3Fragment.java

@ -254,8 +254,7 @@ public class KYCView3Fragment extends BaseFragment implements View.OnClickListen
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_submit:
// ((KYCV2ActionListener) getActivity()).getPresenter().prepareToSendData();
((KYCV2ActionListener) getActivity()).getPresenter().validateAllFormsAndRequestForPennyTest();
((KYCV2ActionListener) getActivity()).getPresenter().prepareToSendData();
break;
}
}

54
app/src/main/res/layout/fragment_home_v2.xml

@ -1,4 +1,6 @@
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/swiperefresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -75,6 +77,58 @@
</RelativeLayout>
<android.support.constraint.ConstraintLayout
android:id="@+id/penny_test_pending_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:background="@color/white"
android:padding="8dp"
android:visibility="gone">
<ImageView
android:id="@+id/penny_test_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:src="@drawable/ic_kyc_non_verified_userstatus"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView
android:id="@+id/penny_test_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:paddingLeft="10dp"
android:paddingTop="4dp"
android:paddingBottom="2dp"
android:textColor="@color/colorAccent"
android:textSize="14sp"
app:layout_constraintStart_toEndOf="@+id/penny_test_view"
app:layout_constraintTop_toTopOf="@+id/penny_test_view" />
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView
android:id="@+id/penny_test_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="8dp"
android:paddingLeft="10dp"
android:paddingTop="2dp"
android:paddingRight="4dp"
android:textColor="@color/darkgray"
android:textSize="10sp"
app:layout_constraintBottom_toBottomOf="@+id/penny_test_view"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/penny_test_view"
app:layout_constraintTop_toBottomOf="@+id/penny_test_label" />
</android.support.constraint.ConstraintLayout>
<RelativeLayout
android:id="@+id/user_status_layout"
android:layout_width="match_parent"

Loading…
Cancel
Save