Browse Source

Local topup setup done

master
Preyea Regmi 5 years ago
parent
commit
f575b3adaf
  1. BIN
      .idea/caches/build_file_checksums.ser
  2. 14
      app/src/main/AndroidManifest.xml
  3. 4
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java
  4. 22
      app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/presenter/rewardlisting/RewardListingV2Presenter.java
  5. 13
      app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/presenter/SplashScreenPresenter.java
  6. 2
      app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/view/SplashScreen.java
  7. 35
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/adapter/LocalTopUpServiceViewPagerAdapter.java
  8. 21
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/gateway/LocalTopUpGateway.java
  9. 19
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/model/ButtonsGrid.java
  10. 65
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/model/CardInfoDTO.java
  11. 64
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/model/LocalTopUpResponseDTO.java
  12. 41
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/model/PlanInfo.java
  13. 107
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/model/SubInfo.java
  14. 16
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/presenter/LocalTopUpInteractorInterface.java
  15. 133
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/presenter/LocalTopUpPresenter.java
  16. 20
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/presenter/LocalTopUpPresenterInterface.java
  17. 117
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/view/LocalTopUpActivity.java
  18. 8
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/view/LocalTopUpActivityActionListener.java
  19. 41
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/view/services/DataOnlyLocalTopUpFragment.java
  20. 40
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/view/services/FixedChargeLocalTopupFragment.java
  21. 40
      app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/view/services/RegularLocalTopupFragment.java
  22. 2
      app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionhistoryV2/view/TransactionHistoryActivityV2.java
  23. 1
      app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java
  24. 4
      app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java
  25. 12
      app/src/main/res/drawable/circular_tab_layout_bg.xml
  26. 21
      app/src/main/res/drawable/circular_tab_selected_bg.xml
  27. 12
      app/src/main/res/drawable/circular_tab_selector.xml
  28. 18
      app/src/main/res/drawable/circular_tab_unselected_bg.xml
  29. 2
      app/src/main/res/drawable/ic_rounded_country_listing_pink.xml
  30. 115
      app/src/main/res/layout/activity_local_top_up.xml
  31. 14
      app/src/main/res/layout/tab_data_local_top_up.xml
  32. 14
      app/src/main/res/layout/tab_fixed_local_top_up.xml
  33. 14
      app/src/main/res/layout/tab_regular_local_top_up.xml
  34. 1
      app/src/main/res/values/colors.xml
  35. 7
      app/src/main/res/values/styles.xml

BIN
.idea/caches/build_file_checksums.ser

14
app/src/main/AndroidManifest.xml

@ -24,12 +24,17 @@
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:allowBackup"
tools:ignore="GoogleAppIndexingWarning">
<activity android:name=".exrate.view.ExchangeRateActivity"
tools:ignore="GoogleAppIndexingWarning"
tools:replace="android:allowBackup">
<activity android:name=".topup.local.view.LocalTopUpActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateAlwaysHidden"></activity>
<activity
android:name=".exrate.view.ExchangeRateActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateAlwaysHidden" />
<activity
android:name=".domesticremit.receipt.view.DomesticRemitReceiptActivity"
android:screenOrientation="portrait"
@ -278,8 +283,7 @@
<activity
android:name=".kycV2.view.KYCFormV2Activity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar">
</activity>
android:theme="@style/AppTheme.NoActionBar"></activity>
<activity
android:name=".loginV2.view.LoginV2Activity"
android:screenOrientation="portrait"

4
app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java

@ -45,6 +45,7 @@ import com.gmeremit.online.gmeremittance_native.resendV2.view.TransactionListing
import com.gmeremit.online.gmeremittance_native.settings.view.FingerprintEnablePromptActivity;
import com.gmeremit.online.gmeremittance_native.settings.view.SettingsView;
import com.gmeremit.online.gmeremittance_native.static_pages.view.AboutGME;
import com.gmeremit.online.gmeremittance_native.topup.local.view.LocalTopUpActivity;
import com.gmeremit.online.gmeremittance_native.transactionhistoryV2.view.TransactionHistoryActivityV2;
import com.gmeremit.online.gmeremittance_native.user_profile.view.ProfileActivity;
import com.gmeremit.online.gmeremittance_native.utils.ChatUtils;
@ -349,7 +350,8 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra
return;
String unverifiedMessage = presenter.checkIfUserVerified();
if (unverifiedMessage == null)
startActivity(new Intent(getApplicationContext(), TransactionHistoryActivityV2.class));
// startActivity(new Intent(getApplicationContext(), TransactionHistoryActivityV2.class));
startActivity(new Intent(getApplicationContext(), LocalTopUpActivity.class));
else
showPopUpMessage(unverifiedMessage, CustomAlertDialog.AlertType.ALERT, null);

22
app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/presenter/rewardlisting/RewardListingV2Presenter.java

