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

namespace HRM.BO
{
    #region Category

    public class Category : BasicBaseObject
    {
        #region Constructor

        public Category()
        {
            Code = string.Empty;
            Name = string.Empty;
            Status = EnumStatus.Active;
            NameInBangla = string.Empty;
            this.WagesType = EnumWagesType.Monthly;
            //####   PayrollTypeID = SystemInformation.CurrentSysInfo.PayrollTypeID;
        }

        #endregion

        #region Properties

        public string Code { get; set; }
        public string Name { get; set; }
        public EnumWagesType? WagesType { get; set; }
        public int PayrollTypeID { get; set; }
        public string NameInBangla { get; set; }

        //#region Service Factory ICategoryService : ICategoryService

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

        //#endregion

        #endregion
    }

    #endregion

    #region ICategory Service

    public interface ICategoryService
    {
        Category Get(int id);
        List<Category> GetByPayrollTypeID(int payrollTypeID);
        List<Category> Get(EnumStatus status, int payrollTypeID);
        List<Category> Get(EnumWagesType wageType, EnumStatus status, int payrollTypeID);
        int Save(Category item);
        void Delete(int id);
        string GetNextCode();

        DataSet GetAgeRange(int fromyear, int toyear);
        int GetMaxID();
        List<Category> GetAllCategory(int payrollTypeID, EnumStatus status, string code, string name);
    }

    #endregion
}