using System;
using BS.Shared;

namespace BeWo.Data.Entities
{
    public class CustomerHistory : BeWoEntityBase
    {
        public static string PropertyName_AbsenceTimes = "AbsenceTimes";

        public static string PropertyName_Childs = "Childs";

        public static string PropertyName_DebitorNumber = "DebitorNumber";

        public static string PropertyName_CostCenter = "CostCenter";

        public static string PropertyName_Diagnosis = "Diagnosis";

        public static string PropertyName_EquityContribution = "EquityContribution";

        public static string PropertyName_ICD10Diagnosis = "ICD10Diagnosis";

        public static string PropertyName_IsAdvisedOrAttended = "IsAdvisedOrAttended";

        public static string PropertyName_Medication = "Medication";

        public static string PropertyName_Person = "Person";

        public static string PropertyName_ReferenceNumber = "ReferenceNumber";

        public static string PropertyName_SupportConcepts = "SupportConcepts";

        public static string PropertyName_TerminationDate = "TerminationDate";

        public static string PropertyName_TerminationReason = "TerminationReason";

        public static string PropertyName_CustomerOid = "CustomerOid";

        public static string PropertyName_CustomerInsTs = "CustomerInsTs";

        public static string PropertyName_CustomerInsUser = "CustomerInsUser";

        public static string PropertyName_CustomerUdpUser = "CustomerUdpUser";

        public static string PropertyName_CustomerVersion = "CustomerVersion";

        public static string PropertyName_ChangeType = "ChangeType";

        public static string PropertyName_Jugendamt = "Jugendamt";

        public static string PropertyName_Ansprechpartner = "Ansprechpartner";

        public static String PropertyName_AssistanceBegin = "AssistanceBegin";

        private Person _Ansprechpartner;

        private string _Childs;

        private long? _CustomerOid;

        private DateTime? _CustomerInsTs;

        private string _CustomerInsUser;

        private string _CustomerUdpUser;

        private long _CustomerVersion;

        private string _DebitorNumber;

        private string _CostCenter;

        private string _Diagnosis;

        private decimal? _EquityContribution;

        private string _ICD10Diagnosis;

        private bool? _IsAdvisedOrAttended;

        private Organisation _Jugendamt;

        private string _Medication;

        private Person _Person;

        private string _ReferenceNumber;

        private DateTime? _TerminationDate;

        private ValueListEntry _TerminationReason;

        private string _Environment;

        private StatementType _ChangeType;

        private DateTime? _AssistanceBegin;

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

        public virtual Person Ansprechpartner
        {
            get { return _Ansprechpartner; }

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

        public virtual string Childs
        {
            get
            {
                return this._Childs;
            }

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

        public virtual string DebitorNumber
        {
            get
            {
                return this._DebitorNumber;
            }

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

        public virtual string CostCenter
        {
            get
            {
                return this._CostCenter;
            }

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

        public virtual string Diagnosis
        {
            get
            {
                return this._Diagnosis;
            }

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

        public virtual decimal? EquityContribution
        {
            get
            {
                return this._EquityContribution;
            }

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

        public virtual string ICD10Diagnosis
        {
            get
            {
                return this._ICD10Diagnosis;
            }

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

        public virtual bool? IsAdvisedOrAttended
        {
            get
            {
                return this._IsAdvisedOrAttended;
            }

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

        public virtual Organisation Jugendamt
        {
            get { return _Jugendamt; }

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

        public virtual string Medication
        {
            get
            {
                return this._Medication;
            }

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

        public virtual string Environment
        {
            get
            {
                return this._Environment;
            }

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

        public virtual Person Person
        {
            get
            {
                return this._Person;
            }

            set
            {
                if (this.AreDifferent(this._Person, value))
                {
                    this._Person = value;
                    this._Person.Type = PersonType.Customer;
                }
            }
        }

        public virtual string ReferenceNumber
        {
            get
            {
                return this._ReferenceNumber;
            }

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

        public virtual DateTime? TerminationDate
        {
            get
            {
                return this._TerminationDate;
            }

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

        public virtual DateTime? AssistanceBegin
        {
            get { return _AssistanceBegin; }

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

        public virtual ValueListEntry TerminationReason
        {
            get
            {
                return this._TerminationReason;
            }

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

        public virtual long? CustomerOid
        {
            get { return _CustomerOid; }

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

        public virtual DateTime? CustomerInsTs
        {
            get { return _CustomerInsTs; }

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

        public virtual string CustomerInsUser
        {
            get { return _CustomerInsUser; }

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

        public virtual string CustomerUdpUser
        {
            get { return _CustomerUdpUser; }

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

        public virtual long CustomerVersion
        {
            get { return _CustomerVersion; }

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

        public virtual StatementType ChangeType
        {
            get { return _ChangeType; }

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