public async Task InitializeCurrencies() { var defaultCantorWallet = initializeCurrenciesFactory.CreateDefaultCantorWallet(); await cantorWalletRepository.AddAsync(defaultCantorWallet); var defaultCurrencies = initializeCurrenciesFactory.CreateDefaultCurrencies(); await currencyRepository.AddRangeAsync(defaultCurrencies); var defaultCantorCurrencies = initializeCurrenciesFactory.CreateDefaultCantorCurrencies(defaultCantorWallet, defaultCurrencies); await cantorCurrencyRepository.AddRangeAsync(defaultCantorCurrencies); await unitOfWork.SaveAsync(); }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { _logger.LogInformation("Сервис получения данных о курсах валют выполняет очередной запрос"); var data = _downloader.DownloadString(_configuration.GetValue <string>("CbrFileUrl")); _logger.LogInformation("Данные загружены успешно"); IEnumerable <Currency> currencies = _parser.Parse(data); _logger.LogInformation("Парсинг данных прошел успешно"); var allCurrencies = await _repository.GetAllAsync(); _logger.LogInformation("Обращение к репозиторию прошло успешно"); if (allCurrencies.Any()) { _logger.LogInformation("Обновление данных в репозитории"); _repository.UpdateRange(currencies); } else { _logger.LogInformation("Добавление данных в репозиторий"); await _repository.AddRangeAsync(currencies); } _logger.LogInformation("Сохранение изменений в репозитории"); await _repository.SaveChangesAsync(); _logger.LogInformation("Сохранение прошло успешно, сервис отработал успешно"); await Task.Delay(3600000, stoppingToken); } }