public async Task ImportJudiciaryPeopleAsync(DateTime fromDate)
        {
            var currentPage = 1;

            try
            {
                while (true)
                {
                    _logger.LogInformation("ImportJudiciaryPeople: executing page {CurrentPage}", currentPage);

                    var peopleResult = (await _eLinksApiClient.GetPeopleAsync(fromDate, currentPage))
                                       .Where(x => x.Id.HasValue)
                                       .ToList();

                    if (!peopleResult.Any())
                    {
                        _logger.LogWarning("ImportJudiciaryPeople: No results from api for page: {CurrentPage}", currentPage);
                        break;
                    }

                    _logger.LogInformation("ImportJudiciaryPeople: Calling bookings API with {PeopleResultCount} people", peopleResult.Count);
                    var response = await _bookingsApiClient.BulkJudiciaryPersonsAsync(peopleResult.Select(JudiciaryPersonRequestMapper.MapTo));

                    response?.ErroredRequests.ForEach(x => _logger.LogError("ImportJudiciaryPeople: {ErrorResponseMessage}", x.Message));

                    currentPage++;
                    await Task.Delay(250);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                throw;
            }
        }
예제 #2
0
        public async Task ImportJudiciaryPeopleAsync(DateTime fromDate)
        {
            _logger.LogInformation("ImportJudiciaryPeople: using stub");
            var peopleResult = RetrieveManualAccounts().Concat(RetrieveAutomationAccounts()).ToList();

            _logger.LogInformation("ImportJudiciaryPeople: Calling bookings API with {PeopleResultCount} people",
                                   peopleResult.Count);
            var mapped   = peopleResult.Select(JudiciaryPersonRequestMapper.MapTo);
            var response = await _bookingsApiClient.BulkJudiciaryPersonsAsync(mapped);

            response?.ErroredRequests.ForEach(x =>
                                              _logger.LogError("ImportJudiciaryPeople: {ErrorResponseMessage}", x.Message));
        }
예제 #3
0
        public async Task ImportJudiciaryPeopleAsync(DateTime fromDate)
        {
            var currentPage = 1;

            try
            {
                while (true)
                {
                    _logger.LogInformation("ImportJudiciaryPeople: Executing page {CurrentPage}", currentPage);
                    var people = await _peoplesClient.GetPeopleAsync(fromDate, currentPage);

                    var peopleResult = people
                                       .Where(x => x.Id.HasValue)
                                       .ToList();

                    if (peopleResult.Count == 0)
                    {
                        _logger.LogWarning("ImportJudiciaryPeople: No results from api for page: {CurrentPage}", currentPage);
                        break;
                    }
                    var invalidCount = people.Count(x => !x.Id.HasValue);
                    _logger.LogWarning($"ImportJudiciaryPeople: No of people who are invalid '{invalidCount}' in page '{currentPage}'.");
                    _logger.LogInformation($"ImportJudiciaryPeople: Calling bookings API with '{peopleResult.Count}' people");
                    var response = await _bookingsApiClient.BulkJudiciaryPersonsAsync(peopleResult.Select(JudiciaryPersonRequestMapper.MapTo));

                    response?.ErroredRequests.ForEach(x => _logger.LogError("ImportJudiciaryPeople: {ErrorResponseMessage}", x.Message));

                    currentPage++;
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "There was a problem importing judiciary people");
                throw;
            }
        }