Пример #1
0
        //Parsing XML data to object (type Rates)
        public IEnumerable <Rates> ParsingData(bool latest)
        {
            DataFile            DataXml = new DataFile();
            Rates               DataRates;
            IEnumerable <Rates> ListDataRates = Enumerable.Empty <Rates>();;

            if (latest == true)
            {
                DataXml = DataXml.XmlToDataFile();
            }
            else
            {
                DataXml = DataXml.XmlToDataFileHistory();
            }

            for (int j = 0; j < DataXml.CubeRootEl.Count(); j++)
            {
                var time = DataXml.CubeRootEl.ElementAtOrDefault(j).Time;
                IEnumerable <Rates.Currency> currencies = Enumerable.Empty <Rates.Currency>();
                for (int i = 0; i < DataXml.CubeRootEl.ElementAtOrDefault(j).CubeItems.Count(); i++)
                {
                    Rates.Currency currency = new Rates.Currency();
                    currency.Name = DataXml.CubeRootEl.ElementAtOrDefault(j).CubeItems.ElementAtOrDefault(i).Currency;
                    currency.Rate = DataXml.CubeRootEl.ElementAtOrDefault(j).CubeItems.ElementAtOrDefault(i).Rate;

                    currencies = currencies.Append(currency);
                }

                DataRates     = new Rates(time, currencies);
                ListDataRates = ListDataRates.Append(DataRates);
            }
            return(ListDataRates);
        }
Пример #2
0
        //Filtering exchange rates records to get specific currencies
        public IEnumerable <Rates> FindRates(IEnumerable <Rates> listdatarates, string symbols)
        {
            if (symbols != null)
            {
                var symbolss = symbols.Split(',');


                IEnumerable <Rates> Listdatarates = Enumerable.Empty <Rates>();

                for (int a = 0; a < listdatarates.Count(); a++)
                {
                    Rates datarates = new Rates();
                    Rates newrates  = new Rates();
                    datarates = listdatarates.ElementAtOrDefault(a);
                    IEnumerable <Rates.Currency> currencies = Enumerable.Empty <Rates.Currency>();
                    for (int i = 0; i < datarates.Currencies.Count(); i++)
                    {
                        for (int j = 0; j < symbolss.Length; j++)
                        {
                            if (datarates.Currencies.ElementAtOrDefault(i).Name == symbolss[j])
                            {
                                Rates.Currency currency = new Rates.Currency();

                                currency.Name = datarates.Currencies.ElementAtOrDefault(i).Name;
                                currency.Rate = datarates.Currencies.ElementAtOrDefault(i).Rate;
                                currencies    = currencies.Append(currency);
                            }
                        }
                    }
                    newrates      = new Rates(datarates.Base, datarates.Time, currencies);
                    Listdatarates = Listdatarates.Append(newrates);
                }
                for (int i = 0; i < Listdatarates.Count(); i++)
                {
                    if (Listdatarates.ElementAtOrDefault(i).Currencies.Count() != symbolss.Length)
                    {
                        throw new Exception($"Symbols '{symbols}' are invalid. Maybe they are lowercase or not supported. Carefull with whitespaces between symbols.");
                    }
                }

                return(Listdatarates);
            }
            else
            {
                return(listdatarates);
            }
        }