Example #1
0
        public async Task GetAllExchangesAndPairs()
        {
            var result = await _gateway.AllExchangePairs();

            Assert.True(result.IsSuccess);
            Assert.NotEmpty(result.Content);
            Assert.True(result.Content.Exists(e => e.Pairs.Count > 0));
        }
Example #2
0
        public async Task ImportAllExchangePairs()
        {
            var result = await _cryptoCompareGateway.AllExchangePairs();

            List <ExchangePairsDTO> exchangePairsDTOs = result?.Content;
            List <Exchange>         exchanges         = _coreDBContext.Exchanges.AsEnumerable().Where(e => exchangePairsDTOs?.Exists(d => d.Name == e.Name) == true).ToList();
            List <Currency>         currencies        = await _coreDBContext.Currencies.ToListAsync();

            List <ExchangePair> exchangePairs = new List <ExchangePair>();

            if (exchangePairsDTOs?.Any() == true)
            {
                foreach (var exchangeDto in exchangePairsDTOs)
                {
                    Exchange exchange = exchanges?.FirstOrDefault(e => e.Name == exchangeDto.Name);
                    if (exchange != null)
                    {
                        foreach (var pair in exchangeDto.Pairs)
                        {
                            Currency currencyFrom = currencies?.FirstOrDefault(c => c.Symbol == pair.CurrencyFrom);
                            Currency currencyTo   = currencies?.FirstOrDefault(c => c.Symbol == pair.CurrencyTo);
                            if (currencyFrom != null && currencyTo != null)
                            {
                                var exchangePair = new ExchangePair
                                {
                                    ExchangeId     = exchange.Id,
                                    CurrencyFromId = currencyFrom.Id,
                                    CurrencyToId   = currencyTo.Id,
                                };
                                exchangePairs.Add(exchangePair);
                            }
                        }
                    }
                }
            }

            if (exchangePairs.Any())
            {
                await _coreDBContext.AddRangeAsync(exchangePairs);

                await _coreDBContext.SaveChangesAsync();
            }
        }