using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Ease.Core;
using Ease.CoreV35;
using Ease.Core.Utility;

namespace HRM.BO
{
    #region GLTranDetail
    [Serializable]
    public class GLTranDetail : BasicBaseObject
    {
        #region Constructor
        public GLTranDetail()
        {
            GLTranDetailID = 0;
            GLTranID = 0;
            GLID = 0;
            IsContra = false;
            ContraGLID = 0;
            ChequeDate = DateTime.MinValue;
            ChequeNo = string.Empty;
            Transide = EnumTranSide.Debit;
            Amount = 0;
            DetailParamID = 0;
           // CostCenterID = 0;
            Description = string.Empty;
            OperationalStatus = EnumOperationalStatus.None;
            
            Modifiedby = 0;
            ModifiedDate = DateTime.MinValue;
           // GlTranUserRecords = null;


            //CostCenter = null;
            BankDetail = string.Empty;
            InstrumentNo = string.Empty;
        }
        #endregion

        #region Properties
        #region GLTranDetailID
        public int GLTranDetailID { get; set; }
        #endregion

        #region GLTranID
        public int GLTranID { get; set; }
        #endregion

        #region GL
        #region ID
        public int GLID { get; set; }
        #endregion

        #region Class
        private GL _gl;
        public GL GL { get; set; }
        #endregion

        #region Code
        public string GLCode { get; set; }
        #endregion 
        #endregion

        #region Property IsContra : bool
        public bool IsContra { get; set; }

        #endregion

        #region ContraGL

        #region Property ContraGLID : ID
        public int ContraGLID { get; set; }

        #endregion 

        #region Class
        private GL _contraGl;
        public GL ContraGL { get; set; }
        #endregion

        #region Code
        public string ContraGLCode { get; set; }
        #endregion 

        #endregion

        #region Property ChequeDate : DateTime
        public DateTime ChequeDate { get; set; }

        #endregion

        #region Property ChequeNo : string
        public string ChequeNo { get; set; }

        #endregion

        #region Transide
        public EnumTranSide Transide { get; set; }
        #endregion

        #region Amount
        public decimal Amount { get; set; }
        #endregion

        #region DetailParam
        #region IDID;
        public int DetailParamID { get; set; }
        #endregion

        #region Class
        //[NonSerialized]
        //private DetailParam _detailParam;
        //public DetailParam DetailParam { get; set; }
        #endregion 
        #endregion 

        #region CostCenter
        #region ID
        //private int _nCostCenterID;
        //public int CostCenterID { get; set; }
        #endregion

        #region Class
        //[NonSerialized]
        //private CostCenter _costCenter;
        //public CostCenter CostCenter { get; set; }
        #endregion 
        #endregion

        #region Description
        public string Description { get; set; }
        #endregion

        #region BankDetail
        public string BankDetail { get; set; }
        #endregion

        #region InstrumentNo
        public string InstrumentNo { get; set; }
        #endregion

        #region OperationalStatus
        public EnumOperationalStatus OperationalStatus { get; set; }
        #endregion

        #region Modifiedby
        public int Modifiedby { get; set; }
        #endregion

        #region ModifiedDate
        public DateTime ModifiedDate { get; set; }
        #endregion

        #region GLTranUserRecords
        //public GLTranUserRecords GLTranUserRecords
        #endregion
        #endregion

        #region Functions
        //public GLTranDetail Get(ID nGLTranDetailID)
        //{
        //    GLTranDetail oGLTranDetail = null;

        //    #region Cache Header
        //    oGLTranDetail = (GLTranDetail)_cache["Get", nGLTranDetailID];
        //    if (oGLTranDetail != null)
        //        return oGLTranDetail;
        //    #endregion

        //    oGLTranDetail = GLTranDetail.Service.Get( nGLTranDetailID);

        //    #region Cache Footer
        //    _cache.Add(oGLTranDetail, "Get", nGLTranDetailID);
        //    #endregion

        //    return oGLTranDetail;
        //}
        //public ID Save()
        //{
        //    return GLTranDetail.Service.Save(this);
        //}

        //public void Delete()
        //{
        //    GLTranDetail.Service.Delete(this.ID);
        //}


        #endregion

        #region Service Factory
        //internal static IGLTranDetailService Service
        //{
        //    get { return (IGLTranDetailService)LocalServices.Factory.CreateService(typeof(IGLTranDetailService)); }
        //}
        #endregion
    }
    #endregion

    //#region  Collection of GLTranDetail
    //[Serializable]
    //public class GLTranDetails : IndexedBusinessObjects
    //{
    //    #region Cache Store
    //    private static Cache _cache = new Cache(typeof(GLTranDetails));
    //    #endregion

    //    #region  Collection Class Methods
    //    public void Add(GLTranDetail oItem)
    //    {
    //        AddItem(oItem);
    //    }

    //    public void Remove(GLTranDetail oItem)
    //    {
    //        RemoveItem(oItem);
    //    }

    //    public GLTranDetail this[int i]
    //    {
    //        get { return (GLTranDetail)GetItem(i); }
    //    }

    //    public int GetItemIndex(ID id)
    //    {
    //      return GetIndex(id);
    //    }
    //    #endregion

    //    #region Functions
    //    public static GLTranDetails Get()
    //    {
    //        GLTranDetails oGLTranDetails = null;

    //        #region Cache Header
    //        oGLTranDetails = (GLTranDetails)_cache["Get"];
    //        if (oGLTranDetails != null)
    //            return oGLTranDetails;
    //        #endregion

    //        oGLTranDetails = GLTranDetail.Service.Get();

    //        #region Cache Footer
    //        _cache.Add(oGLTranDetails, "Get");
    //        #endregion

    //        return oGLTranDetails;
    //    }
    //    public int GetItemIndexByGLID(int GlID)
    //    {
    //        int index = -1;
    //        foreach (GLTranDetail item in this)
    //        {
    //            index = index +1;
    //            if (item.GLID.Integer == GlID)
    //                return index;
    //        }
    //        return index;
    //    }
    //    public static GLTranDetails GetByGLTranID(ID gLTranID)
    //    {
    //        return GLTranDetail.Service.GetByGLTranID(gLTranID);
    //    }
    //    public static GLTranDetails Get(ID gLTranID, ID glID)
    //    {
    //        return GLTranDetail.Service.Get(gLTranID, glID);
    //    }
    //    #endregion
    //}
    //#endregion

    #region IGLTranDetail Service
    public interface IGLTranDetailService
    {
        GLTranDetail Get(int id);
        List<GLTranDetail> Get();
        List<GLTranDetail> Get(int gLTranID, int glID);
        List<GLTranDetail> GetByGLTranID(int gLTranID);
        int Save(GLTranDetail oGLTranDetail);
        void Delete(int id);
    }
    #endregion
}