@ -46,7 +46,7 @@ public class RewardListingV2Presenter extends BasePresenter implements RewardLis
private final BehaviorSubject<RewardListingScreenModel> rewardRelatedDataSubject;
public RewardListingV2Presenter(RewardListingV2PresenterInterface.RewardListingV2ContractInterface view,RewardListingV2InteractorInterface.RewardListingV2GatewayInterface gateway) {
public RewardListingV2Presenter(RewardListingV2PresenterInterface.RewardListingV2ContractInterface view, RewardListingV2InteractorInterface.RewardListingV2GatewayInterface gateway) {
this.view = view;
this.gateway = gateway;
compositeDisposable = new CompositeDisposable();
@ -59,8 +59,8 @@ public class RewardListingV2Presenter extends BasePresenter implements RewardLis
compositeDisposable.add(
Observable.zip(getAllProductListFromNetwork(), getAllOrderedProductListFromNetwork(), RewardListingScreenModel::new)
.doOnSubscribe(subs -> view.showProgressBar(true, getStringfromStringId(R.string.processing_request_text)))
.doFinally(() -> view.showProgressBar(false, ""))
.observeOn(AndroidSchedulers.mainThread())
.doFinally(() -> view.showProgressBar(false, ""))
.subscribeWith(new RewardRelatedDataObserver())
);
}
@ -73,7 +73,7 @@ public class RewardListingV2Presenter extends BasePresenter implements RewardLis
return this.gateway.getRewardOrderedProductList(this.gateway.getAuth(), this.gateway.getUserID(), startDate, endDate)
.subscribeOn(Schedulers.io())
.doOnSubscribe(subs -> view.showProgressBar(true, getStringfromStringId(R.string.processing_request_text)))
.doFinally(() -> view.showProgressBar(false, ""))
.doOnError(error -> {
if (error instanceof HttpException && ((HttpException) error).code() == 401) {
gateway.clearAllUserData();
@ -81,13 +81,11 @@ public class RewardListingV2Presenter extends BasePresenter implements RewardLis
})
.flatMap(response -> {
GenericResponseDataModel<ArrayList<RewardOrderedProductItemModel>> data = HttpClientV2.getDeserializer().fromJson(response.string(), productType);
if(data.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2))
{
if (data.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) {
return Observable.just(data.getData());
}
else
} else
return Observable.just(new ArrayList<RewardOrderedProductItemModel>());
}).observeOn(AndroidSchedulers.mainThread());
}).observeOn(AndroidSchedulers.mainThread()).doFinally(() -> view.showProgressBar(false, ""));
}
@Override
@ -124,7 +122,7 @@ public class RewardListingV2Presenter extends BasePresenter implements RewardLis
.subscribeOn(Schedulers.io())
.flatMap(response -> {
GenericResponseDataModel<ArrayList<RewardOrderedProductItemModel>> data = HttpClientV2.getDeserializer().fromJson(response.string(), productType);
if(data.getData()==null)
if (data.getData() == null)
data.setData(new ArrayList<>());
return Observable.just(data.getData());
});
@ -143,7 +141,6 @@ public class RewardListingV2Presenter extends BasePresenter implements RewardLis
}
public static class RewardListingScreenModel {
ArrayList<RewardProductItemModel> rewardProductItemModels;
ArrayList<RewardOrderedProductItemModel> rewardOrderedProductItemModels;
@ -203,9 +200,4 @@ public class RewardListingV2Presenter extends BasePresenter implements RewardLis
}
}

13
app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/presenter/SplashScreenPresenter.java

@ -90,12 +90,13 @@ public class SplashScreenPresenter extends BasePresenter implements SplashScreen
@Override
public boolean checkSafety() {
if (hasRootAccess() || !checkIfAppSafe()) {
view.showPopUpMessage("Access Denied", CustomAlertDialog.AlertType.ALERT, null);
new Handler().postDelayed(() -> view.exitView(), 1500);
return false;
} else
return true;
return true;
// if (hasRootAccess() || !checkIfAppSafe()) {
// view.showPopUpMessage("Access Denied", CustomAlertDialog.AlertType.ALERT, null);
// new Handler().postDelayed(() -> view.exitView(), 1500);
// return false;
// } else
// return true;
}
}

2
app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/view/SplashScreen.java

@ -836,7 +836,7 @@ public class SplashScreen extends BaseActivity implements View.OnClickListener,
private void initAntiDebugger() {
boolean isDebuggable = (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE));
if (isDebuggable)
if (isDebuggable&&false)
startAntiDebugger();
}

35
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/adapter/LocalTopUpServiceViewPagerAdapter.java

