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); }
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); }
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(); }