public async Task DoWorkAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { //Default countries var result = await _dbCountry.GetAllAsync(); if (!result.Any()) { var countriesInfo = await _client.GetCountryInfoByRegion(CountryRegions.Europe); var countries = countriesInfo .Where(x => !string.IsNullOrEmpty(x.Code) && string.IsNullOrEmpty(x.Name)) .Select(x => new Country() { Code = x.Code, Name = x.Name }).ToList(); countriesInfo = await _client.GetCountryInfoByRegion(CountryRegions.Americas); countries.AddRange(countriesInfo .Select(x => new Country() { Code = x.Code, Name = x.Name })); await _dbCountry.AddRangeAsync(countries); } //Dealers var dealers = await _dbDealer.GetAllAsync(); if (!dealers.Any()) { var dealersInfo = await _client.GetAllCarDealersAsync(); await SetDealerAsync(dealersInfo.ToList()); int rowCount = dealers.Count; var dealersAmount = Convert.ToInt32(_keeper.GetVariableByKey("DealerContainerCounter")); var circlesValues = Convert.ToInt32(Math.Round(dealersAmount / (decimal)rowCount, MidpointRounding.AwayFromZero)); //for (int i = 1; i < circlesValues; i++) for (int i = 1; i < 2; i++) { dealersInfo = await _client.GetAllCarDealersAsync(rowCount *i + 1); await SetDealerAsync(dealersInfo.ToList()); } } //Cars var cars = await _dbCar.GetAllAsync(); if (!cars.Any()) { dealers = await _dbDealer.GetAllAsync(); foreach (var dealer in dealers) { var carsInfoList = await _client.GetActiveCarAsync(dealer.NativeId); await SetCarAsync(dealer, carsInfoList.ToList()); } } //VinHistory var histories = await _dbCarHistory.GetAllAsync(); if (!histories.Any()) { cars = await _dbCar.GetAllAsync(); dealers = await _dbDealer.GetAllAsync(); foreach (var car in cars) { var carsInfoList = await _client.GetCarHistoryByVinCodeAsync(car.VinCode); await SetCarHistoryAsync(car, dealers, carsInfoList.ToList()); } } await Task.Delay(TimeSpan.FromDays(1)); } }