Skip to content
Snippets Groups Projects
GoalStimulus.java 2.72 KiB
Newer Older
package com.notificationFramework.stimulus;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;

import com.notificationFramework.sedentary.frontEnd.R;

import java.util.Calendar;

/**
 * Created by Peter De Jonckheere on 09/03/2018.
 */

public class GoalStimulus extends BroadcastReceiver implements Stimulus {

    @Override
    public void onReceive(Context context, Intent intent) {
        SharedPreferences shared = context.getSharedPreferences(context.getString(R.string.preference_file_key), Context.MODE_PRIVATE);
        if ((shared.getBoolean(context.getString(R.string.notf_switch), true)) && (checkTime(shared, context))) {
            Intent i = new Intent(context.getApplicationContext(), com.notificationFramework.notification.GoalNotification.class);
            context.getApplicationContext().startService(i);
        }

    }

    private boolean checkTime(SharedPreferences shared, Context context){
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, shared.getInt(context.getString(R.string.dnd_shour), 23));
        cal.set(Calendar.MINUTE, shared.getInt(context.getString(R.string.dnd_smin), 0));
        Calendar cal2 = Calendar.getInstance();
        int days = checkMonth(cal2.get(Calendar.MONTH));
        if(shared.getInt(context.getString(R.string.dnd_shour), 23) > shared.getInt(context.getString(R.string.dnd_ehour), 9)) {
            cal2.set(Calendar.DATE, ((cal2.get(Calendar.DATE) + 1) % days));
        }
        cal2.set(Calendar.HOUR_OF_DAY, shared.getInt(context.getString(R.string.dnd_ehour), 9));
        cal2.set(Calendar.MINUTE, shared.getInt(context.getString(R.string.dnd_emin), 0));
        Calendar curCal = Calendar.getInstance();
        if(curCal.getTime().after(cal.getTime()) && curCal.getTime().before(cal2.getTime())){
            return false;
        } else {
            return true;
        }
    }

    private int checkMonth(int month){
        switch (month){
            case Calendar.JANUARY:
            case Calendar.MARCH:
            case Calendar.MAY:
            case Calendar.JULY:
            case Calendar.AUGUST:
            case Calendar.OCTOBER:
            case Calendar.DECEMBER:
                return 31;
            case Calendar.APRIL:
            case Calendar.JUNE:
            case Calendar.SEPTEMBER:
            case Calendar.NOVEMBER:
                return 30;
            case Calendar.FEBRUARY:
                Calendar cal = Calendar.getInstance();
                if (cal.getActualMaximum(Calendar.DAY_OF_YEAR) > 365){
                    return 29;
                } else {
                    return 28;
                }
        }
        return -1;
    }
}