public async Task <(List <CurrencyNameDTO>, List <CurrencyNameDTO>)> GetListCurrencyNames(string urlCurrencies, string urlExchangeRate)
        {
            CoinloreCurrenciesDTO currencyObject = await GetDataCurrencies(urlCurrencies);

            CoinloreExchangeRateDTO exchangeRateObject = await GetDataExchangeRate(urlExchangeRate);

            if (exchangeRateObject.Pairs.Count > 0)
            {
                var currenciesReplacement = FilterReplacement(currencyObject, exchangeRateObject);

                var currenciesApplied = FilterApplied(currenciesReplacement, currencyObject, exchangeRateObject);

                return(currenciesApplied, currenciesReplacement);
            }
            return(null, null);
        }
        public CurrencyNameDTO SetCurrencyName(CurrencyNameDTO data, CoinloreCurrenciesDTO currencies)
        {
            foreach (var currency in currencies.Data)
            {
                if (!(data.Name is null))
                {
                    break;
                }

                if (data.Symbol == currency.Symbol)
                {
                    data.Name = currency.Name;
                }

                if (ValidSymbols(data.Symbol))
                {
                    data.Name = ReservedSymbols(data.Symbol);
                }
            }
            return(data);
        }
        public List <CurrencyNameDTO> FilterReplacement(CoinloreCurrenciesDTO currencies, CoinloreExchangeRateDTO exchanges)
        {
            var result = new List <CurrencyNameDTO>();

            exchanges.Pairs.ForEach(pair =>
            {
                if (!result.Any(currency => currency.Symbol == pair.Quote))
                {
                    if (!(pair.Quote is null))
                    {
                        result.Add(new CurrencyNameDTO()
                        {
                            Symbol = pair.Quote
                        });
                    }
                }
            });

            result.ForEach(data => { data = SetCurrencyName(data, currencies); });

            return(result);
        }
        public List <CurrencyNameDTO> FilterApplied(List <CurrencyNameDTO> data, CoinloreCurrenciesDTO currencies, CoinloreExchangeRateDTO exchanges)
        {
            var initial = new List <CurrencyNameDTO>();
            var result  = new List <CurrencyNameDTO>();

            exchanges.Pairs.ForEach(pair =>
            {
                if (!initial.Any(currency => currency.Symbol == pair.Base))
                {
                    if (!(pair.Base is null) && InvalidSymbols(pair.Base))
                    {
                        initial.Add(new CurrencyNameDTO()
                        {
                            Symbol = pair.Base
                        });
                    }
                }
            });

            result = ValidationApplied(initial, data, exchanges);
            result.ForEach(data => { data = SetCurrencyName(data, currencies); });

            return(result);
        }