Esempio n. 1
0
 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);
     }
 }
Esempio n. 2
0
        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;
                }
            }
        }