| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 | using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq.Expressions;using InABox.Core;namespace Comal.Classes{    [UserTracking("Human Resources")]    public class Employee : Entity, IEmployee, ISchedulable, IPersistent, IRemotable, IOrgChart<EmployeeLink>, ILicense<CoreLicense>, IExportable,        IImportable    {                [UniqueCodeEditor(Visible = Visible.Default, Editable = Editable.Enabled)]        [EditorSequence(1)]        public string Code { get; set; }        [TextBoxEditor]        [EditorSequence(2)]        public string Name { get; set; }                        [EnumLookupEditor(typeof(EmployeeType))]        [EditorSequence("Payroll", 3)]        public EmployeeType Type { get; set; }                [EditorSequence(4)]        public Address Address { get; set; }                [TextBoxEditor]        [EditorSequence(5)]        public string Email { get; set; }        [TextBoxEditor]        [EditorSequence(6)]        public string Mobile { get; set; }                [DateEditor]        [EditorSequence(7)]        public DateTime DateOfBirth { get; set; }                [EditorSequence(8)]        public UserLink UserLink { get; set; }                [CodeEditor(Editable = Editable.Enabled)]        [EditorSequence(9)]        [Obsolete("Replaced with EmployeeGroup", true)]        public string Department { get; set; }        [EditorSequence(10)]        public EmployeeGroupLink Group { get; set; }                [EditorSequence(11)]        public ImageDocumentLink Thumbnail { get; set; }        [SecondaryIndex]        [CheckBoxEditor]        [EditorSequence(12)]        public bool CanAllocateTasks { get; set; }                [CheckBoxEditor]        [EditorSequence(13)]        [Caption("Show In/Out Status?")]        public bool ShowOnInOutBoard { get; set; }                [SecondaryIndex]        [DateEditor]        [EditorSequence("Payroll", 1)]        public DateTime StartDate { get; set; }        [SecondaryIndex]        [DateEditor]        [EditorSequence("Payroll", 2)]        public DateTime FinishDate { get; set; }                [EditorSequence("Payroll", 3)]        [EmbeddedListEditor(typeof(EmployeeRosterItem), DirectEdit = true)]        public String Roster { get; set; }                [EditorSequence("Payroll", 4)]        [DateTimeEditor(Visible = Visible.Optional)]        public DateTime RosterStart { get; set; }        [EditorSequence("Payroll",5)]        public OvertimeRuleLink OvertimeRuleLink { get; set; }                [CodeEditor(Editable = Editable.Enabled)]        [EditorSequence("Payroll",6)]        public string PayrollID { get; set; }                [EditorSequence("Org Chart", 1)]        public EmployeePositionLink Position { get; set; }        [EditorSequence("Org Chart", 2)]        [EntityRelationship(DeleteAction.Cascade)]        public EmployeeLink Manager { get; set; }        [EditorSequence("Org Chart", 3)]        public OrgChartSettings<EmployeeLink> OrgChart { get; set; }                [NullEditor]        [Obsolete("Replaced with UserLink.ID", true)]        public Guid UserID { get; set; }                [NullEditor]        public int ActiveSchedules { get; set; }        [NullEditor]        public byte[]? Signature { get; set; }        [NullEditor]        [Obsolete("Replaced with EmployeeRoster class", true)]        public TimeSpan UsualStart { get; set; }        [NullEditor]        [Obsolete("Replaced with EmployeeRoster class", true)]        public TimeSpan UsualFinish { get; set; }        protected override void Init()        {            base.Init();            Code = "";            Name = "";            Address = new Address();            Thumbnail = new ImageDocumentLink();            Group = new EmployeeGroupLink();            UserLink = new UserLink();            UserLink.PropertyChanged += UserLink_PropertyChanged;            OvertimeRuleLink = new OvertimeRuleLink();            Roster = "";            RosterStart = DateTime.MinValue;            Manager = new EmployeeLink();            Position = new EmployeePositionLink();            OrgChart = new OrgChartSettings<EmployeeLink>();        }        private void UserLink_PropertyChanged(object sender, PropertyChangedEventArgs e)        {            //if (e.PropertyName == "ID")            //    UserID = UserLink.ID;            if (e.PropertyName == "Type")                ShowOnInOutBoard = Type == EmployeeType.Employee;        }        public override string ToString()        {            return Name;        }        public static Filter<Employee> ActiveEmployees(DateTime date)        {            var start = new Filter<Employee>(x => x.StartDate).IsEqualTo(DateTime.MinValue).Or(x => x.StartDate).IsLessThanOrEqualTo(date);            var finish = new Filter<Employee>(x => x.FinishDate).IsEqualTo(DateTime.MinValue).Or(x => x.FinishDate).IsGreaterThanOrEqualTo(date);            return start.And(finish);        }    }}
 |