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