| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 | using System;using InABox.Core;namespace Comal.Classes{    [UserTracking("Timesheets")]    public class TimeSheet : Entity, IPersistent, IRemotable, IOneToMany<Employee>, IOneToMany<Invoice>, IOneToMany<Job>,        ILicense<TimeManagementLicense>,        IExportable, IImportable    {        [EditorSequence(1)]        public EmployeeLink EmployeeLink { get; set; }        [SecondaryIndex]        [DateEditor]        [EditorSequence(2)]        [LoggableProperty(Format = "dd MMM yy")]        public DateTime Date { get; set; }        [NullEditor]        public Guid JobID { get; set; }        [EditorSequence(3)]        public JobLink JobLink { get; set; }        [EntityRelationship(DeleteAction.SetNull)]        [EditorSequence(4)]        public TimeSheetActivityLink ActivityLink { get; set; }        [TimeOfDayEditor]        [EditorSequence(5)]        [LoggableProperty(Format = "hh\\:mm")]        public TimeSpan Start { get; set; }        [TimeOfDayEditor]        [EditorSequence(6)]        [LoggableProperty(Format = "hh\\:mm")]        public TimeSpan Finish { get; set; }        [DurationEditor]        [EditorSequence(7)]        [LoggableProperty(Format = "hh\\:mm")]        public TimeSpan ApprovedStart { get; set; }        [DurationEditor]        [EditorSequence(8)]        [LoggableProperty(Format = "hh\\:mm")]        public TimeSpan ApprovedFinish { get; set; }        [MemoEditor]        [EditorSequence(9)]        public string Notes { get; set; }        [TimestampEditor]        [EditorSequence(10)]        [LoggableProperty(Format = "dd MMM yy HH:mm")]        public DateTime Confirmed { get; set; }        [TimestampEditor]        [EditorSequence(11)]        [LoggableProperty(Format = "dd MMM yy HH:mm")]        public DateTime Approved { get; set; }        [SecondaryIndex]        [TimestampEditor]        [EditorSequence(12)]        [LoggableProperty(Format = "dd MMM yy HH:mm")]        public DateTime Processed { get; set; }        [NullEditor]        public InvoiceLink InvoiceLink { get; set; }        [NullEditor]        [EntityRelationship(DeleteAction.Cascade)]        public LeaveRequestLink LeaveRequestLink { get; set; }        [TextBoxEditor(Editable = Editable.Hidden)]        public string SoftwareVersion { get; set; }        [NullEditor]        public Location StartLocation { get; set; }        [NullEditor]        public Location FinishLocation { get; set; }        [DurationEditor(Editable = Editable.Hidden, Summary = Summary.Sum)]        public TimeSpan ApprovedDuration { get; set; }        [NullEditor]        public Guid EmployeeID { get; set; }        [DurationEditor(Editable = Editable.Hidden, Summary = Summary.Sum)]        public TimeSpan Duration { get; set; }        [TextBoxEditor(Editable = Editable.Hidden)]        public string Address { get; set; }        [TextBoxEditor(Editable = Editable.Hidden)]        public string Gate { get; set; }        protected override void Init()        {            base.Init();            Notes = string.Empty;            Approved = DateTime.MinValue;            Processed = DateTime.MinValue;            EmployeeLink = new EmployeeLink();            JobLink = new JobLink();            ActivityLink = new TimeSheetActivityLink();            InvoiceLink = new InvoiceLink();            LeaveRequestLink = new LeaveRequestLink();            StartLocation = new Location();            FinishLocation = new Location();        }        protected override void DoPropertyChanged(string name, object before, object after)        {            base.DoPropertyChanged(name, before, after);            if (name.Equals("Start"))                Duration = Finish > (TimeSpan)after ? Finish.Subtract((TimeSpan)after) : new TimeSpan();            else if (name.Equals("Finish"))                Duration = (TimeSpan)after > Start ? ((TimeSpan)after).Subtract(Start) : new TimeSpan();            else if (name.Equals("ApprovedStart"))                //ApprovedDuration = ApprovedFinish > ((TimeSpan)after) ? ApprovedFinish.Subtract((TimeSpan)after) : new TimeSpan();                ApprovedDuration = ApprovedFinish > (TimeSpan)after ? ApprovedFinish.Subtract((TimeSpan)after) : new TimeSpan();            else if (name.Equals("ApprovedFinish"))                ApprovedDuration = (TimeSpan)after > ApprovedStart ? ((TimeSpan)after).Subtract(ApprovedStart) : new TimeSpan();        }    }}
 |