public IDayCalculatorState GetState() { if (Records.Any()) { IRecordRow info = Records.Last(); TimeCalculatorState result = new TimeCalculatorState() { DeviceStatus = info.Status, Last = info.Time, Ready = Records.Count() > 1 }; return(result); } else { return(TimeCalculatorState.NotReady); } }
private void CalculateIntervals() { IRecordRow[] infos = Records.Where(x => x.Edge).ToArray(); elapsed = TimeSpan.Zero; absent = TimeSpan.Zero; if (infos.Length > 1) { for (int i = 1; i < infos.Length; i++) { bool status = infos[i - 1].Status; TimeSpan interval = infos[i].Time - infos[i - 1].Time; if (status) { elapsed = elapsed + interval; } else if (i > 1) { absent = absent + interval; } } IRecordRow last = Records.Last(); if (last.Status) { IRecordRow lastEdged = infos.Last(); elapsed = last.Time - lastEdged.Time + elapsed; } } else if (Records.Count() > 1) { IRecordRow first = Records.First(); IRecordRow last = Records.Last(); if (first.Status) { elapsed = last.Time - first.Time; } } }