| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | using System;using System.Collections.ObjectModel;using System.Windows.Media;using Comal.Classes;using InABox.Core;using InABox.WPF;namespace PRSDesktop{    public class EquipmentAssignmentModel : Model<EquipmentAssignmentModel,EquipmentAssignment>    {                public Guid EquipmentID { get; }        public int Number { get; set; }        public String? Description { get; set; }        public DateTime Completed { get; set; }        public DateTime Date { get; }        public TimeSpan BookedStart { get; set; }        public TimeSpan BookedFinish { get; set; }        public TimeSpan BookedDuration { get; }                public TimeSpan ActualStart { get; set; }        public TimeSpan ActualFinish { get; set; }        public TimeSpan ActualDuration { get; }                public static TimeSpan EffectiveTime(TimeSpan actual, TimeSpan booked) => actual.Ticks != 0L ? actual : booked;         public TimeSpan EffectiveStart()        {            return EffectiveTime(ActualStart, BookedStart);        }        public TimeSpan EffectiveFinish()        {             // If we have an actual finish, always use that             // otherwise use EffectiveStart() + booked.duration             return EffectiveTime(                 ActualFinish,                  EffectiveTime(ActualStart, BookedStart)                     .Add(BookedDuration)            );                    }                public Guid JobID { get; }        public string? JobNumber { get; }        public string? JobName { get; }                public EquipmentAssignmentModel(CoreRow row) : base(row)        {            EquipmentID = Get(x=>x.Equipment.ID);            Number = Get(x => x.Number);            Description = Get(x => x.Description);            Completed = Get(x => x.Completed);            Date = Get(x=>x.Date);            BookedDuration = Get(x => x.Booked.Duration);            BookedStart = Get(x => x.Booked.Start);            BookedFinish = Get(x => x.Booked.Finish);            ActualDuration = Get(x => x.Actual.Duration);            ActualStart = Get(x => x.Actual.Start);            ActualFinish = Get(x => x.Actual.Finish);                        JobID = Get(x => x.JobLink.ID);            JobNumber = Get(x => x.JobLink.JobNumber);            JobName = Get(x => x.JobLink.Name);                               }                public override Columns<EquipmentAssignment> GetColumns()        {            return new Columns<EquipmentAssignment>(x => x.ID)                .Add(x => x.Equipment.ID)                .Add(x => x.Number)                .Add(x => x.Description)                .Add(x => x.Completed)                .Add(x => x.Date)                .Add(x => x.Booked.Start)                .Add(x => x.Booked.Duration)                .Add(x => x.Booked.Finish)                .Add(x => x.Actual.Start)                .Add(x => x.Actual.Duration)                .Add(x => x.Actual.Finish)                .Add(x => x.JobLink.ID)                .Add(x => x.JobLink.JobNumber)                .Add(x => x.JobLink.Name);        }    }}
 |