private int SleepDurationMinutes() { var sleepStart = DateTime.MinValue; var sleepEnd = DateTime.MaxValue; foreach (var t in Events) { switch (t.Type) { case Event.EventType.SetGuard: break; case Event.EventType.FallAsleep: sleepStart = t.Timestamp; break; case Event.EventType.WakeUp: sleepEnd = t.Timestamp; var period = new Period { Start = sleepStart, End = sleepEnd }; Sleeps.Add(period); for (var minute = period.Start.Minute; minute < period.End.Minute; minute++) { SleepsPerMinute[minute]++; } break; } } return(Sleeps.Sum(x => x.Duration)); }
public bool SleepsAt(int minute) { return(Sleeps.Any(x => x.Start.TimeOfDay.Minutes <= minute && x.End.TimeOfDay.Minutes > minute)); }
public int CountSleepsAt(int minute) { return(Sleeps.Count(x => x.Start.TimeOfDay.Minutes <= minute && x.End.TimeOfDay.Minutes > minute)); }