using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace ITC81DB_2H
{
    #region HistoryData
    public class HistoryData
    {
        #region Field
        private string m_Type;
        private DateTime m_Time;
        private string m_LoginID;
        private Object m_Event;
        private string m_Detail;
        private string m_BeforeData;
        private string m_AfterData;
        #endregion

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

        #region Property
        public string Type
        {
            get { return this.m_Type; }
            set { this.m_Type = value; }
        }
        public DateTime Time
        {
            get { return this.m_Time; }
            set { this.m_Time = value; }
        }
        public string LoginID
        {
            get { return this.m_LoginID; }
            set { this.m_LoginID = value; }
        }
        public Object Event
        {
            get { return this.m_Event; }
            set { this.m_Event = value; }
        }
        public string Detail
        {
            get { return this.m_Detail; }
            set { this.m_Detail = value; }
        }
        public string BeforeData
        {
            get { return this.m_BeforeData; }
            set { this.m_BeforeData = value; }
        }
        public string AfterData
        {
            get { return this.m_AfterData; }
            set { this.m_AfterData = value; }
        }
        #endregion

        #region Method
        private void Initialize()
        {
            this.Type = "";
            this.Time = new DateTime();
            this.LoginID = "-";
            this.Event = new object();
            this.Detail = "";
            this.AfterData = "";
            this.BeforeData = "";
        }
        #endregion
    }
    #endregion
    
    #region FileHeaderItem
    public class FileHeaderItem
    {
        #region Field
        private int m_EquipmentColumns;
        private int m_Type;
        /*
        * 기본형	1	// 1열 : Column - 1, 2열 : Column - 2
        * 고속형	2	　
        * 다단	3	// 몇 단이던 Column은 1
        * 컨베어형	101	　
        * 사셋형	102	　
        * 임펠러	103	　
        * 튜브	104	　
        * 얼라인	105	　
        * 스타분리형(실중량)	106 // 1열 : Column - 1, 2열 : Column - 2
        * 스타앰플형(다열)	107	　
        */

        private string m_LoginId;
        private string m_SerialNumber;

        private DateTime m_TimeStamp;
        #endregion

        #region Constructor
        public FileHeaderItem()
        {
        }
        #endregion

        #region Property
        public int EquipmentColumns
        {
            get { return this.m_EquipmentColumns; }
            set { this.m_EquipmentColumns = value; }
        }
        public int Type
        {
            get { return this.m_Type; }
            set { this.m_Type = value; }
        }

        public string LoginId
        {
            get { return this.m_LoginId; }
            set { this.m_LoginId = value; }
        }
        public string SerialNumber
        {
            get { return this.m_SerialNumber; }
            set { this.m_SerialNumber = value; }
        }

        public DateTime TimeStamp
        {
            get { return this.m_TimeStamp; }
            set { this.m_TimeStamp = value; }
        }
        #endregion

        #region Method
        #endregion
    }
    #endregion
    #region Struct FileHeaderItem
    [StructLayout(LayoutKind.Sequential)]
    public struct StructFileHeaderItem
    {
        public int EquipmentColumns;
        public int Type;

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string LoginId;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string SerialNumber;

        public DateTime TimeStamp;

        public int DummyInt1;
        public int DummyInt2;
        public int DummyInt3;

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string DummyString1;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string DummyString2;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string DummyString3;
    }
    #endregion
}