@ -0,0 +1,35 @@
package com.gmeremit.online.gmeremittance_native.topup.local.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class LocalTopUpServiceViewPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fraglist;
public LocalTopUpServiceViewPagerAdapter(FragmentManager fm) {
super(fm);
fraglist=new ArrayList<>();
}
@Override
public Fragment getItem(int position) {
return fraglist.get(position);
}
public void addFragments(List<Fragment> data)
{
fraglist=data;
}
@Override
public int getCount() {
return fraglist.size();
}
}

21
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/gateway/LocalTopUpGateway.java

@ -0,0 +1,21 @@
package com.gmeremit.online.gmeremittance_native.topup.local.gateway;
import com.gmeremit.online.gmeremittance_native.base.PrivilegedGateway;
import com.gmeremit.online.gmeremittance_native.topup.local.presenter.LocalTopUpInteractorInterface;
import com.gmeremit.online.gmeremittance_native.utils.https.HttpClientV2;
import com.google.gson.JsonObject;
import io.reactivex.Observable;
import okhttp3.ResponseBody;
public class LocalTopUpGateway extends PrivilegedGateway implements LocalTopUpInteractorInterface.LocalTopupGateway {
@Override
public Observable<ResponseBody> getLocalTopUpRelatedData(String auth, String cardType, String topUpMobileNumber) {
JsonObject jsonObject=new JsonObject();
jsonObject.addProperty("GetcardType",cardType);
jsonObject.addProperty("PhoneNo",topUpMobileNumber);
return HttpClientV2.getInstance().getLocalTopUpRelatedData(auth,jsonObject);
}
}

19
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/model/ButtonsGrid.java

@ -0,0 +1,19 @@
package com.gmeremit.online.gmeremittance_native.topup.local.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class ButtonsGrid {
@SerializedName("Price")
@Expose
private String price;
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}

65
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/model/CardInfoDTO.java

