package com.richardradics.cleanaa.mvp.presenter;
import com.richardradics.cleanaa.domain.City;
import com.richardradics.cleanaa.interactor.GetCitiesImp;
import com.richardradics.cleanaa.repository.api.model.openweatherwrapper.WeatherItem;
import com.richardradics.cleanaa.app.AppConfig;
import com.richardradics.cleanaa.interactor.GetCities;
import com.richardradics.cleanaa.mvp.view.MainView;
import com.richardradics.cleanaa.mvp.view.model.MainListViewModel;
import com.richardradics.core.mvp.Presenter;
import com.richardradics.core.mvp.View;
import org.androidannotations.annotations.Bean;
import org.androidannotations.annotations.EBean;
import org.androidannotations.annotations.UiThread;
import java.util.ArrayList;
import java.util.List;
/**
* Created by radicsrichard on 15. 05. 13..
*/
@EBean(scope = EBean.Scope.Singleton)
public class MainPresenter extends BasePresenter implements Presenter {
private MainView mainView;
@Bean(GetCitiesImp.class)
GetCities getCities;
@Override
public void setView(View view) {
this.mainView = (MainView) view;
}
@Override
public void start() {
mainView.showLoading("Loading");
getCities.getCities(AppConfig.TEST_DATA.BP_LATITUDE, AppConfig.TEST_DATA.BP_LONGITUDE, AppConfig.TEST_DATA.DEFAULT_COUNT, new GetCities.Callback() {
@Override
public void onCitiesoaded(List<City> citiesList) {
mainView.setListViewModels(convertToMainModel(citiesList));
mainView.hideLoading(true);
}
@Override
public void onError(Exception e) {
mainView.showActionLabel("Error during fetching data!");
mainView.hideLoading(false);
}
});
}
@Override
public void stop() {
//TODO if something needed to
}
@Override
@UiThread
public void onError(Exception exception) {
mainView.showActionLabel(exception.getMessage());
}
public List<MainListViewModel> convertToMainModel(List<City> cityList) {
List<MainListViewModel> modelList = new ArrayList<>();
try {
int pictureId = 0;
for (City item : cityList) {
MainListViewModel mainListViewModel = new MainListViewModel();
mainListViewModel.setId(item.getId());
mainListViewModel.setImageUrl("http://lorempixel.com/400/200/city/" + String.valueOf(pictureId + 1));
mainListViewModel.setTitle(item.getName());
modelList.add(mainListViewModel);
pictureId++;
if (9 < pictureId) { //lorempixels gives only 10 image :)
pictureId = 0;
}
}
} catch (Exception e) {
cleanErrorHandler.logExpception(e);
}
return modelList;
}
}