package kz.istt.locust;

import android.annotation.SuppressLint;
//import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.PendingIntent.CanceledException;
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.util.Log;

import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * Служба пытается отправить новые данные каждые 5 мнут на сервере, если нет данных то не отправляет.
 * Раз в день должна пытаться обновить пользователя и принять задания.
 * @author ivanov.i
 *
 */
public class MainService extends Service
{
	public final static String PARAM_ACTION = "ACTION";

	//NotificationManager m_nm; //http://startandroid.ru/ru/uroki/vse-uroki-spiskom/164-urok-99-service-uvedomlenija-notifications
	//private Timer timer = new Timer();
	//private Timer timerP = new Timer(); //Прогрес бар уведомлений
	
	MySynchronizationOld _syn = null;

	public PendingIntent m_pi = null; //Слушатель прогрес бара

	private final Handler handler = new Handler();
	private final Runnable runnable = new Runnable() {
		@Override
		public void run() {
			timerTic(false);
			handler.postDelayed(this, 1000 * 60 * 5); // Повторять каждые 5 минут
		}
	};

	private final Handler handlerP = new Handler();
	private final Runnable runnableProgress = new Runnable() {
		@Override
		public void run() {
			if (MainService.this.m_pi != null) {
				int cnt = _syn.getCount();

				Intent intent = new Intent().putExtra(SetupActivity.PARAM_RESULT, cnt);
				try {
					m_pi.send(MainService.this, SetupActivity.STATUS_FINISH, intent);
				} catch (PendingIntent.CanceledException e) {
					Log.e("CCALM", "Error: ", e);
				}
			}

			// Повторяем запуск через 500 миллисекунд
			handlerP.postDelayed(this, 500);
		}
	};

	@Override
	public void onCreate()
	{
		super.onCreate();
		
		Log.e("CCALM", "Servuce id start.");
		
		//m_nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		
		_syn = new MySynchronizationOld(this);

		handler.post(runnable); // Начинаем выполнение задачи

		handlerP.post(runnableProgress); // Начинаем выполнение задачи
	}

	@Override
	public IBinder onBind(Intent arg0)
	{
		return null;
	}

	//Для приёма данных из приложения в сервис
	public int onStartCommand(Intent intent, int flags, int startId)
	{
		if(intent!=null)
		{
			String act=intent.getStringExtra(MainService.PARAM_ACTION);
			if(act!=null)
			{
                switch (act) {
                    case "1" -> timerTic(true);
                    case "2" -> m_pi = intent.getParcelableExtra(SetupActivity.PARAM_PINTENT); //Assigned the listener to the progress bar.
                    case "3" -> m_pi = null; //Clear the progress bar listener.
                }
			}
		}
		return super.onStartCommand(intent, flags, startId);
	}

	private void timerTic(boolean bAll)
	{
		Log.e("CCALM", "Start synhronization");
		_syn.Synch();
	}
}
