Example #1
0
        public async Task <ValidationContext> Handle(ApproveTvRequestCommand command, CancellationToken cancellationToken)
        {
            var result  = new ValidationContext();
            var request = await _requestService.GetRequestById(command.RequestId);

            result.AddErrorIf(() => request == null, "Invalid request", "No request was found with the given Id");
            result.AddErrorIf(() => request?.RequestStatus == RequestStatuses.Completed, "Invalid request", "Request has already been completed");

            if (!result.IsSuccessful)
            {
                return(result);
            }

            if (request.Track)
            {
                request.RequestStatus = RequestStatuses.Approved;
            }
            else
            {
                if (command.ApproveAll)
                {
                    ApproveAllEpisodes(request);
                }
                else
                {
                    ApproveEpisodes(request, command.EpisodesBySeason);
                }

                _requestService.SetAggregatedStatus(request);
            }

            await _unitOfWork.CommitAsync();

            return(result);
        }
Example #2
0
        private async Task <TvRequestRow> ValidateRequestExists(DeleteTvRequestCommand command, ValidationContext result)
        {
            var request = await _requestService.GetRequestById(command.Id);

            if (request == null)
            {
                result.AddError("Invalid request id", "A request for the given id was not found.");
            }

            return(request);
        }
Example #3
0
        public async Task <ValidationContext> Handle(RejectTvRequestCommand command, CancellationToken cancellationToken)
        {
            var result = new ValidationContext();

            if (string.IsNullOrWhiteSpace(command.Comment))
            {
                result.AddError("Invalid request", "A comment must be specified when rejecting a request");
            }

            var request = await _requestService.GetRequestById(command.RequestId);

            if (request == null)
            {
                result.AddError("Invalid request", "No request was found with the given Id");
            }

            if (request?.RequestStatus == RequestStatuses.Completed)
            {
                result.AddError("Invalid request", "Request has already been completed");
            }

            if (!result.IsSuccessful)
            {
                return(result);
            }

            // ReSharper disable once PossibleNullReferenceException
            if (request.Track)
            {
                request.RequestStatus = RequestStatuses.Rejected;
            }
            else
            {
                if (command.RejectAll)
                {
                    RejectAll(request);
                }
                else
                {
                    PartialReject(request, command.EpisodesBySeason);
                }

                _requestService.SetAggregatedStatus(request);
            }

            request.Comment = command.Comment;

            await _unitOfWork.CommitAsync();

            return(result);
        }
 private void GivenNoRequestFound()
 {
     _requestService.GetRequestById(Arg.Any <int>()).ReturnsNull();
 }