package org.onebrick.android.jobs; import android.support.annotation.NonNull; import com.path.android.jobqueue.Params; import org.onebrick.android.core.OneBrickApplication; import org.onebrick.android.core.OneBrickRESTClient; import org.onebrick.android.core.OneBrickService; import org.onebrick.android.events.FetchMyEventsEvent; import org.onebrick.android.events.Status; import org.onebrick.android.helpers.DateTimeFormatter; import org.onebrick.android.helpers.LoginManager; import org.onebrick.android.helpers.NetworkUtil; import org.onebrick.android.helpers.Utils; import org.onebrick.android.models.Event; import java.util.List; public class FetchMyEventsJob extends OneBrickBaseJob { public FetchMyEventsJob() { super(new Params(Priority.MEDIUM)); } @Override public void onRun() throws Throwable { if (!NetworkUtil.isConnected(OneBrickApplication.getInstance())) { Utils.postEventOnUi(new FetchMyEventsEvent(Status.NO_NETWORK)); return; } final OneBrickService restService = OneBrickRESTClient.getInstance().getRestService(); String ukey = LoginManager.getInstance(null).getCurrentUserKey(); List<Event> eventList = restService.getMyEvents(ukey, OneBrickRESTClient.INCLUDE_PAST_EVENTS, OneBrickRESTClient.PHOTO_NUM_IN_LIST); saveEvents(eventList); Utils.postEventOnUi(new FetchMyEventsEvent(Status.SUCCESS)); } @Override protected void onCancel() { Utils.postEventOnUi(new FetchMyEventsEvent(Status.FAILED)); } private void saveEvents(@NonNull List<Event> eventList) { for (Event event : eventList) { Event existingEvent = Event.findById(event.getEventId()); if ((existingEvent != null) && (existingEvent.getChapterId() > 0)) { event.setChapterId(existingEvent.getChapterId()); } if (DateTimeFormatter.getInstance().isPastEvent(event.getEndDate())) { event.setPastEvent(true); } event.save(); } } }