using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using AR;
namespace Project
{
	public partial class FMain
	{
		DateTime IdleStartTime = DateTime.Now;
		bool IdleSleep = false;

		public void _STEP_IDLE_START(eSMStep step)
        {
			PUB.flag.set(eVarBool.FG_USERSTEP, false, "SM_IDLE");

			//lbMsgR.ProgressEnable = false;
			IdleStartTime = DateTime.Now;

			//초기화완료되면 버튼을 활성화한다
			if (PUB.sm.getOldStep == eSMStep.INIT)
			{
				this.BeginInvoke(new Action(() =>
				{
					panTopMenu.Enabled = true;
					btStart.Enabled = true;
					btStop.Enabled = true;
					btReset.Enabled = true;
				}));

				//Pub.sm.setNewStep(eSMStep.XMOVE); //홈을 위해서 바로 이동 모션으로 가게한다
				if (PUB.mot.HasHomeSetOff == true && DIO.GetIOInput(eDIName.PICKER_SAFE) == false)
				{
                    // 웹 UI에도 자동 관리창 열기 이벤트 전송
                    SendWebEvent("AUTO_OPEN_MANAGE", new { reason = "Picker needs to be moved to safe position" });

                    //피커의 이동이 필요한 상황
                    this.BeginInvoke(new Action(() => { btManage.PerformClick(); }));
			
				}
				else
				{
					//리셋이 필요한 상황
					if (AR.SETTING.Data.OnlineMode == true)
						this.BeginInvoke(new Action(() => { btMReset.PerformClick(); }));
				}
			}
		}

        public StepResult _STEP_IDLE(eSMStep step, TimeSpan stepTime, TimeSpan seqTime)
        {
			//대기상태에서 조명 자동으로 끄기 
			if (IdleSleep == false && IdleStartTime.Year != 1982)
			{
				var ts = DateTime.Now - IdleStartTime;
				if (ts.TotalMinutes > AR.SETTING.Data.AutoOffRoomLightMin)
				{
					PUB.log.Add("Turning off lights due to idle state transition");
					IdleSleep = true;
					DIO.SetRoomLight(false);
				}
			}

			//자동소거기능
			if (AR.SETTING.Data.AutoDeleteDay > 0)
			{
				if (PUB.flag.get(eVarBool.FG_MINSPACE) == true)
				{
					var ts = DateTime.Now - lastDeleteTime;
					if (ts.TotalSeconds > 1)
					{
						//파일을 찾아서 소거한다.
						var delpath = System.IO.Path.Combine(AR.SETTING.Data.GetDataPath(), "Images");
						if (delpath != "") DeleteFile(delpath);

						lastDeleteTime = DateTime.Now;
					}
				}
			}

			return StepResult.Wait;

        }
    }
}
