Exemplo n.º 1
0
        public AimTimerItemStatus GetStatus()
        {
            var now    = _dateTimeProvider.GetNow();
            var result = new AimTimerItemStatus()
            {
                StatusFlags = AimTimerStatusFlags.None,
                TimeLeft    = new TimeSpan(Ticks) - new TimeSpan(AimTimerIntervals.Sum(i => (i.EndDate ?? now).Ticks - i.StartDate.Ticks))
            };

            var interval = AimTimerIntervals
                           .Where(i => i.StartDate <= now && i.EndDate >= now || i.EndDate == null)
                           .OrderByDescending(i => i.EndDate ?? DateTime.MaxValue)
                           .FirstOrDefault();

            if (interval != null && interval.EndDate == null)
            {
                result.StatusFlags |= AimTimerStatusFlags.Running;
            }

            if (result.TimeLeft.Ticks > 0)
            {
                result.StatusFlags |= AimTimerStatusFlags.Active;
            }

            result.IsFinished = result.TimeLeft.Ticks <= 0;
            result.InARow     = InARow + (result.IsFinished ? 1 : 0);

            return(result);
        }
Exemplo n.º 2
0
        public void Stop()
        {
            var now          = _dateTimeProvider.GetNow();
            var lastInterval = AimTimerIntervals.SingleOrDefault(i => i.EndDate == null);

            if (lastInterval == null)
            {
                return;
            }

            lastInterval.EndDate = now;
        }
Exemplo n.º 3
0
        public void Start()
        {
            var now = _dateTimeProvider.GetNow();

            if (now < StartOfActivityPeriod || now > EndOfActivityPeriod || AimTimerIntervals.Any(i => i.EndDate == null))
            {
                return;
            }

            var aimTimerInterval = _aimTimerIntervalFactory.Invoke(this, now, null);

            AimTimerIntervals.Add(aimTimerInterval);
        }
Exemplo n.º 4
0
 public void Init()
 {
     Ticks = _aimTimerItemModel.Ticks;
     foreach (var aimTimerIntervalModel in _aimTimerItemModel.AimTimerIntervals)
     {
         var aimTimerInterval = _aimTimerIntervalFactory.Invoke(this, aimTimerIntervalModel.StartDate, aimTimerIntervalModel.EndDate);
         AimTimerIntervals.Add(aimTimerInterval);
     }
     StartOfActivityPeriod = _aimTimerItemModel.StartOfActivityPeriod;
     EndOfActivityPeriod   = _aimTimerItemModel.EndOfActivityPeriod;
     IsFinished            = _aimTimerItemModel.IsFinished;
     InARow = _aimTimerItemModel.PreviousInARow;
 }