@ -0,0 +1,65 @@
package com.gmeremit.online.gmeremittance_native.topup.local.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class CardInfoDTO {
@SerializedName("CardCode")
@Expose
private String cardCode;
@SerializedName("CardName")
@Expose
private String cardName;
@SerializedName("FacePrice")
@Expose
private String facePrice;
@SerializedName("SubInfo")
@Expose
private List<SubInfo> subInfo = null;
@SerializedName("Promotion_price")
@Expose
private String promotionPrice;
public String getCardCode() {
return cardCode;
}
public void setCardCode(String cardCode) {
this.cardCode = cardCode;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public String getFacePrice() {
return facePrice;
}
public void setFacePrice(String facePrice) {
this.facePrice = facePrice;
}
public List<SubInfo> getSubInfo() {
return subInfo;
}
public void setSubInfo(List<SubInfo> subInfo) {
this.subInfo = subInfo;
}
public String getPromotionPrice() {
return promotionPrice;
}
public void setPromotionPrice(String promotionPrice) {
this.promotionPrice = promotionPrice;
}
}

64
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/model/LocalTopUpResponseDTO.java

@ -0,0 +1,64 @@
package com.gmeremit.online.gmeremittance_native.topup.local.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class LocalTopUpResponseDTO {
@SerializedName("CardListType")
@Expose
private String cardListType;
@SerializedName("ButtonsGrid")
@Expose
private List<ButtonsGrid> buttonsGrid = null;
@SerializedName("CountryPriceCode")
@Expose
private String countryPriceCode;
@SerializedName("CardInfo")
@Expose
private List<CardInfoDTO> cardInfo;
public String getCardListType() {
return cardListType;
}
public void setCardListType(String cardListType) {
this.cardListType = cardListType;
}
public List<ButtonsGrid> getButtonsGrid() {
return buttonsGrid;
}
public void setButtonsGrid(List<ButtonsGrid> buttonsGrid) {
this.buttonsGrid = buttonsGrid;
}
public String getCountryPriceCode() {
return countryPriceCode;
}
public void setCountryPriceCode(String countryPriceCode) {
this.countryPriceCode = countryPriceCode;
}
public List<CardInfoDTO> getCardInfo() {
return cardInfo;
}
public void setCardInfo(List<CardInfoDTO> cardInfo) {
this.cardInfo = cardInfo;
}
@Override
public String toString() {
return "LocalTopUpResponseDTO{" +
"cardListType='" + cardListType + '\'' +
", buttonsGrid=" + buttonsGrid +
", countryPriceCode='" + countryPriceCode + '\'' +
", cardInfo=" + cardInfo +
'}';
}
}

41
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/model/PlanInfo.java

@ -0,0 +1,41 @@
package com.gmeremit.online.gmeremittance_native.topup.local.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class PlanInfo {
@SerializedName("Data")
@Expose
private String data;
@SerializedName("Voice")
@Expose
private String voice;
@SerializedName("Unlimited")
@Expose
private Object unlimited;
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getVoice() {
return voice;
}
public void setVoice(String voice) {
this.voice = voice;
}
public Object getUnlimited() {
return unlimited;
}
public void setUnlimited(Object unlimited) {
this.unlimited = unlimited;
}
}

107
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/model/SubInfo.java

@ -0,0 +1,107 @@
package com.gmeremit.online.gmeremittance_native.topup.local.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class SubInfo {
@SerializedName("Mvno_code")
@Expose
private String mvnoCode;
@SerializedName("Sale_price")
@Expose
private String salePrice;
@SerializedName("Card_type")
@Expose
private String cardType;
@SerializedName("Product_name")
@Expose
private String productName;
@SerializedName("Face_price")
@Expose
private String facePrice;
@SerializedName("Product_type")
@Expose
private String productType;
@SerializedName("Plan_info")
@Expose
private PlanInfo planInfo;
@SerializedName("Card_name")
@Expose
private String cardName;
@SerializedName("Telecom_code")
@Expose
private String telecomCode;
public String getMvnoCode() {
return mvnoCode;
}
public void setMvnoCode(String mvnoCode) {
this.mvnoCode = mvnoCode;
}
public String getSalePrice() {
return salePrice;
}
public void setSalePrice(String salePrice) {
this.salePrice = salePrice;
}
public String getCardType() {
return cardType;
}
public void setCardType(String cardType) {
this.cardType = cardType;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getFacePrice() {
return facePrice;
}
public void setFacePrice(String facePrice) {
this.facePrice = facePrice;
}
public String getProductType() {
return productType;
}
public void setProductType(String productType) {
this.productType = productType;
}
public PlanInfo getPlanInfo() {
return planInfo;
}
public void setPlanInfo(PlanInfo planInfo) {
this.planInfo = planInfo;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public String getTelecomCode() {
return telecomCode;
}
public void setTelecomCode(String telecomCode) {
this.telecomCode = telecomCode;
}
}

16
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/presenter/LocalTopUpInteractorInterface.java

@ -0,0 +1,16 @@
package com.gmeremit.online.gmeremittance_native.topup.local.presenter;
import com.gmeremit.online.gmeremittance_native.base.BaseInteractorInterface;
import com.gmeremit.online.gmeremittance_native.base.PrivilegedGatewayInterface;
import io.reactivex.Observable;
import okhttp3.ResponseBody;
public interface LocalTopUpInteractorInterface extends BaseInteractorInterface {
interface LocalTopupGateway extends PrivilegedGatewayInterface
{
Observable<ResponseBody> getLocalTopUpRelatedData(String auth,String cardType,String topUpMobileNumber);
}
}

133
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/presenter/LocalTopUpPresenter.java

@ -0,0 +1,133 @@
package com.gmeremit.online.gmeremittance_native.topup.local.presenter;
import android.util.Log;
import com.gmeremit.online.gmeremittance_native.R;
import com.gmeremit.online.gmeremittance_native.base.BasePresenter;
import com.gmeremit.online.gmeremittance_native.topup.local.model.LocalTopUpResponseDTO;
import com.gmeremit.online.gmeremittance_native.utils.Constants;
import com.gmeremit.online.gmeremittance_native.utils.https.GenericResponseDataModel;
import com.gmeremit.online.gmeremittance_native.utils.https.HttpClientV2;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.observers.DisposableObserver;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.subjects.BehaviorSubject;
public class LocalTopUpPresenter extends BasePresenter implements LocalTopUpPresenterInterface {
private final LocalTopUpContractInterface view;
private final LocalTopUpInteractorInterface.LocalTopupGateway gateway;
private final CompositeDisposable compositeDisposable;
private final BehaviorSubject<LocalTopUpRelatedData> topUpRelatedData;
public static final String REGULAR_CARD_TYPE="1";
public static final String FIXED_CARD_TYPE="6";
public static final String DATA_PACK_CARD_TYPE="5";
public LocalTopUpPresenter(LocalTopUpContractInterface view, LocalTopUpInteractorInterface.LocalTopupGateway gateway) {
this.view=view;
this.gateway=gateway;
this.compositeDisposable=new CompositeDisposable();
this.topUpRelatedData= BehaviorSubject.create();
}
@Override
public void getAllRequiredData() {
this.compositeDisposable.add(
Observable.zip(
getLocalTopUpOnBasisCardType(REGULAR_CARD_TYPE,"")
.onErrorReturnItem(new LocalTopUpResponseDTO()),
getLocalTopUpOnBasisCardType(FIXED_CARD_TYPE,"")
.onErrorReturnItem(new LocalTopUpResponseDTO()),
getLocalTopUpOnBasisCardType(DATA_PACK_CARD_TYPE,"")
.onErrorReturnItem(new LocalTopUpResponseDTO()),
LocalTopUpRelatedData::new)
.subscribeOn(Schedulers.io())
.doOnSubscribe(d->view.showProgressBar(true,getStringfromStringId(R.string.processing_request_text)))
.observeOn(AndroidSchedulers.mainThread())
.doFinally(()->view.showProgressBar(false,""))
.subscribeWith(new LocalTopUpRelatedDataObserver())
);
}
@Override
public Observable<LocalTopUpResponseDTO> subscribeToRegularTopUpRelatedDataEvent() {
return topUpRelatedData.flatMap(allData-> Observable.just(allData.getRegularDTO()));
}
@Override
public Observable<LocalTopUpResponseDTO> subscribeToFixedTopUpRelatedDataEvent() {
return topUpRelatedData.flatMap(allData-> Observable.just(allData.getFixedDTO()));
}
@Override
public Observable<LocalTopUpResponseDTO> subscribeToDataPackTopUpRelatedDataEvent() {
return topUpRelatedData.flatMap(allData-> Observable.just(allData.getDataPackDTO()));
}
private Observable<LocalTopUpResponseDTO> getLocalTopUpOnBasisCardType(String cardType, String mobileNumber)
{
Type productType = new TypeToken<GenericResponseDataModel<LocalTopUpResponseDTO>>() {}.getType();
return this.gateway.getLocalTopUpRelatedData(this.gateway.getAuth(),cardType,mobileNumber)
.subscribeOn(Schedulers.io())
.flatMap(response -> {
GenericResponseDataModel<LocalTopUpResponseDTO> data = HttpClientV2.getDeserializer().fromJson(response.string(), productType);
if(data.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2))
return Observable.just(data.getData());
else
return Observable.error(new Throwable(data.getMsg()));
});
}
public static class LocalTopUpRelatedData
{
private LocalTopUpResponseDTO regularDTO;
private LocalTopUpResponseDTO fixedDTO;
private LocalTopUpResponseDTO dataPackDTO;
public LocalTopUpRelatedData(LocalTopUpResponseDTO regularDTO, LocalTopUpResponseDTO fixedDTO, LocalTopUpResponseDTO dataPackDTO) {
this.regularDTO = regularDTO;
this.fixedDTO = fixedDTO;
this.dataPackDTO = dataPackDTO;
}
public LocalTopUpResponseDTO getRegularDTO() {
return regularDTO;
}
public LocalTopUpResponseDTO getFixedDTO() {
return fixedDTO;
}
public LocalTopUpResponseDTO getDataPackDTO() {
return dataPackDTO;
}
}
public class LocalTopUpRelatedDataObserver extends DisposableObserver<LocalTopUpRelatedData>
{
@Override
public void onNext(LocalTopUpRelatedData o) {
topUpRelatedData.onNext(o);
}
@Override
public void onError(Throwable e) {
Log.d("LocalTopUpError",e.getMessage());
}
@Override
public void onComplete() {
}
}
}

20
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/presenter/LocalTopUpPresenterInterface.java

@ -0,0 +1,20 @@
package com.gmeremit.online.gmeremittance_native.topup.local.presenter;
import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface;
import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface;
import com.gmeremit.online.gmeremittance_native.topup.local.model.LocalTopUpResponseDTO;
import io.reactivex.Observable;
public interface LocalTopUpPresenterInterface extends BasePresenterInterface {
void getAllRequiredData();
Observable<LocalTopUpResponseDTO> subscribeToRegularTopUpRelatedDataEvent();
Observable<LocalTopUpResponseDTO> subscribeToFixedTopUpRelatedDataEvent();
Observable<LocalTopUpResponseDTO> subscribeToDataPackTopUpRelatedDataEvent();
interface LocalTopUpContractInterface extends BaseContractInterface {
}
}

117
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/view/LocalTopUpActivity.java

@ -0,0 +1,117 @@
package com.gmeremit.online.gmeremittance_native.topup.local.view;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
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.topup.local.adapter.LocalTopUpServiceViewPagerAdapter;
import com.gmeremit.online.gmeremittance_native.topup.local.gateway.LocalTopUpGateway;
import com.gmeremit.online.gmeremittance_native.topup.local.presenter.LocalTopUpPresenter;
import com.gmeremit.online.gmeremittance_native.topup.local.presenter.LocalTopUpPresenterInterface;
import com.gmeremit.online.gmeremittance_native.topup.local.view.services.DataOnlyLocalTopUpFragment;
import com.gmeremit.online.gmeremittance_native.topup.local.view.services.FixedChargeLocalTopupFragment;
import com.gmeremit.online.gmeremittance_native.topup.local.view.services.RegularLocalTopupFragment;
import com.gmeremit.online.gmeremittance_native.transactionhistoryV2.view.domestic.DomesticTransactionHistoryTypeFragmentV2;
import com.gmeremit.online.gmeremittance_native.transactionhistoryV2.view.international.InternationalTransactionHistoryContainerFragmentV2;
import com.gmeremit.online.gmeremittance_native.transactionhistoryV2.view.international.adapter.TransactionHistoryViewPagerAdapter;
import java.util.ArrayList;
import butterknife.BindView;
import butterknife.ButterKnife;
public class LocalTopUpActivity extends BaseActivity implements LocalTopUpPresenterInterface.LocalTopUpContractInterface,LocalTopUpActivityActionListener{
@BindView(R.id.localTopupTabLayout)
TabLayout localTopupTabLayout;
@BindView(R.id.toolbar_title)
GmeTextView toolbarTitle;
@BindView(R.id.localTopupViewPager)
ViewPager localTopupViewPager;
@BindView(R.id.iv_back)
ImageView ivBack;
@BindView(R.id.iv_cancel)
View ivCancel;
private LocalTopUpServiceViewPagerAdapter localTopupViewPagerAdapter;
private ArrayList<Fragment> fragments;
private LocalTopUpPresenterInterface presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_local_top_up);
ButterKnife.bind(this);
initialize();
performDefaultAction(savedInstanceState);
}
private void initialize() {
presenter=new LocalTopUpPresenter(this,new LocalTopUpGateway());
toolbarTitle.setText(getString(R.string.transaction_report_title_text));
setupViewPager();
setUpTabLayout();
ivCancel.setVisibility(View.INVISIBLE);
}
private void performDefaultAction(Bundle savedInstanceState) {
presenter.getAllRequiredData();
}
private void setUpTabLayout() {
try {
localTopupTabLayout.getTabAt(0).setCustomView(R.layout.tab_regular_local_top_up);
localTopupTabLayout.getTabAt(1).setCustomView(R.layout.tab_fixed_local_top_up);
localTopupTabLayout.getTabAt(2).setCustomView(R.layout.tab_data_local_top_up);
} catch (NullPointerException e) {
}
}
private void setupViewPager() {
localTopupViewPagerAdapter = new LocalTopUpServiceViewPagerAdapter(getSupportFragmentManager());
fragments = new ArrayList<>();
fragments.add(new RegularLocalTopupFragment());
fragments.add(new FixedChargeLocalTopupFragment());
fragments.add(new DataOnlyLocalTopUpFragment());
// fragments.add(deliveredTransactionFragment);
localTopupViewPagerAdapter.addFragments(fragments);
localTopupViewPager.setOffscreenPageLimit(3);
localTopupViewPager.setAdapter(localTopupViewPagerAdapter);
localTopupTabLayout.setupWithViewPager(localTopupViewPager);
}
@Override
public LocalTopUpPresenterInterface getPresenter() {
return this.presenter;
}
}

