using System.Collections.Generic;

using BS.Shared;

namespace BeWo.Data.Entities
{
    public class Employee2Wohnheim : BeWoEntityBase
    {
        public static string PropertyName_Wohnheim = "Wohnheim";

        public static string PropertyName_WohnheimOid = "WohnheimOid";

        public static string PropertyName_Employee = "Employee";

        public static string PropertyName_EmployeeOid = "EmployeeOid";

        public static string PropertyName_ValueList = "ValueList";

        private Wohnheim _Wohnheim;

        private long? _WohnheimOid;

        private Employee _Employee;

        private long? _EmployeeOid;

        private IList<ValueListEntry2Object> _ValueList;

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

        public virtual Wohnheim Wohnheim
        {
            get
            {
                return this._Wohnheim;
            }

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

                    if (this._Wohnheim != null)
                    {
                        this.WohnheimOid = this._Wohnheim.Oid;
                    }
                    else
                    {
                        this.WohnheimOid = null;
                    }
                }
            }
        }

        public virtual long? WohnheimOid
        {
            get
            {
                return this._WohnheimOid;
            }

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

        public virtual Employee Employee
        {
            get
            {
                return this._Employee;
            }

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

                    if (this._Employee != null)
                    {
                        this.EmployeeOid = this._Employee.Oid;
                    }
                    else
                    {
                        this.EmployeeOid = null;
                    }
                }
            }
        }

        public virtual long? EmployeeOid
        {
            get
            {
                return this._EmployeeOid;
            }

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

        public virtual IList<ValueListEntry2Object> ValueList
        {
            get
            {
                return this._ValueList ?? (this._ValueList = new List<ValueListEntry2Object>());
            }

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