|
|
@ -1,17 +1,21 @@ |
|
|
|
package com.gmeremit.online.gmeremittance_native.rewardV2.presenter.rewardlisting; |
|
|
|
|
|
|
|
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.customwidgets.CustomAlertDialog; |
|
|
|
import com.gmeremit.online.gmeremittance_native.rewardV2.gateway.rewardlisting.RewardListingV2Gateway; |
|
|
|
import com.gmeremit.online.gmeremittance_native.rewardV2.model.rewardlisting.RewardOrderedProductItemModel; |
|
|
|
import com.gmeremit.online.gmeremittance_native.rewardV2.model.rewardlisting.RewardProductItemModel; |
|
|
|
import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponse; |
|
|
|
import com.gmeremit.online.gmeremittance_native.utils.https.GenericResponseDataModel; |
|
|
|
import com.gmeremit.online.gmeremittance_native.utils.https.HTTPConstants; |
|
|
|
import com.gmeremit.online.gmeremittance_native.utils.https.HttpClientV2; |
|
|
|
import com.google.gson.reflect.TypeToken; |
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
import java.lang.reflect.Array; |
|
|
|
import java.lang.reflect.Type; |
|
|
|
import java.net.SocketTimeoutException; |
|
|
|
import java.util.ArrayList; |
|
|
@ -55,28 +59,61 @@ public class RewardListingV2Presenter extends BasePresenter implements RewardLis |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Observable<List<RewardProductItemModel>> subscribeToRewardFetchingEvent() { |
|
|
|
public Observable<ArrayList<RewardOrderedProductItemModel>> getOrderedProductList(String startDate, String endDate) { |
|
|
|
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(); |
|
|
|
} |
|
|
|
}) |
|
|
|
.flatMap(response -> { |
|
|
|
TypeToken productType = TypeToken.getParameterized(GenericResponseDataModel.class, ArrayList.class, RewardOrderedProductItemModel.class); |
|
|
|
GenericResponseDataModel<ArrayList<RewardOrderedProductItemModel>> data = HttpClientV2.getDeserializer().fromJson(response.string(), productType.getType()); |
|
|
|
|
|
|
|
return Observable.just(data.getData()); |
|
|
|
}).observeOn(AndroidSchedulers.mainThread()); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Observable<ArrayList<RewardProductItemModel>> subscribeToRewardFetchingEvent() { |
|
|
|
return rewardRelatedDataSubject.flatMap(rewardRelatedData -> Observable.just(rewardRelatedData.getRewardProductItemModels())); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Observable<List<RewardOrderedProductItemModel>> subscribeToOrderListFetchingEvent() { |
|
|
|
public Observable<ArrayList<RewardOrderedProductItemModel>> subscribeToOrderListFetchingEvent() { |
|
|
|
return rewardRelatedDataSubject.flatMap(rewardRelatedData -> Observable.just(rewardRelatedData.getRewardOrderedProductItemModels())); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public String getCurrentRewardPoint() { |
|
|
|
return gateway.getCustomerRewardPoint(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Observable<List<RewardProductItemModel>> getAllProductListFromNetwork() { |
|
|
|
TypeToken productType = TypeToken.getParameterized(GenericResponseDataModel.class, List.class, RewardProductItemModel.class); |
|
|
|
private Observable<ArrayList<RewardProductItemModel>> getAllProductListFromNetwork() { |
|
|
|
Type productType = new TypeToken<GenericResponseDataModel<ArrayList<RewardProductItemModel>>>() { |
|
|
|
}.getType(); |
|
|
|
return this.gateway.getRewardProductList(this.gateway.getAuth()) |
|
|
|
.subscribeOn(Schedulers.io()) |
|
|
|
.flatMap(response -> HttpClientV2.getDeserializer().fromJson(response.string(), productType.getType())); |
|
|
|
.flatMap(response -> { |
|
|
|
GenericResponseDataModel<ArrayList<RewardProductItemModel>> data = HttpClientV2.getDeserializer().fromJson(response.string(), productType); |
|
|
|
Log.d("RewardModule", data.getData().get(0).getProductName()); |
|
|
|
return Observable.just(data.getData()); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
private Observable<List<RewardOrderedProductItemModel>> getAllOrderedProductListFromNetwork() { |
|
|
|
TypeToken productType = TypeToken.getParameterized(GenericResponseDataModel.class, List.class, RewardOrderedProductItemModel.class); |
|
|
|
return this.gateway.getRewardOrderedProductList(this.gateway.getAuth(),this.gateway.getUserID(),"","") |
|
|
|
private Observable<ArrayList<RewardOrderedProductItemModel>> getAllOrderedProductListFromNetwork() { |
|
|
|
Type productType = new TypeToken<GenericResponseDataModel<ArrayList<RewardOrderedProductItemModel>>>() { |
|
|
|
}.getType(); |
|
|
|
return this.gateway.getRewardOrderedProductList(this.gateway.getAuth(), this.gateway.getUserID(), "", "") |
|
|
|
.subscribeOn(Schedulers.io()) |
|
|
|
.flatMap(response -> HttpClientV2.getDeserializer().fromJson(response.string(), productType.getType())); |
|
|
|
.flatMap(response -> { |
|
|
|
GenericResponseDataModel<ArrayList<RewardOrderedProductItemModel>> data = HttpClientV2.getDeserializer().fromJson(response.string(), productType); |
|
|
|
return Observable.just(data.getData()); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -90,20 +127,20 @@ public class RewardListingV2Presenter extends BasePresenter implements RewardLis |
|
|
|
compositeDisposable.dispose(); |
|
|
|
} |
|
|
|
|
|
|
|
public class RewardListingScreenModel { |
|
|
|
List<RewardProductItemModel> rewardProductItemModels; |
|
|
|
List<RewardOrderedProductItemModel> rewardOrderedProductItemModels; |
|
|
|
public static class RewardListingScreenModel { |
|
|
|
ArrayList<RewardProductItemModel> rewardProductItemModels; |
|
|
|
ArrayList<RewardOrderedProductItemModel> rewardOrderedProductItemModels; |
|
|
|
|
|
|
|
public RewardListingScreenModel(List<RewardProductItemModel> rewardProductItemModels, List<RewardOrderedProductItemModel> rewardOrderedProductItemModels) { |
|
|
|
public RewardListingScreenModel(ArrayList<RewardProductItemModel> rewardProductItemModels, ArrayList<RewardOrderedProductItemModel> rewardOrderedProductItemModels) { |
|
|
|
this.rewardProductItemModels = rewardProductItemModels; |
|
|
|
this.rewardOrderedProductItemModels = rewardOrderedProductItemModels; |
|
|
|
} |
|
|
|
|
|
|
|
public List<RewardProductItemModel> getRewardProductItemModels() { |
|
|
|
public ArrayList<RewardProductItemModel> getRewardProductItemModels() { |
|
|
|
return rewardProductItemModels; |
|
|
|
} |
|
|
|
|
|
|
|
public List<RewardOrderedProductItemModel> getRewardOrderedProductItemModels() { |
|
|
|
public ArrayList<RewardOrderedProductItemModel> getRewardOrderedProductItemModels() { |
|
|
|
return rewardOrderedProductItemModels; |
|
|
|
} |
|
|
|
|
|
|
@ -114,15 +151,18 @@ public class RewardListingV2Presenter extends BasePresenter implements RewardLis |
|
|
|
@Override |
|
|
|
public void onNext(RewardListingScreenModel rewardListingScreenModel) { |
|
|
|
rewardRelatedDataSubject.onNext(rewardListingScreenModel); |
|
|
|
view.lazyInstatiateView(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onError(Throwable e) { |
|
|
|
String errorMessage = ""; |
|
|
|
if (e instanceof HttpException) { |
|
|
|
if (((HttpException) e).code() == 401) |
|
|
|
if (((HttpException) e).code() == 401) { |
|
|
|
errorMessage = (HTTPConstants.getErrorMessageFromCode(((HttpException) e).code())); |
|
|
|
else |
|
|
|
gateway.clearAllUserData(); |
|
|
|
view.showPopUpMessage(errorMessage, CustomAlertDialog.AlertType.ALERT, alertType -> view.logout()); |
|
|
|
} else |
|
|
|
errorMessage = (HTTPConstants.getErrorMessageFromCode(((HttpException) e).code())); |
|
|
|
} else if (e instanceof SocketTimeoutException) { |
|
|
|
errorMessage = (HTTPConstants.HTTP_RESPONSE_NO_INTERNET); |
|
|
|