Example #1
0
        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);
        }
Example #2
0
        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());
        }
Example #5
0
 public IEnumerable <Crypto> GetAll()
 {
     return(_cryptoRepository.GetAll().OrderBy(c => c.Rank));
 }