using System.Collections.Generic;
using BS.Shared;

namespace BeWo.Data.Entities
{
    public class ServiceCategory : BeWoEntityBase
    {
        public static string PropertyName_Abbreviation = "Abbreviation";

        public static string PropertyName_IsBillable = "IsBillable";

        public static string PropertyName_OhneHilfeplan = "OhneHilfeplan";

        public static string PropertyName_Name = "Name";

        public static string PropertyName_Percentage = "Percentage";

        public static string PropertyName_ScopeType = "ScopeType";

        public static string PropertyName_CostRatePeriods = "CostRatePeriods";

        private string _Abbreviation;

        private bool _IsBillable;

        private AccountingvisibilityType? _OhneHilfeplan;

        private string _Name;

        private decimal _Percentage;

        private decimal _BillableAmount;

        private AccountingIntervalType? _AccountingInterval;

        private int _Position;

        private ScopeTypeId? _ScopeType;

        private IList<CostRatePeriod> _CostRatePeriods;

        public virtual IList<CostRatePeriod> CostRatePeriods
        {
            get { return this._CostRatePeriods ?? (this._CostRatePeriods = new List<CostRatePeriod>()); }

            set
            {
                if (this.AreDifferent(this._CostRatePeriods, value))
                {
                    this._CostRatePeriods = value;
                }
            }
        }

        public virtual string Abbreviation
        {
            get
            {
                return this._Abbreviation;
            }

            set
            {
                if (this.AreDifferent(this._Abbreviation, value))
                {
                    this._Abbreviation = value;
                }
            }
        }

        public virtual bool IsBillable
        {
            get
            {
                return this._IsBillable;
            }

            set
            {
                if (this.AreDifferent(this._IsBillable, value))
                {
                    this._IsBillable = value;
                }
            }
        }



        public virtual AccountingvisibilityType? OhneHilfeplan
        {
            get
            {
                return this._OhneHilfeplan;
            }

            set
            {
                if (this.AreDifferent(this._OhneHilfeplan, value))
                {
                    this._OhneHilfeplan = value;
                }
            }
        }

        public virtual string Name
        {
            get
            {
                return this._Name;
            }

            set
            {
                if (this.AreDifferent(this._Name, value))
                {
                    this._Name = value;
                }
            }
        }

        public virtual decimal Percentage
        {
            get
            {
                return this._Percentage;
            }

            set
            {
                if (this.AreDifferent(this._Percentage, value))
                {
                    this._Percentage = value;
                }
            }
        }

        public virtual decimal BillableAmount
        {
            get
            {
                return this._BillableAmount;
            }

            set
            {
                if (this.AreDifferent(this._BillableAmount, value))
                {
                    this._BillableAmount = value;
                }
            }
        }

        public virtual AccountingIntervalType? AccountingInterval
        {
            get
            {
                return this._AccountingInterval;
            }

            set
            {
                if (this.AreDifferent(this._AccountingInterval, value))
                {
                    this._AccountingInterval = value;
                }
            }
        }

        public virtual int Position
        {
            get
            {
                return this._Position;
            }

            set
            {
                if (this.AreDifferent(this._Position, value))
                {
                    this._Position = value;
                }
            }
        }

        public virtual ScopeTypeId? ScopeType
        {
            get
            {
                return this._ScopeType;
            }

            set
            {
                if (this.AreDifferent(this._ScopeType, value))
                {
                    this._ScopeType = value;
                }
            }
        }

		public virtual bool IsDefault { get; set; }
    }
}