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();
        }
示例#2
0
        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);
            }
        }