8
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/view/LocalTopUpActivityActionListener.java

@ -0,0 +1,8 @@
package com.gmeremit.online.gmeremittance_native.topup.local.view;
import com.gmeremit.online.gmeremittance_native.topup.local.presenter.LocalTopUpPresenterInterface;
public interface LocalTopUpActivityActionListener
{
LocalTopUpPresenterInterface getPresenter();
}

41
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/view/services/DataOnlyLocalTopUpFragment.java

@ -0,0 +1,41 @@
package com.gmeremit.online.gmeremittance_native.topup.local.view.services;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;
import com.gmeremit.online.gmeremittance_native.base.BaseFragment;
import com.gmeremit.online.gmeremittance_native.topup.local.model.LocalTopUpResponseDTO;
import com.gmeremit.online.gmeremittance_native.topup.local.view.LocalTopUpActivityActionListener;
import io.reactivex.observers.DisposableObserver;
public class DataOnlyLocalTopUpFragment extends BaseFragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((LocalTopUpActivityActionListener)getActivity()).getPresenter().subscribeToDataPackTopUpRelatedDataEvent().subscribe(new DataOnlyLocalTopUpFragmentObserver());
}
public class DataOnlyLocalTopUpFragmentObserver extends DisposableObserver<LocalTopUpResponseDTO>
{
@Override
public void onNext(LocalTopUpResponseDTO localTopUpResponseDTO) {
Log.d("LOCALTOPUPDATA",this.getClass().getSimpleName()+" : "+localTopUpResponseDTO.toString());
}
@Override
public void onError(Throwable e) {
Log.d("DataPackLocalTopUp",e.getMessage());
}
@Override
public void onComplete() {
}
}
}

