Esempio n. 1
0
 private static void ValidateUserHasAccessToTimer(string userId, Models.Database.Timer timer)
 {
     if (timer.UserId != userId)
     {
         throw new UnauthorizedAccessException(
                   $"The timer with id={timer.Id} doesn't belong to authenticated user!");
     }
 }
Esempio n. 2
0
 private Task StopTimerAsync(Models.Database.Timer currentTimer)
 {
     return(currentTimer.State == TimerState.Stopped
         ? Task.CompletedTask
         : timerRepository.UpdateTimerStateAsync(
                currentTimer.Id,
                TimerState.Stopped,
                0,
                DateTime.UtcNow.Ticks));
 }
Esempio n. 3
0
        private Task RunTimerAsync(Models.Database.Timer currentTimer)
        {
            var passedSeconds = 0;
            var currentTime   = DateTime.UtcNow.Ticks;

            if (currentTimer.State == TimerState.Paused)
            {
                passedSeconds = currentTimer.PassedSeconds;
            }

            return(timerRepository.UpdateTimerStateAsync(currentTimer.Id, TimerState.Active, passedSeconds,
                                                         currentTime));
        }
Esempio n. 4
0
        private Task ExpireTimerAsync(Models.Database.Timer currentTimer)
        {
            if (currentTimer.State != TimerState.Active)
            {
                return(Task.CompletedTask);
            }

            return(timerRepository.UpdateTimerStateAsync(
                       currentTimer.Id,
                       TimerState.Expired,
                       currentTimer.PeriodInSeconds,
                       DateTime.UtcNow.Ticks));
        }
Esempio n. 5
0
        private Task PauseTimerAsync(Models.Database.Timer currentTimer)
        {
            var currentTime = DateTime.UtcNow.Ticks;
            var timePassed  = currentTimer.PassedSeconds
                              + (int)TimeSpan.FromTicks(currentTime - currentTimer.LastUpdate).TotalSeconds;

            if (timePassed > currentTimer.PeriodInSeconds)
            {
                timePassed = 0;
            }

            return(timerRepository.UpdateTimerStateAsync(currentTimer.Id, TimerState.Paused, timePassed, currentTime));
        }
Esempio n. 6
0
 private Task DeleteTimerAsync(Models.Database.Timer currentTimer)
 {
     return(timerRepository.DeleteTimerAsync(currentTimer.Id));
 }
Esempio n. 7
0
 private Task RerunTimerAsync(Models.Database.Timer currentTimer)
 {
     return(timerRepository.UpdateTimerStateAsync(currentTimer.Id, TimerState.Active, 0, DateTime.UtcNow.Ticks));
 }