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

namespace BeWo.Data.Entities
{
    public class SupportConceptApprovalPeriod : BeWoEntityBase
    {
        public static string PropertyName_ApprovedBEInterval            = "ApprovedBEInterval";
        public static string PropertyName_ApprovedBEPerInterval         = "ApprovedBEPerInterval";
        public static string PropertyName_ContactCountInterval          = "ContactCountInterval";
        public static string PropertyName_ContactCountPerInterval       = "ContactCountPerInterval";
        public static string PropertyName_ApprovedBETotal               = "ApprovedBETotal";
        public static string PropertyName_ApprovedFixedAmount           = "ApprovedFixedAmount";
        public static string PropertyName_ApprovedFixedAmountInterval   = "ApprovedFixedAmountInterval";
        public static string PropertyName_CostBearer2SupportConcept     = "CostBearer2SupportConcept";
        public static string PropertyName_EndDate                       = "EndDate";
        public static string PropertyName_IsApprovedBEShifting          = "IsApprovedBEShifting";
        public static string PropertyName_IsApprovedFixedAmountShifting = "IsApprovedFixedAmountShifting";
        public static string PropertyName_MonthlyPayment                = "MonthlyPayment";
        public static string PropertyName_StartDate                     = "StartDate";

        private IList<SupportConceptApprovalPeriod2Employee> _SupportConceptApprovalPeriod2Employee;

        private SupportConceptApprovalInterval? _ApprovedBEInterval;

        private decimal? _ApprovedBEPerInterval;

		private SupportConceptApprovalInterval? _ContactCountInterval;

		private decimal? _ContactCountPerInterval;

        private decimal? _ApprovedBETotal;

        private decimal? _ApprovedFixedAmount;

        private SupportConceptApprovalInterval? _ApprovedFixedAmountInterval;

        private CostBearer2SupportConcept _CostBearer2SupportConcept;

        private DateTime? _EndDate;

        private bool _IsApprovedBEShifting;

        private bool _IsApprovedFixedAmountShifting;

        private decimal? _MonthlyPayment;

        private DateTime? _StartDate;

        public SupportConceptApprovalPeriod()
        {
            this._Tid = TableID.SupportConceptApprovalPeriod;
        }

        public virtual SupportConceptApprovalInterval? ApprovedBEInterval
        {
            get
            {
                return this._ApprovedBEInterval;
            }

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

        public virtual decimal? ApprovedBEPerInterval
        {
            get
            {
                return this._ApprovedBEPerInterval;
            }

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

        public virtual decimal? ApprovedBETotal
        {
            get
            {
                return this._ApprovedBETotal;
            }

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

		public virtual SupportConceptApprovalInterval? ContactCountInterval
		{
			get
			{
				return this._ContactCountInterval;
			}

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

		public virtual decimal? ContactCountPerInterval
		{
			get
			{
				return this._ContactCountPerInterval;
			}

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

        public virtual decimal? ApprovedFixedAmount
        {
            get
            {
                return this._ApprovedFixedAmount;
            }

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

        public virtual SupportConceptApprovalInterval? ApprovedFixedAmountInterval
        {
            get
            {
                return this._ApprovedFixedAmountInterval;
            }

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

        public virtual CostBearer2SupportConcept CostBearer2SupportConcept
        {
            get
            {
                return this._CostBearer2SupportConcept;
            }

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

        public virtual DateTime? EndDate
        {
            get
            {
                return this._EndDate;
            }

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

        public virtual bool IsApprovedBEShifting
        {
            get
            {
                return this._IsApprovedBEShifting;
            }

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

        public virtual bool IsApprovedFixedAmountShifting
        {
            get
            {
                return this._IsApprovedFixedAmountShifting;
            }

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

        public virtual decimal? MonthlyPayment
        {
            get
            {
                return this._MonthlyPayment;
            }

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

        public virtual DateTime? StartDate
        {
            get
            {
                return this._StartDate;
            }

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

        public virtual decimal? Percentage { get; set; }

        public virtual ServiceCategory ServiceCategory { get; set; }

        public virtual IList<SupportConceptApprovalPeriod2Employee> SupportConceptApprovalPeriod2Employee
        {
            get { return _SupportConceptApprovalPeriod2Employee ?? (_SupportConceptApprovalPeriod2Employee = new List<SupportConceptApprovalPeriod2Employee>()); }

            set
            {
                if (AreDifferent(_SupportConceptApprovalPeriod2Employee, value))
                {
                    _SupportConceptApprovalPeriod2Employee = value;
                }
            }
        }
    }
}