Beispiel #1
0
        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));
        }
Beispiel #2
0
 public bool SleepsAt(int minute)
 {
     return(Sleeps.Any(x => x.Start.TimeOfDay.Minutes <= minute &&
                       x.End.TimeOfDay.Minutes > minute));
 }
Beispiel #3
0
 public int CountSleepsAt(int minute)
 {
     return(Sleeps.Count(x => x.Start.TimeOfDay.Minutes <= minute &&
                         x.End.TimeOfDay.Minutes > minute));
 }