package org.onebrick.android.jobs; import android.support.annotation.NonNull; import com.activeandroid.query.Delete; 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.FetchEventsEvent; import org.onebrick.android.events.Status; import org.onebrick.android.helpers.NetworkUtil; import org.onebrick.android.helpers.Utils; import org.onebrick.android.models.Event; import java.util.List; public class FetchEventsJob extends OneBrickBaseJob { private int mChapterId; private String mSearchQuery; public FetchEventsJob(int chapterId, String searchQuery) { super(new Params(Priority.MEDIUM)); mChapterId = chapterId; mSearchQuery = searchQuery; } @Override public void onRun() throws Throwable { if (!NetworkUtil.isConnected(OneBrickApplication.getInstance())) { Utils.postEventOnUi(new FetchEventsEvent(Status.NO_NETWORK)); return; } final OneBrickService restService = OneBrickRESTClient.getInstance().getRestService(); List<Event> eventList = restService.getAllEvents(mChapterId, OneBrickRESTClient.PHOTO_NUM_IN_LIST, mSearchQuery); deleteOldEvents(); saveEvents(eventList, mChapterId); Utils.postEventOnUi(new FetchEventsEvent(Status.SUCCESS)); } private void deleteOldEvents() { new Delete().from(Event.class).where(Event.USER_RSVP + "!=1").execute(); } @Override protected void onCancel() { Utils.postEventOnUi(new FetchEventsEvent(Status.FAILED)); } private void saveEvents(@NonNull List<Event> eventList, int chapterId) { for (Event event : eventList) { if (chapterId > 0) { event.setChapterId(chapterId); } event.save(); } } }