package com.mozu.mozuandroidinstoreassistant.app.order.loaders;
import android.util.Log;
import com.mozu.api.MozuApiContext;
import com.mozu.api.contracts.commerceruntime.fulfillment.Pickup;
import com.mozu.api.resources.commerce.orders.PickupResource;
import rx.Observable;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
public class PickupObservablesManager {
private static PickupObservablesManager mPickupObservablesManager;
private static PickupResource resource;
private PickupObservablesManager() {
}
public static PickupObservablesManager getInstance(int tenantId, int siteId) {
if (mPickupObservablesManager == null) {
mPickupObservablesManager = new PickupObservablesManager();
}
if (resource == null) {
resource = new PickupResource(new MozuApiContext(tenantId, siteId));
}
return mPickupObservablesManager;
}
public Observable<Pickup> createPickup(final Pickup pickup, final String orderId) {
return Observable.create(new Observable.OnSubscribe<Pickup>() {
@Override
public void call(Subscriber<? super Pickup> subscriber) {
try {
subscriber.onNext(resource.createPickup(pickup, orderId));
subscriber.onCompleted();
} catch (Exception e) {
Log.e("createPickup", e.toString());
subscriber.onError(e);
}
}
})
.subscribeOn(Schedulers.io());
}
public Observable<Pickup> updatePickup(final Pickup pickup, final String orderId) {
return Observable.create(new Observable.OnSubscribe<Pickup>() {
@Override
public void call(Subscriber<? super Pickup> subscriber) {
try {
subscriber.onNext(resource.updatePickup(pickup, orderId, pickup.getId()));
subscriber.onCompleted();
} catch (Exception e) {
Log.e("updatePickup", e.toString());
subscriber.onError(e);
}
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io());
}
public Observable<Pickup> deletePickup(final String pickupId, final String orderId) {
return Observable.create(new Observable.OnSubscribe<Pickup>() {
@Override
public void call(Subscriber<? super Pickup> subscriber) {
try {
resource.deletePickup(orderId, pickupId);
subscriber.onNext(null);
subscriber.onCompleted();
} catch (Exception e) {
Log.e("updatePickup", e.toString());
subscriber.onError(e);
}
}
})
.subscribeOn(Schedulers.io());
}
}