using System;
using BS.Shared;

namespace BeWo.Data.Entities
{
    public class Employee2CustomerHistory : BeWoEntityBase
    {
        public static string PropertyName_Customer = "Customer";

        public static string PropertyName_CustomerOid = "CustomerOid";

        public static string PropertyName_Employee = "Employee";

        public static string PropertyName_EmployeeOid = "EmployeeOid";

        public static string PropertyName_Employee2CustomerOid = "Employee2CustomerOid";

        public static string PropertyName_Employee2CustomerInsTs = "Employee2CustomerInsTs";

        public static string PropertyName_Employee2CustomerInsUser = "Employee2CustomerInsUser";

        public static string PropertyName_Employee2CustomerUdpUser = "Employee2CustomerUdpUser";

        public static string PropertyName_Employee2CustomerVersion = "Employee2CustomerVersion";

        public static string PropertyName_ChangeType = "ChangeType";


        private Customer _Customer;

        private long? _CustomerOid;

        private Employee _Employee;

        private long? _EmployeeOid;

        private StatementType _ChangeType;

        private long _Employee2CustomerOid;

        private string _Employee2CustomerInsUser;

        private string _Employee2CustomerUdpUser;

        private DateTime? _Employee2CustomerInsTs;

        private long _Employee2CustomerVersion;


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


        public virtual Customer Customer
        {
            get
            {
                return this._Customer;
            }

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

                    if (this._Customer != null)
                    {
                        this.CustomerOid = this._Customer.Oid;
                    }
                    else
                    {
                        this.CustomerOid = null;
                    }
                }
            }
        }

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

            set
            {
                if (this.AreDifferent(this._CustomerOid, value))
                {
                    this._CustomerOid = 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 StatementType ChangeType
        {
            get { return _ChangeType; }

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

        public virtual string Employee2CustomerInsUser
        {
            get { return _Employee2CustomerInsUser; }

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

        public virtual string Employee2CustomerUdpUser
        {
            get { return _Employee2CustomerUdpUser; }

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

        public virtual DateTime? Employee2CustomerInsTs
        {
            get { return _Employee2CustomerInsTs; }

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

        public virtual long Employee2CustomerVersion
        {
            get { return _Employee2CustomerVersion; }

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

        public virtual long Employee2CustomerOid
        {
            get { return _Employee2CustomerOid; }

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