40
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/view/services/FixedChargeLocalTopupFragment.java

@ -0,0 +1,40 @@
package com.gmeremit.online.gmeremittance_native.topup.local.view.services;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;
import com.gmeremit.online.gmeremittance_native.base.BaseFragment;
import com.gmeremit.online.gmeremittance_native.topup.local.model.LocalTopUpResponseDTO;
import com.gmeremit.online.gmeremittance_native.topup.local.view.LocalTopUpActivityActionListener;
import io.reactivex.observers.DisposableObserver;
public class FixedChargeLocalTopupFragment extends BaseFragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((LocalTopUpActivityActionListener)getActivity()).getPresenter().subscribeToFixedTopUpRelatedDataEvent().subscribe(new FixedChargeLocalTopupFragmentObserver());
}
public class FixedChargeLocalTopupFragmentObserver extends DisposableObserver<LocalTopUpResponseDTO>
{
@Override
public void onNext(LocalTopUpResponseDTO localTopUpResponseDTO) {
Log.d("LOCALTOPUPDATA",this.getClass().getSimpleName()+" : "+localTopUpResponseDTO.toString());
}
@Override
public void onError(Throwable e) {
Log.d("DataPackLocalTopUp",e.getMessage());
}
@Override
public void onComplete() {
}
}
}

