using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Project.Class
{
	[Serializable]
	public class JobData
	{
		public enum ErrorCode
		{
			None = 0,
			BarcodeRead,
			Print,
			Camera,
		}
		public ErrorCode error = ErrorCode.None;
		public int No { get; set; }
		public VisionData VisionData;

		public DateTime JobStart
		{
			get
			{
				if (this.VisionData == null) return new DateTime(1982, 11, 23);
				else return VisionData.STime;
			}
		}
		public DateTime JobEnd;
		public TimeSpan JobRun
		{
			get
			{
				if (JobEnd.Year == 1982) return new TimeSpan(0);
				else if (JobStart.Year == 1982) return new TimeSpan(0);
				else return JobEnd - JobStart;
			}
		}

		//작업데이터의 GUID(자료식별)
		public string guid { get; private set; }

		//언로더포트위치(L/R)
		public string PortPos;


		//동작관련 메세지
		public string Message;

		int idx;
		public JobData(int idx_)
		{
			this.idx = idx_;
			Clear("INIT");
		}
		public void Clear(string source)
		{
			Pub.AddDebugLog($"item data {idx} clear by {source}");

			No = 0;
			//JobStart = new DateTime(1982, 11, 23);
			JobEnd = new DateTime(1982, 11, 23);
			PortPos = string.Empty;
			guid = Guid.NewGuid().ToString();
			Message = string.Empty;
			if (VisionData == null)
				VisionData = new VisionData(source);
			else
				VisionData.Clear(source, false);
		}

		public void CopyTo(ref JobData obj)
		{
			if (obj == null) return;
			//obj.JobStart = this.JobStart;
			obj.JobEnd = this.JobEnd;
			obj.guid = this.guid;
			obj.PortPos = this.PortPos;
			obj.Message = this.Message;

			Pub.AddDebugLog("아이템 복사 전 rid:" + this.VisionData.RID);
			this.VisionData.CopyTo(ref obj.VisionData);
			Pub.AddDebugLog("아이템 복사 후 대상 rid : " + obj.VisionData.RID);
		}

	}
}
