예제 #1
0
        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();
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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
            });
        }