package com.nilhcem.bblfr.jobs.baggers;
import android.content.Context;
import android.support.annotation.NonNull;
import com.nilhcem.bblfr.model.baggers.Bagger;
import com.nilhcem.bblfr.model.baggers.City;
import com.nilhcem.bblfr.model.baggers.Tag;
import com.nilhcem.bblfr.model.baggers.dao.BaggersDao;
import com.nilhcem.bblfr.model.baggers.dao.CitiesDao;
import com.nilhcem.bblfr.ui.baggers.list.BaggersListEntry;
import com.nilhcem.bblfr.ui.baggers.list.filter.TagsListEntry;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import rx.Observable;
public class BaggersService {
private final CitiesDao mCitiesDao;
private final BaggersDao mBaggersDao;
@Inject
public BaggersService(CitiesDao citiesDao, BaggersDao baggersDao) {
mCitiesDao = citiesDao;
mBaggersDao = baggersDao;
}
public Observable<List<BaggersListEntry>> getBaggers(@NonNull Context context, @NonNull Long cityId, @NonNull List<String> selectedTags) {
return Observable.fromCallable(() -> {
List<BaggersListEntry> entries = new ArrayList<>();
List<Bagger> baggers = mBaggersDao.getBaggers(cityId, selectedTags);
for (Bagger bagger : baggers) {
entries.add(new BaggersListEntry(context, bagger));
}
return entries;
});
}
public Observable<List<TagsListEntry>> getSessionsTags(@NonNull Long cityId) {
return Observable.fromCallable(() -> {
List<TagsListEntry> entries = new ArrayList<>();
List<Tag> tags = mBaggersDao.getSessionsTags(cityId);
for (Tag tag : tags) {
entries.add(new TagsListEntry(tag));
}
return entries;
});
}
public Observable<List<City>> getBaggersCities() {
return Observable.fromCallable(mCitiesDao::getCities);
}
}