40
app/src/main/java/com/gmeremit/online/gmeremittance_native/topup/local/view/services/RegularLocalTopupFragment.java

@ -0,0 +1,40 @@
package com.gmeremit.online.gmeremittance_native.topup.local.view.services;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;
import com.gmeremit.online.gmeremittance_native.base.BaseFragment;
import com.gmeremit.online.gmeremittance_native.topup.local.model.LocalTopUpResponseDTO;
import com.gmeremit.online.gmeremittance_native.topup.local.view.LocalTopUpActivityActionListener;
import io.reactivex.observers.DisposableObserver;
public class RegularLocalTopupFragment extends BaseFragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((LocalTopUpActivityActionListener)getActivity()).getPresenter().subscribeToRegularTopUpRelatedDataEvent().subscribe(new RegularLocalTopUpFragmentObserver());
}
public class RegularLocalTopUpFragmentObserver extends DisposableObserver<LocalTopUpResponseDTO>
{
@Override
public void onNext(LocalTopUpResponseDTO localTopUpResponseDTO) {
Log.d("LOCALTOPUPDATA",this.getClass().getSimpleName()+" : "+localTopUpResponseDTO.toString());
}
@Override
public void onError(Throwable e) {
Log.d("DataPackLocalTopUp",e.getMessage());
}
@Override
public void onComplete() {
}
}
}

2
app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionhistoryV2/view/TransactionHistoryActivityV2.java

@ -55,8 +55,6 @@ public class TransactionHistoryActivityV2 extends BaseActivity implements Transa
List<Fragment> fragments;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

1
app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java

@ -64,5 +64,6 @@ public class API_URL {
public static final String DOMESTIC_REMIT_TXN = BuildConfig.API_VERSION + "/kftc/SendDomeRimit";
public static final String DOMESTIC_TXN_HISTORY = BuildConfig.API_VERSION + "/mobile/DomestricTranhistory/{userId}";
public static final String DOMESTIC_TXN_RECEIPT = BuildConfig.API_VERSION + "/mobile/DomesticReceipt/{tranId}";
public static final String LOCAL_TOPUP_RELATED_DATA = BuildConfig.API_VERSION + "/powerCall/GetCardList" ;
}

4
app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java

