diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/gateway/HomeV2Gateway.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/gateway/HomeV2Gateway.java index 59327329..5f97afa9 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/gateway/HomeV2Gateway.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/gateway/HomeV2Gateway.java @@ -12,8 +12,6 @@ import com.gmeremit.online.gmeremittance_native.homeV2.presenter.HomeV2Interacto import com.gmeremit.online.gmeremittance_native.utils.https.HttpClientV2; import com.google.gson.JsonObject; -import java.util.concurrent.TimeUnit; - import io.reactivex.Observable; public class HomeV2Gateway extends PrivilegedGateway implements HomeV2InteractorInterface.HomeV2GatewayInterface { @@ -72,13 +70,13 @@ public class HomeV2Gateway extends PrivilegedGateway implements HomeV2Interactor sharedPreferenceEditor.putString(PrefKeys.USER_PROVINCE_ID, loginApiResponseModelV2.getProvinceId()); sharedPreferenceEditor.putString(PrefKeys.USER_REWAD_POINT, loginApiResponseModelV2.getRewardPoint()); sharedPreferenceEditor.putString(PrefKeys.USER_SOURCE_ID, loginApiResponseModelV2.getSourceId()); - sharedPreferenceEditor.putBoolean(PrefKeys.USER_KYC_VERIFIED, loginApiResponseModelV2.getVerified()); + sharedPreferenceEditor.putBoolean(PrefKeys.USER_KYC_VERIFIED, loginApiResponseModelV2.isVerified()); sharedPreferenceEditor.putString(PrefKeys.USER_WALLET_NUMBER, loginApiResponseModelV2.getWalletNumber()); sharedPreferenceEditor.putString(PrefKeys.USER_YEARLY_REMAINING_LIMIT, loginApiResponseModelV2.getYearlyLimit()); sharedPreferenceEditor.putString(PrefKeys.USER_DOB, loginApiResponseModelV2.getUserDob()); sharedPreferenceEditor.commit(); - userStateCache = new UserCachedState(loginApiResponseModelV2.getKyc(), loginApiResponseModelV2.getVerified(), loginApiResponseModelV2.getEmail(), loginApiResponseModelV2.getUserDob()); + userStateCache = new UserCachedState(loginApiResponseModelV2.getKyc(), loginApiResponseModelV2.isVerified(), loginApiResponseModelV2.getEmail(), loginApiResponseModelV2.getUserDob()); } catch (Exception e) { if (!observable.isDisposed()) @@ -177,7 +175,7 @@ public class HomeV2Gateway extends PrivilegedGateway implements HomeV2Interactor userInfoModelV2.setWalletNumber(sharedPreferenceEditor.getString(PrefKeys.USER_WALLET_NUMBER, "")); userInfoModelV2.setYearlyLimit(sharedPreferenceEditor.getString(PrefKeys.USER_YEARLY_REMAINING_LIMIT, "")); - userStateCache = new UserCachedState(userInfoModelV2.getKyc(), userInfoModelV2.getVerified(), userInfoModelV2.getEmail(), userInfoModelV2.getUserDob()); + userStateCache = new UserCachedState(userInfoModelV2.getKyc(), userInfoModelV2.isVerified(), userInfoModelV2.getEmail(), userInfoModelV2.getUserDob()); return Observable.just(userInfoModelV2); diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/model/UserInfoModelV2.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/model/UserInfoModelV2.java index eb7f9261..0a882785 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/model/UserInfoModelV2.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/model/UserInfoModelV2.java @@ -215,7 +215,7 @@ public class UserInfoModelV2 { this.kyc = kyc; } - public Boolean getVerified() { + public Boolean isVerified() { return verified; } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java index f2b103f2..e249acaa 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java @@ -154,13 +154,13 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt - boolean disableKYCViewClick = userInfoModelV2.getKyc() && !userInfoModelV2.getVerified(); + 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."; - } else if (!userInfoModelV2.getVerified()) { + } else if (!userInfoModelV2.isVerified()) { shouldShowKYCView = true; title = "Verification in Process"; @@ -169,6 +169,8 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt if (homeFragmentRelatedSubject != null) homeFragmentRelatedSubject.onNext(new HomeFragmentRelatedData(shouldShowKYCView, message, title, disableKYCViewClick, fullName, userInfoModelV2.getYearlyLimit(), userInfoModelV2.getRewardPoint())); + + view.showWithdrawView(userInfoModelV2.isVerified()); } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2PresenterInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2PresenterInterface.java index ce776266..aba69cbb 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2PresenterInterface.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2PresenterInterface.java @@ -32,5 +32,6 @@ public interface HomeV2PresenterInterface extends BasePresenterInterface { void performLogout(); + void showWithdrawView(Boolean action); } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java index 35840706..e88cfaea 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java @@ -5,6 +5,7 @@ import android.content.Intent; import android.content.res.Configuration; import android.graphics.Color; import android.os.Build; +import android.os.Handler; import android.support.annotation.RequiresApi; import android.support.design.widget.NavigationView; import android.support.v4.app.Fragment; @@ -40,7 +41,6 @@ import com.gmeremit.online.gmeremittance_native.transactionhistoryV2.view.Transa import com.gmeremit.online.gmeremittance_native.user_profile.view.ProfileActivity; import com.gmeremit.online.gmeremittance_native.utils.Utils; import com.gmeremit.online.gmeremittance_native.walletstatementV2.view.WalletStatementV2Activity; -import com.gmeremit.online.gmeremittance_native.withdraw.view.WithDrawActivity; import com.gmeremit.online.gmeremittance_native.withdrawV2.view.WithdrawV2Activity; import com.text.drawable.TextDrawable; @@ -167,7 +167,7 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra break; case R.id.btn_withdraw: showDrawer(false); - startActivity(new Intent(this, WithdrawV2Activity.class)); + new Handler().postDelayed(this::openWithdrawScreen,200); break; case R.id.view_about_gme: showDrawer(false); @@ -197,8 +197,6 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra } } - - private void showLogoutConfirmationDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); @@ -294,6 +292,17 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra showFetaureComingSoon(); } + + private void openWithdrawScreen() { + String unverifiedMessage = presenter.checkIfUserVerified(); + if (unverifiedMessage == null) + startActivity(new Intent(this, WithdrawV2Activity.class)); + else + showPopUpMessage(unverifiedMessage, CustomAlertDialog.AlertType.ALERT, null); + } + + + @Override public HomeV2PresenterInterface getPresenter() { return presenter; @@ -352,6 +361,17 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra } + @Override + public void showWithdrawView(Boolean action) { + View withdrawView= nav_drawer.findViewById(R.id.btn_withdraw); + if(action) + withdrawView.setVisibility(View.VISIBLE); + else + withdrawView.setVisibility(View.INVISIBLE); + + + } + public void setWalletNo(TextView controlNo, String walletNumber, String bankName) { if (walletNumber == null || walletNumber.length() <= 0) { walletNumber = "N/A"; diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/user_profile/view/ProfileActivity.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/user_profile/view/ProfileActivity.java index 99469ae1..c3da81a4 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/user_profile/view/ProfileActivity.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/user_profile/view/ProfileActivity.java @@ -4,6 +4,7 @@ import android.Manifest; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Intent; +import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; @@ -28,7 +29,9 @@ import android.widget.Toast; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.gmeremit.online.gmeremittance_native.GmeApplication; import com.gmeremit.online.gmeremittance_native.R; +import com.gmeremit.online.gmeremittance_native.base.PrefKeys; import com.gmeremit.online.gmeremittance_native.changepasswordV2.view.ChangePasswordV2Activity; import com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView; import com.gmeremit.online.gmeremittance_native.user_profile.UserProfileContract; @@ -40,6 +43,7 @@ import com.gmeremit.online.gmeremittance_native.utils.other.DisplayUtils; import com.gmeremit.online.gmeremittance_native.utils.other.PersistenceStorageManager; import com.gmeremit.online.gmeremittance_native.utils.other.Utility; import com.gmeremit.online.gmeremittance_native.withdraw.view.WithDrawActivity; +import com.gmeremit.online.gmeremittance_native.withdrawV2.view.WithdrawV2Activity; import com.squareup.picasso.MemoryPolicy; import com.squareup.picasso.NetworkPolicy; import com.squareup.picasso.Picasso; @@ -78,10 +82,14 @@ public class ProfileActivity extends AppCompatActivity implements UserProfileCon GmeTextView tvBalance; @BindView(R.id.tv_wallet_number) GmeTextView tvWalletNumber; + @BindView(R.id.tv_withdraw) + GmeTextView tv_withdraw; Uri imageoutputUri; String walletText = "GME Wallet No. "; private ProgressDialog dialog; private PersistenceStorageManager persistenceStorageManager; + + private SharedPreferences myPreferences; private UserProfileContract.UserProfilePresenter userProfilePresenter; Bitmap bitmap; @@ -98,8 +106,12 @@ public class ProfileActivity extends AppCompatActivity implements UserProfileCon persistenceStorageManager = new PersistenceStorageManager(this); + myPreferences=GmeApplication.getStorage(); + userProfilePresenter = new UserProfilePresenter(this, new UserProfileModel(this)); - userProfilePresenter.userProfile(persistenceStorageManager.getUserId()); + userProfilePresenter.userProfile(myPreferences.getString(PrefKeys.USER_ID,"")); + + showWithdrawView(myPreferences.getBoolean(PrefKeys.USER_KYC_VERIFIED,false)); } @OnClick({R.id.iv_back, R.id.iv_uploadImage, R.id.iv_edit_profile, R.id.iv_change_password, R.id.tv_withdraw}) @@ -132,7 +144,7 @@ public class ProfileActivity extends AppCompatActivity implements UserProfileCon startActivity(new Intent(ProfileActivity.this, ChangePasswordV2Activity.class)); break; case R.id.tv_withdraw: - startActivity(new Intent(ProfileActivity.this, WithDrawActivity.class)); + startActivity(new Intent(ProfileActivity.this, WithdrawV2Activity.class)); break; } } @@ -229,6 +241,15 @@ public class ProfileActivity extends AppCompatActivity implements UserProfileCon } } + public void showWithdrawView(Boolean action) { + if(action) + tv_withdraw.setVisibility(View.VISIBLE); + else + tv_withdraw.setVisibility(View.INVISIBLE); + + + } + private void startCropActivity(@NonNull Uri uri) { File f = new File("" + uri); diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java index 9e490024..deed3dc5 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java @@ -144,5 +144,8 @@ public class API_URL { public static final String AMMENDMENT_TRANSACTION_V2 = "mobile/sendmoney/amendtransaction"; public static final String GET_WALLET_STATEMENTS_V2 = "mobile/walletstatement/{userId}"; public static final String CHANGE_PASSWORD_V2 = "mobile/ChangePassword"; + public static final String GET_REFUND_RELATED_DATA = "mobile/refund/{username}"; + public static final String PERFORM_REFUND = "mobile/refund/proceed"; + } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java index cd57eb5a..7d58ef1c 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java @@ -106,6 +106,8 @@ import com.gmeremit.online.gmeremittance_native.wallet_to_wallet.model.WalletRes import com.gmeremit.online.gmeremittance_native.wallet_to_wallet.model.WalletUserInfo; import com.gmeremit.online.gmeremittance_native.walletstatementV2.model.WalletStatementV2APIResponse; import com.gmeremit.online.gmeremittance_native.withdraw.model.WithDraw; +import com.gmeremit.online.gmeremittance_native.withdrawV2.model.RefundOperationResponse; +import com.gmeremit.online.gmeremittance_native.withdrawV2.model.RefundRelatedMetaDataResponse; import com.google.gson.JsonObject; import java.util.List; @@ -615,8 +617,7 @@ public interface ApiEndpoints { @Part MultipartBody.Part profileImage, @Part MultipartBody.Part idImageFront, @Part MultipartBody.Part formImageBack, - @Part MultipartBody.Part passbookImage - ); + @Part MultipartBody.Part passbookImage); @POST(API_URL.GET_TRANSACTION_HISTORY_V2) @@ -646,4 +647,12 @@ public interface ApiEndpoints { @POST(API_URL.CHANGE_PASSWORD_V2) @Headers("Content-Type: application/json") Observable performChangePasswordV2(@Header("Authorization") String token, @Body() JsonObject jsonObject); + + @GET(API_URL.GET_REFUND_RELATED_DATA) + @Headers("Content-Type: application/json") + Observable getRefunRelatedData(@Header("Authorization") String token, @Path("username") String userName); + + @POST(API_URL.PERFORM_REFUND) + @Headers("Content-Type: application/json") + Observable performRefundOperation(@Header("Authorization") String token, @Body() JsonObject jsonObject); } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/gateway/WithdrawV2Gateway.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/gateway/WithdrawV2Gateway.java index 50df3fd8..c031fafa 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/gateway/WithdrawV2Gateway.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/gateway/WithdrawV2Gateway.java @@ -4,6 +4,8 @@ import com.gmeremit.online.gmeremittance_native.base.PrivilegedGateway; import com.gmeremit.online.gmeremittance_native.utils.https.HttpClientV2; import com.gmeremit.online.gmeremittance_native.walletstatementV2.model.WalletStatementV2APIResponse; import com.gmeremit.online.gmeremittance_native.walletstatementV2.presenter.WalletStatementV2InteractorInterface; +import com.gmeremit.online.gmeremittance_native.withdrawV2.model.RefundOperationResponse; +import com.gmeremit.online.gmeremittance_native.withdrawV2.model.RefundRelatedMetaDataResponse; import com.gmeremit.online.gmeremittance_native.withdrawV2.presenter.WithdrawV2InteractorInterface; import com.google.gson.JsonObject; @@ -13,33 +15,20 @@ public class WithdrawV2Gateway extends PrivilegedGateway implements WithdrawV2In private final WithdrawV2InteractorInterface interactor; - private String mockedString="{\n" + - " \"ErrorCode\": \"0\",\n" + - " \"Msg\": \"1 wallet txn\",\n" + - " \"Id\": null,\n" + - " \"Extra\": \"\",\n" + - " \"Extra2\": \"\",\n" + - " \"Data\": [\n" + - " {\n" + - " \"TransactionDate\": \"1900.01.01\",\n" + - " \"Particular\": \"Balance Brought Forward\",\n" + - " \"WalletIn\": \"₩0\",\n" + - " \"WalletOut\": \"₩100,000,000\",\n" + - " \"ClosingAmount\": \"-₩85,000\"\n" + - " },\n" + - " {\n" + - " \"TransactionDate\": \"1900.01.01\",\n" + - " \"Particular\": \"Balance Brought Backward\",\n" + - " \"WalletIn\": \"₩200,000,000\",\n" + - " \"WalletOut\": \"₩0\",\n" + - " \"ClosingAmount\": \"-₩100,000\"\n" + - " }\n" + - " ]\n" + - "}"; - public WithdrawV2Gateway(WithdrawV2InteractorInterface interactor) { this.interactor=interactor; } + @Override + public Observable getWithdrawRelatedData(String userId, String auth) { + return HttpClientV2.getInstance().getRefunRelatedData(auth,userId); + } + + @Override + public Observable performWithdrawMoney(String amount, String auth) { + JsonObject body=new JsonObject(); + body.addProperty("Amounts",amount); + return HttpClientV2.getInstance().performRefundOperation(auth,body); + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/model/RefundOperationResponse.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/model/RefundOperationResponse.java new file mode 100644 index 00000000..8ee800f0 --- /dev/null +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/model/RefundOperationResponse.java @@ -0,0 +1,42 @@ +package com.gmeremit.online.gmeremittance_native.withdrawV2.model; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class RefundOperationResponse { + + + @SerializedName("ErrorCode") + @Expose + private String errorCode; + @SerializedName("Msg") + @Expose + private String msg; + @SerializedName("Data") + @Expose + private Object data; + + public String getErrorCode() { + return errorCode; + } + + public void setErrorCode(String errorCode) { + this.errorCode = errorCode; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } +} diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/model/RefundRelatedMetaDataModel.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/model/RefundRelatedMetaDataModel.java new file mode 100644 index 00000000..314e0fd9 --- /dev/null +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/model/RefundRelatedMetaDataModel.java @@ -0,0 +1,53 @@ +package com.gmeremit.online.gmeremittance_native.withdrawV2.model; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class RefundRelatedMetaDataModel { + + @SerializedName("Username") + @Expose + private String username; + @SerializedName("Amount") + @Expose + private String amount; + @SerializedName("ChargeAmount") + @Expose + private String chargeAmount; + @SerializedName("UserId") + @Expose + private String userId; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + public String getChargeAmount() { + return chargeAmount; + } + + public void setChargeAmount(String chargeAmount) { + this.chargeAmount = chargeAmount; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + +} diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/model/RefundRelatedMetaDataResponse.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/model/RefundRelatedMetaDataResponse.java new file mode 100644 index 00000000..b095f8a4 --- /dev/null +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/model/RefundRelatedMetaDataResponse.java @@ -0,0 +1,41 @@ +package com.gmeremit.online.gmeremittance_native.withdrawV2.model; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class RefundRelatedMetaDataResponse { + + @SerializedName("ErrorCode") + @Expose + private String errorCode; + @SerializedName("Msg") + @Expose + private String msg; + @SerializedName("Data") + @Expose + private RefundRelatedMetaDataModel data; + + public String getErrorCode() { + return errorCode; + } + + public void setErrorCode(String errorCode) { + this.errorCode = errorCode; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public RefundRelatedMetaDataModel getData() { + return data; + } + + public void setData(RefundRelatedMetaDataModel data) { + this.data = data; + } +} diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/presenter/WithdrawV2InteractorInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/presenter/WithdrawV2InteractorInterface.java index 3bc32150..46c27945 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/presenter/WithdrawV2InteractorInterface.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/presenter/WithdrawV2InteractorInterface.java @@ -3,6 +3,8 @@ package com.gmeremit.online.gmeremittance_native.withdrawV2.presenter; import com.gmeremit.online.gmeremittance_native.base.BaseInteractorInterface; import com.gmeremit.online.gmeremittance_native.base.PrivilegedGatewayInterface; import com.gmeremit.online.gmeremittance_native.walletstatementV2.model.WalletStatementV2APIResponse; +import com.gmeremit.online.gmeremittance_native.withdrawV2.model.RefundOperationResponse; +import com.gmeremit.online.gmeremittance_native.withdrawV2.model.RefundRelatedMetaDataResponse; import io.reactivex.Observable; @@ -11,5 +13,8 @@ public interface WithdrawV2InteractorInterface extends BaseInteractorInterface { interface WithdrawV2GatewayInterface extends PrivilegedGatewayInterface { + + Observable getWithdrawRelatedData(String userId, String auth); + Observable performWithdrawMoney(String amount, String auth); } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/presenter/WithdrawV2Presenter.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/presenter/WithdrawV2Presenter.java index da25c17c..46aafc7b 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/presenter/WithdrawV2Presenter.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/presenter/WithdrawV2Presenter.java @@ -1,23 +1,116 @@ package com.gmeremit.online.gmeremittance_native.withdrawV2.presenter; import com.gmeremit.online.gmeremittance_native.base.BasePresenter; +import com.gmeremit.online.gmeremittance_native.customwidgets.CustomAlertDialog; +import com.gmeremit.online.gmeremittance_native.utils.Constants; +import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponse; import com.gmeremit.online.gmeremittance_native.withdrawV2.gateway.WithdrawV2Gateway; +import com.gmeremit.online.gmeremittance_native.withdrawV2.model.RefundOperationResponse; +import com.gmeremit.online.gmeremittance_native.withdrawV2.model.RefundRelatedMetaDataResponse; +import io.reactivex.Scheduler; +import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.schedulers.Schedulers; public class WithdrawV2Presenter extends BasePresenter implements WithdrawV2PresenterInterface,WithdrawV2InteractorInterface { private final WithdrawV2ContractInterface view; private final WithdrawV2GatewayInterface gateway; private final CompositeDisposable compositeDisposables; + private String serviceCharge; public WithdrawV2Presenter(WithdrawV2ContractInterface view) { this.view=view; this.gateway=new WithdrawV2Gateway(this); compositeDisposables=new CompositeDisposable(); + serviceCharge=null; } + @Override + public void validateAndPerformAutoRefund(String amount) { + if(true) + { + compositeDisposables.add( + this.gateway.performWithdrawMoney(amount,this.gateway.getAuth()) + .doOnSubscribe(action->view.showProgressBar(true,"Performing transaction...")) + .doFinally(()->view.showProgressBar(false,"")) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new WithdrawOperationDataObserver()) + );} + else + { + view.showToastMessage("Amount cannot be minimum than "+serviceCharge); + } + } + + @Override + public void getRequiredData() { + compositeDisposables.add( + this.gateway.getWithdrawRelatedData(this.gateway.getUserID(),this.gateway.getAuth()) + .doOnSubscribe(action->view.showProgressBar(true,"Fetching user related data...")) + .doFinally(()->view.showProgressBar(false,"")) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new WithdrawRelatedDataObserver()) + ); + } + + + class WithdrawRelatedDataObserver extends GenericApiObserverResponse + { + + @Override + protected void onSuccess(RefundRelatedMetaDataResponse refundRelatedMetaDataResponse) { + if(refundRelatedMetaDataResponse.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) + { + view.updateAvailableBalance(refundRelatedMetaDataResponse.getData().getAmount()); + view.updateServiceCharge(refundRelatedMetaDataResponse.getData().getChargeAmount()); + serviceCharge=refundRelatedMetaDataResponse.getData().getChargeAmount(); + } + else + { + view.showPopUpMessage(refundRelatedMetaDataResponse.getMsg(),CustomAlertDialog.AlertType.FAILED,alertType -> view.exitView()); + } + } + + @Override + public void onFailed(String message) { + view.showPopUpMessage(message,CustomAlertDialog.AlertType.FAILED,alertType -> view.exitView()); + } + @Override + protected void onConnectionNotEstablished(String message) { + view.showPopUpMessage(message,CustomAlertDialog.AlertType.NO_INTERNET,alertType -> view.exitView()); + } + } + + class WithdrawOperationDataObserver extends GenericApiObserverResponse + { + + @Override + protected void onSuccess(RefundOperationResponse refundOperationResponse) { + if(refundOperationResponse.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) + { + view.showPopUpMessage(refundOperationResponse.getMsg(),CustomAlertDialog.AlertType.SUCCESS,alertType -> view.exitView()); + } + else + { + view.showPopUpMessage(refundOperationResponse.getMsg(),CustomAlertDialog.AlertType.FAILED,null); + } + } + + @Override + public void onFailed(String message) { + view.showPopUpMessage(message,CustomAlertDialog.AlertType.FAILED,null); + } + + @Override + protected void onConnectionNotEstablished(String message) { + view.showPopUpMessage(message,CustomAlertDialog.AlertType.NO_INTERNET,null); + } + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/presenter/WithdrawV2PresenterInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/presenter/WithdrawV2PresenterInterface.java index b2e53097..c391beda 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/presenter/WithdrawV2PresenterInterface.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/presenter/WithdrawV2PresenterInterface.java @@ -10,8 +10,13 @@ import java.util.List; public interface WithdrawV2PresenterInterface extends BasePresenterInterface { + void getRequiredData(); + void validateAndPerformAutoRefund(String amount); interface WithdrawV2ContractInterface extends BaseContractInterface { + + void updateAvailableBalance(String availableBalance); + void updateServiceCharge(String serviceCharge); } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/view/WithdrawV2Activity.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/view/WithdrawV2Activity.java index 05013da7..8d5f8039 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/view/WithdrawV2Activity.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/withdrawV2/view/WithdrawV2Activity.java @@ -2,15 +2,103 @@ package com.gmeremit.online.gmeremittance_native.withdrawV2.view; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.view.View; +import android.widget.Button; import com.gmeremit.online.gmeremittance_native.R; import com.gmeremit.online.gmeremittance_native.base.BaseActivity; +import com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView; +import com.gmeremit.online.gmeremittance_native.recipientV2.presenter.recipientadd.RecipientAddV2Presenter; +import com.gmeremit.online.gmeremittance_native.withdrawV2.presenter.WithdrawV2Presenter; +import com.gmeremit.online.gmeremittance_native.withdrawV2.presenter.WithdrawV2PresenterInterface; -public class WithdrawV2Activity extends BaseActivity { +import butterknife.BindView; +import butterknife.ButterKnife; + +public class WithdrawV2Activity extends BaseActivity implements View.OnClickListener, WithdrawV2PresenterInterface.WithdrawV2ContractInterface { + + + @BindView(R.id.iv_back) + View iv_back; + + @BindView(R.id.iv_cancel) + View iv_cancel; + + @BindView(R.id.toolbar_title) + GmeTextView toolbarTitle; + + @BindView(R.id.withdrawAvailableTxt) + GmeTextView withdrawAvailableTxt; + + @BindView(R.id.withdrawBankChargeTxt) + GmeTextView withdrawBankChargeTxt; + + @BindView(R.id.withdrawAmountEdTxt) + GmeTextView withdrawAmountEdTxt; + + + @BindView(R.id.refundButton) + Button refundButton; + private WithdrawV2PresenterInterface presenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_withdraw_v2); + ButterKnife.bind(this); + init(); + performDefaultAction(savedInstanceState); + } + + private void init() { + presenter=new WithdrawV2Presenter(this); + iv_cancel.setVisibility(View.INVISIBLE); + + } + + private void performDefaultAction(Bundle savedInstanceState) { + toolbarTitle.setText("Auto Refund"); + presenter.getRequiredData(); + + } + + @Override + protected void onStart() { + super.onStart(); + iv_back.setOnClickListener(this); + refundButton.setOnClickListener(this); + } + + @Override + protected void onStop() { + super.onStop(); + iv_back.setOnClickListener(null); + refundButton.setOnClickListener(null); + } + + @Override + public void onClick(View v) { + switch(v.getId()) + { + case R.id.iv_back: + onBackPressed(); + break; + + case R.id.refundButton: + presenter.validateAndPerformAutoRefund(withdrawAmountEdTxt.getText().toString()); + break; + } + } + + @Override + public void updateAvailableBalance(String availableBalance) { + withdrawAvailableTxt.setText(availableBalance); + + } + + @Override + public void updateServiceCharge(String serviceCharge) { + withdrawBankChargeTxt.setText(serviceCharge); + } } diff --git a/app/src/main/res/layout/activity_profile.xml b/app/src/main/res/layout/activity_profile.xml index 49880b85..ce020862 100644 --- a/app/src/main/res/layout/activity_profile.xml +++ b/app/src/main/res/layout/activity_profile.xml @@ -59,7 +59,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/profile_image" - tools:text="Kapil Maharjan" android:layout_centerHorizontal="true" android:textSize="18sp" app:txtfontName="@string/semibold" @@ -70,7 +69,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tv_user_name" - tools:text="+977 9812312312" android:layout_centerHorizontal="true" android:textSize="14sp" android:padding="4dp" diff --git a/app/src/main/res/layout/activity_withdraw_v2.xml b/app/src/main/res/layout/activity_withdraw_v2.xml index da856a08..0fa3157f 100644 --- a/app/src/main/res/layout/activity_withdraw_v2.xml +++ b/app/src/main/res/layout/activity_withdraw_v2.xml @@ -118,7 +118,7 @@ android:textSize="16sp" />