package com.mozu.mozuandroidinstoreassistant.app.order.loaders;
import com.crashlytics.android.Crashlytics;
import com.mozu.api.MozuApiContext;
import com.mozu.api.contracts.commerceruntime.orders.OrderNote;
import com.mozu.api.resources.commerce.orders.OrderNoteResource;
import rx.Observable;
import rx.Subscriber;
public class OrderNoteObserverable {
public static Observable<OrderNote> getOrderNoteObserverable(final Integer tenantId, final Integer siteId, final String orderId, final OrderNote note, final OrderCallType type) {
return Observable.create(new Observable.OnSubscribe<OrderNote>() {
@Override
public void call(Subscriber<? super OrderNote> subscriber) {
OrderNoteResource resource = new OrderNoteResource(new MozuApiContext(tenantId, siteId));
try {
switch (type) {
case CREATION:
subscriber.onNext(resource.createOrderNote(note, orderId));
subscriber.onCompleted();
break;
case UPDATE:
subscriber.onNext(resource.updateOrderNote(note, orderId, note.getId()));
subscriber.onCompleted();
break;
case DELETION:
resource.deleteOrderNote(orderId, note.getId());
subscriber.onNext(null);
subscriber.onCompleted();
break;
}
} catch (Exception e) {
Crashlytics.logException(e);
subscriber.onError(e);
}
}
});
}
public enum OrderCallType {
CREATION,
UPDATE,
DELETION
}
}