@ -292,6 +292,10 @@ public interface ApiEndpoints {
@Headers("Content-Type: application/json")
Observable<ResponseBody> getDomesticReceipt(@Header("Authorization") String token, @Path("tranId") String tranID);
@POST(API_URL.LOCAL_TOPUP_RELATED_DATA)
@Headers("Content-Type: application/json")
Observable<ResponseBody> getLocalTopUpRelatedData(@Header("Authorization") String token, @Body() JsonObject jsonObject);

12
app/src/main/res/drawable/circular_tab_layout_bg.xml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="@dimen/_12sdp"/>
<!-- TabLayout background color -->
<solid
android:color="#E0E0E0"/>
</shape>

21
app/src/main/res/drawable/circular_tab_selected_bg.xml

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:left="@dimen/_2sdp"
android:right="@dimen/_2sdp"
android:top="@dimen/_2sdp"
android:bottom="@dimen/_2sdp">
<shape
android:shape="rectangle">
<corners
android:radius="@dimen/_12sdp"/>
<solid
android:color="#FBFCFD"/>
</shape>
</item>
</layer-list>

12
app/src/main/res/drawable/circular_tab_selector.xml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/circular_tab_selected_bg"
android:state_selected="true"/>
<item
android:drawable="@drawable/circular_tab_unselected_bg"
android:state_selected="false"/>
</selector>

18
app/src/main/res/drawable/circular_tab_unselected_bg.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:left="@dimen/_2sdp"
android:right="@dimen/_2sdp"
android:top="@dimen/_2sdp"
android:bottom="@dimen/_2sdp">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="@android:color/transparent" />
</shape>
</item>
</layer-list>

2
app/src/main/res/drawable/ic_rounded_country_listing_pink.xml

@ -1,5 +1,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FFFAF5F5"/>
<solid android:color="@color/light_pink"/>
<corners android:radius="12dp"/>
</shape>

115
app/src/main/res/layout/activity_local_top_up.xml

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<include layout="@layout/layout_sendmoney_toolbar" />
<android.support.v7.widget.CardView
app:cardCornerRadius="0dp"
android:background="@color/gray"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.constraint.ConstraintLayout
android:id="@+id/senderAccountRelatedViewContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/bright_gray"
android:paddingTop="@dimen/_10sdp"
android:paddingBottom="@dimen/_10sdp">
<com.gmeremit.online.gmeremittance_native.customwidgets.GMEFormInputField
android:id="@+id/receiverMobileNumberFormInputField"
style="@style/gme_form_text_input_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/select_auto_debit_account_text"
android:visibility="visible"
app:edFormCursorVisible="false"
app:edFormFocusable="false"
android:layout_marginStart="@dimen/_8sdp"
app:layout_constraintEnd_toStartOf="@+id/imageView8"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/imageView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="13dp"
android:layout_marginStart="@dimen/_8sdp"
android:layout_marginEnd="@dimen/_8sdp"
android:background="@drawable/ic_arrow_down"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/receiverMobileNumberFormInputField"
app:layout_constraintTop_toTopOf="@+id/receiverMobileNumberFormInputField"
app:layout_constraintBottom_toBottomOf="@+id/receiverMobileNumberFormInputField"/>
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView
android:id="@+id/currentBalanceTextView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_5sdp"
android:layout_marginStart="@dimen/_8sdp"
android:layout_marginEnd="@dimen/_8sdp"
android:paddingStart="@dimen/_8sdp"
android:paddingTop="@dimen/_3sdp"
android:paddingEnd="@dimen/_8sdp"
android:paddingBottom="@dimen/_3sdp"
android:text="@string/na_text"
android:textColor="@color/dark_gray"
android:textSize="17sp"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/receiverMobileNumberFormInputField"
app:txtfontName="@string/semibold" />
</android.support.constraint.ConstraintLayout>
</android.support.v7.widget.CardView>
<android.support.design.widget.TabLayout
android:layout_marginStart="@dimen/_8sdp"
android:layout_marginEnd="@dimen/_8sdp"
android:layout_marginTop="@dimen/_10sdp"
android:id="@+id/localTopupTabLayout"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="@dimen/_28sdp"
android:background="@drawable/circular_tab_layout_bg"
app:tabMaxWidth="0dp"
app:tabGravity="fill"
app:tabMode="fixed"
app:tabBackground="@drawable/circular_tab_selector"
app:tabIndicatorHeight="0dp"
app:tabRippleColor="@null"
app:tabTextAppearance="@style/CircularTabTextAppearance"
/>
<android.support.v4.view.ViewPager
android:id="@+id/localTopupViewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
</ScrollView>

14
app/src/main/res/layout/tab_data_local_top_up.xml

@ -0,0 +1,14 @@
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView android:gravity="center"
android:text="Data"
android:textSize="17sp"
android:textColor="@color/black"
android:layout_marginTop="@dimen/_2sdp"
android:layout_marginBottom="@dimen/_2sdp"
app:txtfontName="@string/semibold"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
xmlns:app="http://schemas.android.com/apk/res-auto">
</com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView>

14
app/src/main/res/layout/tab_fixed_local_top_up.xml

@ -0,0 +1,14 @@
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView android:gravity="center"
android:text="Fixed"
android:textSize="17sp"
android:textColor="@color/black"
android:layout_marginTop="@dimen/_2sdp"
android:layout_marginBottom="@dimen/_2sdp"
app:txtfontName="@string/semibold"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
xmlns:app="http://schemas.android.com/apk/res-auto">
</com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView>

14
app/src/main/res/layout/tab_regular_local_top_up.xml

@ -0,0 +1,14 @@
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView android:gravity="center"
android:text="Regular"
android:textSize="17sp"
android:layout_marginTop="@dimen/_2sdp"
android:layout_marginBottom="@dimen/_2sdp"
android:textColor="@color/black"
app:txtfontName="@string/semibold"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
xmlns:app="http://schemas.android.com/apk/res-auto">
</com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView>

1
app/src/main/res/values/colors.xml

@ -36,5 +36,6 @@
<color name="dot_dark">#80FFFFFF</color>
<color name="dot_light">#FFFFFF</color>
<color name="turquoise">#08A384</color>
<color name="light_pink">#FFFAF5F5</color>
</resources>

7
app/src/main/res/values/styles.xml

@ -126,4 +126,11 @@
</style>
<style name="CircularTabTextAppearance" parent="TextAppearance.Design.Tab">
<item name="android:textSize">@dimen/_11ssp</item>
<item name="android:textColor">#fff</item>
<item name="android:textStyle">bold</item>
</style>
</resources>
Loading…
Cancel
Save