public TimeRequestModelBuilder()
 {
     _timeRequest = new MoreTimeRequest()
     {
         Alerted                      = false,
         Expired                      = false,
         LengthInMinutes              = TimeConstants.DefaultRequestLengthInMinutes,
         MinutesToAdjustClockBy       = TimeConstants.DefaultRequestLengthInMinutes,
         TimeAdjustmentAtCreationTime = 0,
         RequestTimeStamp             = DateTime.Now,
         UserId = "Some user"
     };
 }
        public int GetTimeDifferenceSinceRequest(
            MoreTimeRequest request,
            int accumulatedTime,
            ITimeTravelClock clock)
        {
            var negativeTimeDifference            = request.TimeAdjustmentAtCreationTime * -1;
            var timeNowFromRequestUserPerspective = RemoveSeconds(clock.Now.AddMinutes(negativeTimeDifference));
            var requestTimeWithoutSeconds         = RemoveSeconds(request.RequestTimeStamp);
            var timeDifference = Convert.ToInt32(
                timeNowFromRequestUserPerspective
                .Subtract(requestTimeWithoutSeconds)
                .TotalMinutes);

            return(timeDifference);
        }
        public bool IsTimeRequestReadyForAlert(
            MoreTimeRequest timeRequest,
            int accumulatedTime,
            ITimeTravelClock clock)
        {
            bool alert = false;

            if (timeRequest.Alerted == false)
            {
                var timeDifference = GetTimeDifferenceSinceRequest(
                    timeRequest,
                    accumulatedTime,
                    clock);

                if (timeDifference >= timeRequest.LengthInMinutes)
                {
                    alert = true;
                }
            }
            return(alert);
        }
        public bool HasTimeRequestJustExpired(
            MoreTimeRequest timeRequest,
            int accumulatedTime,
            ITimeTravelClock clock)
        {
            bool expired = false;

            if (timeRequest.Expired == false)
            {
                var timeDifference = GetTimeDifferenceSinceRequest(
                    timeRequest,
                    accumulatedTime,
                    clock);

                if (timeDifference >= timeRequest.LengthInMinutes)
                {
                    expired = true;
                }
            }
            return(expired);
        }
Beispiel #5
0
        public IActionResult Create(MoreTimeRequest newRequest)
        {
            CancelAnyUnexpiredRequestsForThisUser(newRequest.UserId);
            var negativeTimeDifference = _timeTracker.AccumulatedTimeDifference * -1;
            var newItem = new MoreTimeRequest {
                RequestTimeStamp             = _clock.Now.AddMinutes(negativeTimeDifference),
                Expired                      = false,
                Alerted                      = false,
                LengthInMinutes              = newRequest.LengthInMinutes,
                MinutesToAdjustClockBy       = newRequest.LengthInMinutes,
                TimeAdjustmentAtCreationTime = _timeTracker.AccumulatedTimeDifference,
                UserId = newRequest.UserId
            };

            _timeRequestData.AddTimeRequest(_dbContext, newItem);
            _timeRequestData.SaveChanges(_dbContext);

            return(CreatedAtRoute(
                       "GetAlert",
                       new { userId = newRequest.UserId },
                       newItem));
        }
Beispiel #6
0
        public void UpdateTimeRequest(MoreTimeRequestContext context, MoreTimeRequest request)
        {
            var timeRequestToUpdate = _moreTimeRequests.Where(x => x.Id == request.Id).First();

            timeRequestToUpdate.Update(request);
        }
Beispiel #7
0
 public void AddTimeRequest(MoreTimeRequestContext context, MoreTimeRequest moreTimeRequest)
 {
     _idIncrementer++;
     moreTimeRequest.Id = _idIncrementer;
     _moreTimeRequests.Add(moreTimeRequest);
 }