Ejemplo n.º 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
            });
        }
 public async Task <ApiResponse <GetStandardsLookupResponse> > Handle(GetStandardsLookupQuery request, CancellationToken cancellationToken)
 {
     _logger.LogInformation("Get all standards request received");
     return(await _coursesApiClient.GetWithResponseCode <GetStandardsLookupResponse>(new GetStandardsLookupRequest()));
 }