using System;
using System.Linq;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;

namespace INT_LKD_2.DataStore
{
    public class LeakData
    {
        #region Field
        private Collection<Define.E_ProcessStatus> m_CollProcessStatus;
        private Collection<LeakResult> m_CollJudgment;
        private Collection<DispData> m_CollDispData;
        private Collection<DiffData> m_CollDiffData;
        private Collection<PressureData> m_CollPresData;
        #endregion

        #region Constructor
        public LeakData(int column)
        {
            this.Initialize(column);
        }
        #endregion

        #region Property
        /// <summary>
        /// 진행 상태
        /// </summary>
        public Collection<Define.E_ProcessStatus> CollProcessStatus
        {
            get { return this.m_CollProcessStatus; }
            set { this.m_CollProcessStatus = value; }
        }
        /// <summary>
        /// 판정 결과
        /// </summary>
        public Collection<LeakResult> CollJudgment
        {
            get { return this.m_CollJudgment; }
            set { this.m_CollJudgment = value; }
        }
        /// <summary>
        /// 변위센서 데이터 
        /// </summary>
        public Collection<DispData> CollDispData
        {
            get { return this.m_CollDispData; }
            set { this.m_CollDispData = value; }
        }
        /// <summary>
        /// 차압센서 데이터
        /// </summary>
        public Collection<DiffData> CollDiffData
        {
            get { return this.m_CollDiffData; }
            set { this.m_CollDiffData = value; }
        }
        /// <summary>
        /// 압력센서 데이터
        /// </summary>
        public Collection<PressureData> CollPresData
        {
            get { return this.m_CollPresData; }
            set { this.m_CollPresData = value; }
        }
        #endregion

        #region Method
        private void Initialize(int column)
        {
            this.CollProcessStatus = new Collection<Define.E_ProcessStatus>();
            this.CollJudgment = new Collection<LeakResult>();
            this.CollDispData = new Collection<DispData>();
            this.CollDiffData = new Collection<DiffData>();
            this.CollPresData = new Collection<PressureData>();

            for (int i = 0; i < column; i++)
            {
                this.CollProcessStatus.Add(Define.E_ProcessStatus._0_None);
                this.CollJudgment.Add(new LeakResult());
                this.CollDispData.Add(new DispData());
                this.CollDiffData.Add(new DiffData());
                this.CollPresData.Add(new PressureData());
            }
        }
        #endregion
    }

    public class LeakData1
    {
        #region Field
        private Define.E_ProcessStatus m_ProcessStatus;
        private LeakResult m_Judgment;
        private DispData m_DispData;
        private DiffData m_DiffData;
        private PressureData m_PresData;
        #endregion

        #region Constructor
           public LeakData1()
        {
            this.Initialize();
        }
        #endregion

        #region Property
        /// <summary>
        /// 진행 상태
        /// </summary>
        public Define.E_ProcessStatus ProcessStatus
        {
            get { return this.m_ProcessStatus; }
            set { this.m_ProcessStatus = value; }
        }
        /// <summary>
        /// 판정 결과
        /// </summary>
        public LeakResult Judgment
        {
            get { return this.m_Judgment; }
            set { this.m_Judgment = value; }
        }
        /// <summary>
        /// 변위센서 데이터 
        /// </summary>
        public DispData DispData
        {
            get { return this.m_DispData; }
            set { this.m_DispData = value; }
        }
        /// <summary>
        /// 차압센서 데이터
        /// </summary>
        public DiffData DiffData
        {
            get { return this.m_DiffData; }
            set { this.m_DiffData = value; }
        }
        /// <summary>
        /// 압력센서 데이터
        /// </summary>
        public PressureData PresData
        {
            get { return this.m_PresData; }
            set { this.m_PresData = value; }
        }
        #endregion

        #region Method
        private void Initialize()
        {
            this.ProcessStatus = Define.E_ProcessStatus._0_None;
            this.Judgment = new LeakResult();
            this.DispData = new DispData();
            this.DiffData = new DiffData();
            this.PresData = new PressureData();
        }
        public void Clear()
        {
            this.Judgment = new LeakResult();
            this.DispData = new DispData();
            this.DiffData = new DiffData();
            this.PresData = new PressureData();
        }
        #endregion
    }

    public class LeakResult
    {
        #region Field
        private Define.E_JudgmentStatus m_Result;

        private Define.E_JudgmentStatus m_DIFF_Result;
        private string m_DIFF_SecBufMax;
        private string m_DIFF_SecBufSum;

        private Define.E_JudgmentStatus m_DISP_Result;
        private string m_DISP_Min;
        private string m_DISP_MDataMax;
        private string m_DISP_MDataDiff;
        #endregion

        #region Constructor
        public LeakResult()
        {
            this.Initialize();
        } 
        #endregion

        #region Property
        /// <summary>
        /// 리크 판정 결과
        /// </summary>
        public Define.E_JudgmentStatus Result
        {
            get { return this.m_Result; }
            set { this.m_Result = value; }
        }
        /// <summary>
        /// 차압센서 판정 결과
        /// </summary>
        public Define.E_JudgmentStatus DIFF_Result
        {
            get { return this.m_DIFF_Result; }
            set { this.m_DIFF_Result = value; }
        }
        public string DIFF_SecBufMax
        {
            get { return this.m_DIFF_SecBufMax; }
            set { this.m_DIFF_SecBufMax = value; }
        }
        public string DIFF_SecBufSum
        {
            get { return this.m_DIFF_SecBufSum; }
            set { this.m_DIFF_SecBufSum = value; }
        }
        /// <summary>
        /// 변위센서 판정 결과
        /// </summary>
        public Define.E_JudgmentStatus DISP_Result
        {
            get { return this.m_DISP_Result; }
            set { this.m_DISP_Result = value; }
        }
        public string DISP_Min
        {
            get { return this.m_DISP_Min; }
            set { this.m_DISP_Min = value; }
        }
        public string DISP_MDataMax
        {
            get { return this.m_DISP_MDataMax; }
            set { this.m_DISP_MDataMax = value; }
        }
        public string DISP_MDataDiff
        {
            get { return this.m_DISP_MDataDiff; }
            set { this.m_DISP_MDataDiff = value; }
        }
        #endregion

        #region Method
        public void Initialize()
        {
            this.Result = Define.E_JudgmentStatus.None;

            this.DIFF_Result = Define.E_JudgmentStatus.None;
            this.DIFF_SecBufMax = "0.00";
            this.DIFF_SecBufSum = "0.00";

            this.DISP_Result = Define.E_JudgmentStatus.None;
            this.DISP_Min = "0.00";
            this.DISP_MDataMax = "0.00";
            this.DISP_MDataDiff = "0.00";
        }
        #endregion
    }
}
