protected override async Task <FillDataFromServerCommandResponse> Execute(FillDataFromServerCommand request, CancellationToken cancellationToken) { var result = new FillDataFromServerCommandResponse(); if ((await _cryptoRepository.GetAll()).Count > 0) { return(result); } var data = await _coinMarketCapService.GetCryptoList(); foreach (var cryptoDto in data) { if (await _cryptoRepository.ExistsSymbol(cryptoDto.Symbol)) { continue; } await _cryptoRepository.Create(new CryptoCurrency(cryptoDto.Name, cryptoDto.Symbol, cryptoDto.Id)); result.TotalRecordAdded++; } await _cryptoRepository.UnitOfWork.Commit(cancellationToken); return(result); }
private IEnumerable <Currency> GetMergedCurrencyList() { if (!_mergedCurrencyList.Any()) { lock (_mergedCurrencyListLock) { if (!_mergedCurrencyList.Any()) { var fiatList = _fiatRepository.GetAll(); var cryptoList = _cryptoRepository.GetAll(); _mergedCurrencyList.AddRange(fiatList); _mergedCurrencyList.AddRange(cryptoList); } } } return(_mergedCurrencyList); }
public async Task CmcSaveCryptosData(List <Crypto> cryptos) { if (!_cryptoRepository.GetAll().Any()) { await _cryptoRepository.AddRange(cryptos); } else { foreach (var crypto in cryptos) { var cryptoToUpdate = _cryptoRepository.GetCryptoByIdCrypto(crypto.IdCrypto); if (cryptoToUpdate != null) { cryptoToUpdate.Price = crypto.Price; cryptoToUpdate.Change24h = crypto.Change24h; cryptoToUpdate.Change7d = crypto.Change7d; await _cryptoRepository.UpdateAsync(cryptoToUpdate); } } } }
public IActionResult UpdatePrices() { var cryptoList = _cryptoRepository.GetAll().ToList(); var walletList = _walletRepository.GetAll().ToList(); foreach (var cryptoWallet in walletList) { var crypto = cryptoList.Find(c => c.IdCrypto == cryptoWallet.IdCrypto); if (crypto != null) { cryptoWallet.Price = crypto.Price; cryptoWallet.Change24h = crypto.Change24h; cryptoWallet.Change7d = crypto.Change7d; } cryptoWallet.Change = _walletOperationsService.CalculateAlerts(cryptoWallet); _walletRepository.UpdateAsync(cryptoWallet); } return(Ok()); }
public IEnumerable <Crypto> GetAll() { return(_cryptoRepository.GetAll().OrderBy(c => c.Rank)); }