using Ease.Core.Model;


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


namespace HRM.BO
{
    public class PMPRating : BasicBaseObject
    {

        #region Constructor

        public PMPRating()
        {
            this._Description = string.Empty;
            this._name = string.Empty;
        }

        #endregion

        #region Properties

        #region Name : string
        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        #endregion

        #region Description : string
        private string _Description;
        public string Description
        {
            get { return _Description; }
            set { _Description = value; }
        }
        #endregion

        #region RatingValue : double

        private double _ratingvalue;

        public double RatingValue
        {
            get { return _ratingvalue; }
            set { _ratingvalue = value; }
        }

        #endregion

        #region PMPYearId : int

        private int _pMPYearId;

        public int PMPYearId
        {
            get { return _pMPYearId; }
            set { _pMPYearId = value; }
        }

        #endregion

        #region PMPYear : DateTime

        private DateTime _pMPYear;

        public DateTime PMPYear
        {
            get { return _pMPYear; }
            set { _pMPYear = value; }
        }

        #endregion

        #region PMPRatingType : EnumPMPRatingType

        private EnumPMPRatingType _pMPRatingType;

        public EnumPMPRatingType PMPRatingType
        {
            get { return _pMPRatingType; }
            set { _pMPRatingType = value; }
        }

        #endregion

        #region BellCurveType : BellCurveType

        public EnumBellCurveType? BellCurveType { get; set; }

        #endregion

        #region HeadCount : double

        public double? HeadCount { get; set; }

        #endregion

        #region IncrementPercent : double

        private double _incrementPercent;

        public double IncrementPercent
        {
            get { return _incrementPercent; }
            set { _incrementPercent = value; }
        }

        #endregion

        #region FromPercent : double

        private double _fromPercent;

        public double FromPercent
        {
            get { return _fromPercent; }
            set { _fromPercent = value; }
        }

        #endregion

        #region ToPercent : double

        private double _toPercent;

        public double ToPercent
        {
            get { return _toPercent; }
            set { _toPercent = value; }
        }

        #endregion
        #region DummyId
        public int? ObjectId
        {
            get
            {

                if (this.ID != 0) return ID;
                return null;
            
            }

        }
        #endregion
        #endregion

        //#region Service Factory IPMPRatingService : IPMPRatingService

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

        //#endregion

        //#region Functions

        //#region Get By Status

        //public static List<PMPRating> Get(EnumStatus status)
        //{
        //    return PMPRating.Service.Get(EnumStatus.Regardless);
        //}



        //#endregion

        //#region Save
        //public int Save()
        //{
        //    this.SetAuditTrailProperties();
        //    return PMPRating.Service.Save(this);
        //}
        //#endregion


        //#region Get By Id


        //public static PMPRating GetById(int id)
        //{
        //    return PMPRating.Service.GetById(id);
        //}

        //#endregion


        //#region Delete


        //public static void Delete(int id)
        //{
        //    PMPRating.Service.Delete(id);
        //}
        //#endregion
        //#endregion
    }
    #region IPMPRating Service

    public interface IPMPRatingService
    {
        List<PMPRating> Get(EnumStatus status);
        PMPRating GetById(int id);
        void Delete(int id);
        int Save(PMPRating pMPRating);
        List<PMPRating> GetPMPRatingByTypeAndYear(EnumPMPRatingType type, int pmpYearId);
    }

    #endregion
    
}