Пример #1
0
        public async Task <IActionResult> Get(int ukprn)
        {
            _log.LogDebug($"Fetching GET for ukprn: [{ukprn}]");

            if (ukprn.ToString().Length != 8)
            {
                _log.LogDebug($"Invalid UKPRN (must be 8 numbers): [{ukprn}]");
                return(BadRequest("Invalid UKPRN (should be 8 numbers long)"));
            }

            IEnumerable <RoatpResult> roatpResults;

            try
            {
                var result = _retryService.RetryPolicy($"<roatpService>//api/v1/download/roatp-summary/{ukprn}").ExecuteAsync(context => _apiClient.GetRoatpSummaryByUkprn(ukprn), new Context());
                roatpResults = result.Result;
            }
            catch (Exception ex)
            {
                _log.LogError($"Unable to retrieve results for roatp with ukprn [{ukprn}]", ex);
                roatpResults = new List <RoatpResult>();
            }

            var provider = _mapper.Map(roatpResults?.FirstOrDefault());

            if (provider == null || !provider.IsDateValid(DateTime.UtcNow))
            {
                _log.LogDebug($"Invalid UKPRN result for ukprn [{ukprn}]: not found or start date in future");
                return(NotFound("Provider not found or start date in future"));
            }
            provider.Uri = Resolve(provider.Ukprn);
            return(Ok(provider));
        }
        public async Task<List<RoatpProviderResult>> Handle(RoatpRequest message)
        {
            var roatpSummaries = await _apiClient.GetRoatpSummary();

            var records = _mapper.Map(roatpSummaries);

            _logger.Debug($"Retrieved {records.Count} providers on the ROATP list", new Dictionary<string, object> { { "TotalCount", records.Count } });
            var filtered = records.Where(x => _validProviderTypes.Contains(x.ProviderType) && x.IsDateValid()).ToList();
            _logger.Debug($"Filtered out Supporting providers on ROATP", new Dictionary<string, object> { { "TotalCount", filtered.Count } });
            return filtered;

        }
        public async Task <List <RoatpProvider> > GetRoatpSummary()
        {
            try
            {
                _httpClient.DefaultRequestHeaders.Authorization =
                    new AuthenticationHeaderValue("Bearer", _tokenService.GetToken());
                _log.Info("Gathering roatp details from API");
                var response = await _httpClient.GetAsync(downloadPath);

                var results = await response.Content.ReadAsAsync <List <RoatpResult> >();

                return(_mapper.Map(results));
            }
            catch (Exception e)
            {
                _log.Error(e, $"Error gathering roatp details from API: [{e.Message}]");
                throw;
            }
        }