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

namespace HRM.BO
{
    #region ClaimBasic

    public class ClaimBasic : BasicBaseObject
    {
        public delegate void ItemChanged();

        #region Constructor

        public ClaimBasic()
        {
            ItemCode = string.Empty;
            ItemName = string.Empty;
            GLCode = string.Empty;
            GLSide = string.Empty;
            GLSideCode = string.Empty;
            IsPreApprovalNeeded = false;
            //_payrollTypeID = Payroll.BO.SystemInformation.CurrentSysInfo.PayrollTypeID;         
            Status = EnumStatus.Active;
            GLForCredit = string.Empty;
            GLForDebit = string.Empty;
            this.Status = EnumStatus.Active;
            ClaimBasicItems = new  List<ClaimBasicItem>();
        }

        #endregion

        #region Properties

        public string ItemName { get; set; }
        public string ItemCode { get; set; }
        public string GLCode { get; set; }
        public string GLForCredit { get; set; }
        public string GLForDebit { get; set; }
        public string GLSide { get; set; }
        public string GLSideCode { get; set; }
        public bool IsPreApprovalNeeded { get; set; }
        public bool PaidThroughSalary { get; set; }
        public int AllowDeductID { get; set; }
        public List<ClaimBasicItem> ClaimBasicItems { get; set; }
        public int PayrollTypeID { get; set; }
        public int SubItemCount { get; set; }

        public bool IsField1 { get; set; }
        public string Field1 { get; set; }
        public EnumFieldTypeStatus? Field1Type { get; set; }
        public bool IsField2 { get; set; }
        public string Field2 { get; set; }
        public EnumFieldTypeStatus? Field2Type { get; set; }
        public bool IsField3 { get; set; }
        public string Field3 { get; set; }
        public EnumFieldTypeStatus? Field3Type { get; set; }
        public bool IsField4 { get; set; }
        public string Field4 { get; set; }
        public EnumFieldTypeStatus? Field4Type { get; set; }
        public bool IsField5 { get; set; }
        public string Field5 { get; set; }
        public EnumFieldTypeStatus? Field5Type { get; set; }
        public bool IsField6 { get; set; }
        public string Field6 { get; set; }
        public EnumFieldTypeStatus? Field6Type { get; set; }

        public bool? IsField1Mandatory { get; set; }
        public bool? IsField2Mandatory { get; set; }
        public bool? IsField3Mandatory { get; set; }
        public bool? IsField4Mandatory { get; set; }
        public bool? IsField5Mandatory { get; set; }
        public bool? IsField6Mandatory { get; set; }
       
        #endregion
    }

    #endregion

    #region IClaimBasic Service

    public interface IClaimBasicService
    {
        List<ClaimBasic> GetByType(EnumClaimType claimType, int payrollTypeID);
        void DeleteByType(EnumClaimType claimType);
        ClaimBasic Get(int id);
        List<ClaimBasic> Get(EnumStatus status, int payrollTypeID);
        List<ClaimBasic> GetNew(EnumStatus status, int payrollTypeID);
        int Save(ClaimBasic item);
        void Delete(int id);
        void Save(List<ClaimBasic> _claimBasics);
        DataSet GetByClaimBasicIDs(string _claimBasicIDs, int payrollTypeId);

        DataSet GetByClaimRegisterIDs(string _claimBasicIDs);
        DataSet GetByClaimRegisterIDsForBankAdvice(string _claimBasicIDs, DateTime salaryMonth);

        DataSet GetWithDesignation(int nDesignationID, int payrollTypeID);
        DataSet GetWithDesignation(int payrollTypeID);
        DataSet IndividualClaimInformationWithDateRange(int empId, DateTime fromDate, DateTime toDate);

        DataSet IndividualClaimInformationWithRequisitionID(int nRequisitionID);
        List<ClaimBasic> GetClaimBasicItemCount();

        DataSet GetByClaimBasicIDs();
    }

    #endregion
}