public async Task ImportLeaversJudiciaryPeopleAsync(DateTime fromDate) { var currentPage = 1; try { while (true) { _logger.LogInformation("ImportJudiciaryLeavers: Executing page {CurrentPage}", currentPage); var leavers = await _leaversClient.GetLeaversAsync(fromDate, currentPage); var leaversResult = leavers .Where(x => !string.IsNullOrEmpty(x.Id)) .ToList(); if (leaversResult.Count == 0) { _logger.LogWarning("ImportJudiciaryLeavers: No results from api for page: {CurrentPage}", currentPage); break; } var invalidCount = leavers.Count(x => string.IsNullOrEmpty(x.Id)); _logger.LogWarning($"ImportJudiciaryLeavers: No of leavers who are invalid '{invalidCount}' in page '{currentPage}'."); _logger.LogInformation($"ImportJudiciaryLeavers: Calling bookings API with '{leaversResult.Count}' leavers"); var response = await _bookingsApiClient.BulkJudiciaryLeaversAsync(leaversResult.Select(x => JudiciaryLeaverRequestMapper.MapTo(x))); response?.ErroredRequests.ForEach(x => _logger.LogError("ImportJudiciaryLeavers: {ErrorResponseMessage}", x.Message)); currentPage++; } } catch (Exception ex) { _logger.LogError(ex, "There was a problem importing judiciary leavers"); throw; } }