コード例 #1
0
        public async Task <GetProviderCourseResult> Handle(GetProviderCourseQuery request, CancellationToken cancellationToken)
        {
            _logger.LogInformation("Get Provider Course request received for ukprn {ukprn}, LarsCode {larsCode}", request.Ukprn, request.LarsCode);

            var standardResponse = await _coursesApiClient.GetWithResponseCode <GetStandardResponse>(new GetStandardRequest(request.LarsCode));

            if (standardResponse.StatusCode != HttpStatusCode.OK)
            {
                var errorMessage =
                    $"Response status code does not indicate success: {(int)standardResponse.StatusCode} - Standard data not found for Lars Code: {request.LarsCode}";
                _logger.LogError(errorMessage);
                throw new HttpRequestContentException(errorMessage, standardResponse.StatusCode, standardResponse.ErrorContent);
            }
            var standard       = standardResponse.Body;
            var courseResponse = await _courseManagementApiClient.GetWithResponseCode <GetProviderCourseResponse>(new GetProviderCourseRequest(request.Ukprn, request.LarsCode));

            if (courseResponse.StatusCode != HttpStatusCode.OK)
            {
                var errorMessage =
                    $"Response status code does not indicate success: {(int)courseResponse.StatusCode} - Provider course details not found for ukprn: {request.Ukprn} LarsCode: {request.LarsCode}";
                _logger.LogError(errorMessage);
                throw new HttpRequestContentException(errorMessage, courseResponse.StatusCode, courseResponse.ErrorContent);
            }
            var course = courseResponse.Body;
            var providerCourseLocationsResponse = await _courseManagementApiClient.GetWithResponseCode <List <GetProviderCourseLocationsResponse> >(new GetProviderCourseLocationsRequest(request.Ukprn, request.LarsCode));

            if (providerCourseLocationsResponse.StatusCode != HttpStatusCode.OK)
            {
                var errorMessage =
                    $"Response status code does not indicate success: {(int)providerCourseLocationsResponse.StatusCode} - Provider course details not found for ukprn: {request.Ukprn} LarsCode: {request.LarsCode}";
                _logger.LogError(errorMessage);
                throw new HttpRequestContentException(errorMessage, providerCourseLocationsResponse.StatusCode, providerCourseLocationsResponse.ErrorContent);
            }
            var providerCourseLocations = providerCourseLocationsResponse.Body;

            var locations = providerCourseLocations.Select(x => (ProviderCourseLocationModel)x).ToList();

            return(new GetProviderCourseResult
            {
                LarsCode = course.LarsCode,
                IfateReferenceNumber = standard.IfateReferenceNumber,
                CourseName = standard.Title,
                Level = standard.Level,
                Version = standard.Version,
                RegulatorName = standard.ApprovalBody,
                Sector = standard.Route,
                StandardInfoUrl = course.StandardInfoUrl,
                ContactUsPhoneNumber = course.ContactUsPhoneNumber,
                ContactUsEmail = course.ContactUsEmail,
                ContactUsPageUrl = course.ContactUsPageUrl,
                ProviderCourseLocations = locations,
                IsApprovedByRegulator = course.IsApprovedByRegulator
            });
        }
コード例 #2
0
        public async Task <GetAllStandardRegionsQueryResult> Handle(GetAllStandardRegionsQuery request, CancellationToken cancellationToken)
        {
            _logger.LogInformation("Get All Regions request received");
            var response = await _courseManagementApiClient.GetWithResponseCode <List <RegionModel> >(new GetAllRegionsQuery());

            if (response.StatusCode != HttpStatusCode.OK)
            {
                var errorMessage = $"Response status code does not indicate success: {(int)response.StatusCode} - Regions data not found";
                _logger.LogError(errorMessage);
                throw new HttpRequestContentException(errorMessage, response.StatusCode, response.ErrorContent);
            }
            var regions = response.Body;

            if (regions == null)
            {
                var message = "All Regions not found";
                _logger.LogError(message);
                throw new ValidationException(message);
            }

            _logger.LogInformation("Get Provider Course Locations request received for ukprn {ukprn} and larsCode {larsCode}", request.Ukprn, request.LarsCode);
            var providerCourseLocationsResponse = await _courseManagementApiClient.GetWithResponseCode <List <GetProviderCourseLocationsResponse> >(new GetProviderCourseLocationsRequest(request.Ukprn, request.LarsCode));

            if (providerCourseLocationsResponse.StatusCode != HttpStatusCode.OK)
            {
                var errorMessage =
                    $"Response status code does not indicate success: {(int)providerCourseLocationsResponse.StatusCode} - Provider Course Locations not found for ukprn: {request.Ukprn} LarsCode: {request.LarsCode}";
                _logger.LogError(errorMessage);
                throw new HttpRequestContentException(errorMessage, providerCourseLocationsResponse.StatusCode, providerCourseLocationsResponse.ErrorContent);
            }
            var providerCourseLocations = providerCourseLocationsResponse.Body;

            if (providerCourseLocations == null)
            {
                var message = $"Provider Course Locations found for ukprn {request.Ukprn} and LarsCode {request.LarsCode}";
                _logger.LogError(message);
                throw new ValidationException(message);
            }
            var subRegionCourseLocations = providerCourseLocations.Where(a => a.LocationType == LocationType.Regional).ToList();

            if (subRegionCourseLocations.Any())
            {
                foreach (var region in regions)
                {
                    region.IsSelected = subRegionCourseLocations.Exists(r => r.RegionId == region.Id);
                }
            }

            return(new GetAllStandardRegionsQueryResult
            {
                Regions = regions
            });
        }
        public async Task <GetProviderCourseLocationResult> Handle(GetProviderCourseLocationQuery request, CancellationToken cancellationToken)
        {
            _logger.LogInformation("Get Provider Course locations request received for ukprn {ukprn}, LarsCode {larsCode}", request.Ukprn, request.LarsCode);

            var providerCourseLocationsResponse = await _courseManagementApiClient.GetWithResponseCode <List <GetProviderCourseLocationsResponse> >(new GetProviderCourseLocationsRequest(request.Ukprn, request.LarsCode));

            if (providerCourseLocationsResponse.StatusCode != HttpStatusCode.OK)
            {
                var errorMessage =
                    $"Response status code does not indicate success: {(int)providerCourseLocationsResponse.StatusCode} - Provider Course locations not found for ukprn: {request.Ukprn} LarsCode: {request.LarsCode}";
                _logger.LogError(errorMessage);
                throw new HttpRequestContentException(errorMessage, providerCourseLocationsResponse.StatusCode, providerCourseLocationsResponse.ErrorContent);
            }
            var providerCourseLocations = providerCourseLocationsResponse.Body;

            var locations = providerCourseLocations.Where(a => a.LocationType == LocationType.Provider).Select(x => (ProviderCourseLocationModel)x).ToList();

            return(new GetProviderCourseLocationResult
            {
                ProviderCourseLocations = locations,
            });
        }