package co.touchlab.droidconandroid.presenter;
import android.content.Context;
import org.apache.commons.lang3.StringUtils;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
import co.touchlab.droidconandroid.data.AppPrefs;
import co.touchlab.droidconandroid.tasks.Queues;
import co.touchlab.droidconandroid.tasks.SeedScheduleDataTask;
import co.touchlab.droidconandroid.utils.TimeUtils;
/**
* Created by kgalligan on 4/19/16.
*/
public class AppManager
{
public static final String FIRST_SEED = "FIRST_SEED";
private static Context context;
private static PlatformClient platformClient;
public interface LoadDataSeed
{
String dataSeed();
}
public static void initContext(Context context, PlatformClient platformClient, LoadDataSeed loadDataSeed)
{
AppManager.context = context;
AppManager.platformClient = platformClient;
if(AppPrefs.getInstance(context).once(FIRST_SEED))
{
// getAssets().open("dataseed.json")
final String seed = loadDataSeed.dataSeed();
Queues.localQueue(context).execute(new SeedScheduleDataTask(seed));
}
// if(AppPrefs.getInstance(context).isLoggedIn())
// RefreshScheduleData.callMe(context);
}
public static Context getContext()
{
return context;
}
public static PlatformClient getPlatformClient()
{
return platformClient;
}
public enum AppScreens
{
Welcome, Login, Schedule, Voting
}
public static AppScreens findStartScreen(String votingEndsString)
{
final AppPrefs appPrefs = AppPrefs.getInstance(context);
if (! appPrefs.getHasSeenWelcome())
{
return AppScreens.Welcome;
}
else if (!appPrefs.isLoggedIn())
{
return AppScreens.Login;
}
else if ( isVotingOpen(votingEndsString) )
{
return AppScreens.Voting;
}
else
{
return AppScreens.Schedule;
}
}
public static boolean isVotingOpen(String votingEndsString)
{
if(StringUtils.isEmpty(votingEndsString))
return false;
try
{
Date votingEnd = TimeUtils.DATE_FORMAT.get().parse(votingEndsString);
Calendar now = Calendar.getInstance();
return now.before(votingEnd);
}
catch(ParseException e)
{
throw new RuntimeException(e);
}
}
public static AppPrefs getAppPrefs()
{
return AppPrefs.getInstance(context);
}
}