using System; using System.Linq; using Comal.Classes; using InABox.Core; using System.Diagnostics.CodeAnalysis; using InABox.Mobile; namespace PRS.Mobile { public class InOutModel : CoreRepository { public InOutModel(IModelHost host, Func>? filter = null, Func? cachefilename = null) : base(host, filter, cachefilename) { } protected override void Initialize() { base.Initialize(); _statuses = new Tuple[] { }; } private Tuple[] _statuses; public bool IsClockedOn(Guid id) => _statuses.Any(x => x.Item1.Equals(id) && x.Item3.Equals(TimeSpan.Zero)); public TimeSpan StartTime(Guid id) => _statuses.FirstOrDefault(x => x.Item1.Equals(id))?.Item2 ?? TimeSpan.Zero; public TimeSpan FinishTime(Guid id) => _statuses.FirstOrDefault(x => x.Item1.Equals(id))?.Item3 ?? TimeSpan.Zero; protected override void BeforeLoad(MultiQuery query) { base.BeforeLoad(query); query.Add( new Filter(x=>x.Date).IsEqualTo(DateTime.Today), new Columns(ColumnTypeFlags.None).Add(x=>x.EmployeeLink.ID) .Add(x=>x.Start) .Add(x=>x.Finish) ); } protected override void AfterLoad(MultiQuery query) { base.AfterLoad(query); _statuses = query.Get() .ToTuples(x => x.EmployeeLink.ID, x => x.Start, x => x.Finish).ToArray(); } } }