using System; using System.Collections.ObjectModel; using Comal.Classes; using InABox.Core; using Xamarin.Forms; namespace comal.timesheets { public class AssignmentShell : Shell { static AssignmentShell() { Columns.Map(nameof(Id), x => x.ID) .Map(nameof(Number), x => x.Number) .Map(nameof(Title), x => x.Title) .Map(nameof(EmployeeId), x => x.EmployeeLink.ID) .Map(nameof(JobID), x => x.JobLink.ID) .Map(nameof(JobNumber), x => x.JobLink.JobNumber) .Map(nameof(JobName), x => x.JobLink.Name) .Map(nameof(TaskID), x => x.Task.ID) .Map(nameof(TaskNumber), x => x.Task.Number) .Map(nameof(TaskName), x => x.Task.Title) .Map(nameof(Notes), x => x.Description) .Map(nameof(_date), x => x.Date) .Map(nameof(_bookedstart), x => x.Booked.Start) .Map(nameof(_bookedfinish), x => x.Booked.Finish) .Map(nameof(_actualstart), x => x.Actual.Start) .Map(nameof(_actualfinish), x => x.Actual.Finish) .Map(nameof(_completed), x => x.Completed) .Map(nameof(_color), x => x.ActivityLink.Color) .Map(nameof(DeliveryID), x=>x.Delivery.ID); } public Guid Id => Get(); public int Number => Get(); public String Title => Get(); public Guid EmployeeId => Get(); public ObservableCollection ResourceIds => new ObservableCollection() { EmployeeId }; public Guid JobID => Get(); public string JobNumber => Get(); public string JobName => Get(); public Guid TaskID => Get(); public int TaskNumber => Get(); public string TaskName => Get(); public String Subject => string.Format("{0}{1} {2}", Number, JobID != Guid.Empty ? $"({JobNumber})" : "", Title ); public string Notes => Get(); private DateTime _date => Get(); private TimeSpan _bookedstart => Get(); private TimeSpan _bookedfinish => Get(); private TimeSpan _actualstart => Get(); private TimeSpan _actualfinish => Get(); public DateTime StartTime => _date.Add(Assignment.EffectiveTime(_actualstart, _bookedstart).Floor(TimeSpan.FromMinutes(5))); public DateTime EndTime => _date.Add(Assignment.EffectiveTime(_actualfinish, _bookedfinish).Ceiling(TimeSpan.FromMinutes(5))); private DateTime _completed => Get(); public bool Completed => !_completed.IsEmpty(); private String _color => Get(); public Color Color { get => !String.IsNullOrWhiteSpace(_color) ? Color.FromHex(_color) : Color.Silver; set => Set(value.ToHex()); } public Color TextColor => Color.Black; public Guid DeliveryID => Get(); public static Filter MyAssignments => new Filter(x => x.EmployeeLink.ID).IsEqualTo(App.Data.Me.ID); } }