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

namespace HRM.BO
{
    [Serializable]

    #region AttnBenefitAuditTrail

    public class AttnBenefitAuditTrail : BasicBaseObject
    {
        #region Constructor

        public AttnBenefitAuditTrail()
        {
            EmployeeID = 0;
            _salaryMonth = DateTime.MinValue;
            _itemID = 0;
            _attnDate = DateTime.MinValue;
            _columnName = null;
            _value = 0;
            _userID = 0;
            _approveTime = DateTime.MinValue;
            _sourceModule = null;
        }

        #endregion

        #region Properties

        public int EmployeeID { get; set; }

        #region SalaryMonth : DateTime

        private DateTime _salaryMonth;

        public DateTime SalaryMonth
        {
            get { return _salaryMonth; }
            set
            {
                //base.OnPropertyChange<DateTime>("SalaryMonth", _salaryMonth, value);
                _salaryMonth = value;
            }
        }

        #endregion

        #region ItemType : enumPayrollComponentType

        private enumPayrollComponentType _itemType;

        public enumPayrollComponentType ItemType
        {
            get { return _itemType; }
            set { _itemType = value; }
        }

        #endregion

        #region ItemID : int

        private int _itemID;

        public int ItemID
        {
            get { return _itemID; }
            set
            {
                //base.OnPropertyChange<ID>("ItemID", _itemID, value);
                _itemID = value;
            }
        }

        #endregion

        #region AttnDate : DateTime

        private DateTime _attnDate;

        public DateTime AttnDate
        {
            get { return _attnDate; }
            set
            {
                //base.OnPropertyChange<DateTime>("AttnDate", _attnDate, value);
                _attnDate = value;
            }
        }

        #endregion

        #region ColumnName : string

        private string _columnName;

        public string ColumnName
        {
            get { return _columnName; }
            set
            {
                //base.OnPropertyChange<string>("ColumnName", _columnName, value);
                _columnName = value;
            }
        }

        #endregion

        #region Value : double

        private double _value;

        public double Value
        {
            get { return _value; }
            set
            {
                //base.OnPropertyChange<double>("Value", _value, value);
                _value = value;
            }
        }

        #endregion

        #region UserID : int

        private int _userID;

        public int UserID
        {
            get { return _userID; }
            set
            {
                //base.OnPropertyChange<ID>("UserID", _userID, value);
                _userID = value;
            }
        }

        #endregion

        #region ApproveTime : DateTime

        private DateTime _approveTime;

        public DateTime ApproveTime
        {
            get { return _approveTime; }
            set
            {
                //base.OnPropertyChange<DateTime>("ApproveTime", _approveTime, value);
                _approveTime = value;
            }
        }

        #endregion

        #region SystemMode : EnumSystemMode

        private EnumSystemType _systemMode;

        public EnumSystemType SystemMode
        {
            get { return _systemMode; }
            set { _systemMode = value; }
        }

        #endregion

        #region SystemMode : EnumSystemMode

        private EnumSystemMode _systemType;

        public EnumSystemMode SystemType
        {
            get { return _systemType; }
            set { _systemType = value; }
        }

        #endregion

        #region SourceModule : string

        private string _sourceModule;

        public string SourceModule
        {
            get { return _sourceModule; }
            set
            {
                //base.OnPropertyChange<string>("SourceModule", _sourceModule, value);
                _sourceModule = value;
            }
        }

        #endregion

        #endregion

        //#region Service Factory IAttnBenifitAuditTrail : IAttnBenifitAuditTrail

        //internal static IAttnBenifitAuditTrailService Service
        //{
        //    get { return Services.Factory.CreateService<IAttnBenifitAuditTrailService>(typeof(IAttnBenifitAuditTrailService)); }
        //}

        //#endregion

        //#region Function
        //public static AttnBenefitAuditTrail SetProperty(ID employeeID, DateTime sMonth, enumPayrollComponentType itemType, int itemID, DateTime attndate, string column, double value, EnumSystemType sysMode, string module, ID userID)
        //{
        //    AttnBenefitAuditTrail auditTrail = new AttnBenefitAuditTrail();

        //    auditTrail = new AttnBenefitAuditTrail();
        //    auditTrail.EmployeeID = employeeID;
        //    auditTrail.SalaryMonth = sMonth;
        //    auditTrail.ItemType = itemType;
        //    auditTrail.ItemID = Ease.CoreV35.Model.ID.FromInteger(itemID);
        //    auditTrail.AttnDate = attndate;
        //    auditTrail.ColumnName = column;
        //    auditTrail.Value = value;
        //    auditTrail.SystemMode = sysMode;
        //    auditTrail.SourceModule = module;
        //    auditTrail.UserID = userID;
        //    auditTrail.ApproveTime = DateTime.Now;

        //    return auditTrail;
        //}

        //public static DataSet GetAttnBenefitAuditTrailData(DateTime date)
        //{
        //    DataSet oAttnBenefitAuditTrailData = null;
        //    oAttnBenefitAuditTrailData = AttnBenefitAuditTrail.Service.GetAttnBenefitAuditTrailData(date);
        //    return oAttnBenefitAuditTrailData;
        //}


        ////public void Save(ObjectsTemplate<AttnBenefitAuditTrail> auditTrails)
        ////{
        ////    auditTrails.ForEach(x => x.SetAuditTrailProperties());
        ////    AttnBenefitAuditTrail.Service.Save(auditTrails);
        ////}

        //#endregion
    }

    #endregion

    //#region IAttnBenifitAuditTrail Service

    //public interface IAttnBenifitAuditTrailService
    //{
    //    //void Save(ObjectsTemplate<AttnBenefitAuditTrail> auditTrails);
    //    DataSet GetAttnBenefitAuditTrailData(DateTime date);
    //}

    //#endregion
}