public async Task <TResponse> Handle( TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate <TResponse> next) { var courseId = _descriptor.GetCourseId(request); var providerId = await _providerOwnershipCache.GetProviderForCourse(courseId); if (providerId == null) { throw new ResourceDoesNotExistException(ResourceType.Course, courseId); } if (IsAuthorized(providerId)) { var providerInfo = await _providerInfoCache.GetProviderInfo(providerId.Value); _providerContextProvider.SetProviderContext(new ProviderContext(providerInfo)); return(await next()); } else { throw new NotAuthorizedException(); } }
private async Task <int> GetUkprnForCourse(Guid courseId) { var providerId = await _providerOwnershipCache.GetProviderForCourse(courseId); if (!providerId.HasValue) { throw new ResourceDoesNotExistException(ResourceType.Course, courseId); } var providerInfo = await _providerInfoCache.GetProviderInfo(providerId.Value); return(providerInfo.Ukprn); }
public async Task <OneOf <ModelWithErrors <ViewModel>, SuccessViewModel> > Handle(Command request, CancellationToken cancellationToken) { var(course, courseRun) = await GetCourseAndCourseRun(request.CourseId, request.CourseRunId); if (!request.Confirm) { var vm = await CreateViewModel(course, courseRun); var validationResult = new ValidationResult(new[] { new ValidationFailure(nameof(request.Confirm), "Confirm you want to delete the course") }); return(new ModelWithErrors <ViewModel>(vm, validationResult)); } var providerId = (await _providerOwnershipCache.GetProviderForCourse(request.CourseId)).Value; await _sqlQueryDispatcher.ExecuteQuery(new DeleteCourseRunQuery() { CourseId = request.CourseId, CourseRunId = request.CourseRunId, DeletedBy = _currentUserProvider.GetCurrentUser(), DeletedOn = _clock.UtcNow, }); // The next page needs this info - stash it in the JourneyModel // since it will no longer able to query for it. _journeyInstance.UpdateState(new JourneyModel() { CourseName = courseRun.CourseName, ProviderId = providerId }); _journeyInstance.Complete(); return(new SuccessViewModel() { CourseId = request.CourseId, CourseRunId = request.CourseRunId, CourseName = courseRun.CourseName }); }