package ua.kpi.ecampus.ui.presenter; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; import ua.kpi.ecampus.model.Subsystem; import ua.kpi.ecampus.model.pojo.User; import ua.kpi.ecampus.ui.Navigator; import ua.kpi.ecampus.ui.Preference; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.inject.Inject; import ua.kpi.ecampus.model.Subsystem; import ua.kpi.ecampus.model.pojo.User; import ua.kpi.ecampus.ui.Navigator; import ua.kpi.ecampus.ui.Preference; import ua.kpi.ecampus.util.BulletinPredicates; /** * MainPresenter created to manage MainActivity. * <p> * Created by Administrator on 01.02.2016. */ public class MainPresenter extends BasePresenter { private IView mView; private Context mContext; private Navigator mNavigator; private Preference mPreference; private boolean mIsUserLogged = false; @Inject public MainPresenter(Context context, Navigator navigator, Preference preference) { mContext = context; mNavigator = navigator; mPreference = preference; } public void setView(IView view) { mView = view; } @Override public void initializeViewComponent() { mView.setViewComponent(); } public void startActivityBasedOn(int position) { switch (position) { case 0: mNavigator.startBulletinBoardActivity(); break; case 1: break; case 2: break; case 3: if(userIsStudent()) mNavigator.startVotingStudentActivity(); break; } } /** * True if user's position is student * False means user is teacher * @return */ private boolean userIsStudent() { final Integer studentId = 5; List<Integer> ids = BulletinPredicates.getIdsCollection (User.getInstance().position); return ids.contains(studentId); } /** * User logout */ public void logout() { mPreference.saveLogoutInfo(); User.getInstance().token = ""; mNavigator.startLoginActivity(); } /** * Get list of ua.kpi.ecampus subsystems. * * @return subsystems */ public List<Subsystem> getData() { List<Subsystem> subsystems = new ArrayList<>(); Resources res = getResources(); String[] names = getSubsystemNames(res); TypedArray icons = getSubsystemIcon(res); for (int i = 0; i < names.length; i++) { Subsystem s = new Subsystem(names[i], icons.getResourceId(i, -1)); subsystems.add(s); } return subsystems; } /** * Check if user logged or not. * If user if logged and auth token is not expired, start MainActivity. * If not, redirect user to LoginActivity. */ public void checkUserIsLogged() { Date expDate = mPreference.getTokenExpirationDate(); Date currentDate = new Date(); mIsUserLogged = mPreference.getIsLogged(); if (mIsUserLogged && !currentDate.after(expDate)) getUserSessionValues(); else mNavigator.startLoginActivity(); } private String[] getSubsystemNames(Resources res) { return res.getStringArray(ua.kpi.ecampus.R.array.full_subsystem); } private TypedArray getSubsystemIcon(Resources res) { return res.obtainTypedArray(ua.kpi.ecampus.R.array.full_subsystem_image); } private Resources getResources() { return mContext.getResources(); } private void getUserSessionValues() { User user = User.getInstance(); user.id = mPreference.getUserId(); user.name = mPreference.getUserName(); user.position = mPreference.getUserPositions(); user.subdivision = mPreference.getUserSubdivisions(); user.isBulletinBoardModerator = mPreference.getIsUserBbModerator(); user.token = mPreference.getToken(); } public interface IView { void setViewComponent(); } }