public async Task UpdateCurrenciesDictionary(Dictionary <string, Coin> dictionary)
        {
            #region GET
            string currencies = await client.GetStringAsync("http://apilayer.net/api/live?access_key=" + access_key + "&source=USD&format=1");

            if (names == "")
            {
                names = await client.GetStringAsync("http://apilayer.net/api/list?access_key=" + access_key + "&&format=1");
            }
            #endregion

            Console.WriteLine("in async");
            JObject currenciesJson = JObject.Parse(currencies);
            JObject namesJson      = JObject.Parse(names);
            dictionary.Clear();
            List <Coin> Currencies = new List <Coin>();

            foreach (var item in new List <string> {
                "AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTC", "BTN", "BWP", "BYN", "BYR", "BZD", "CAD", "CDF", "CHF", "CLF", "CLP", "CNY", "COP", "CRC", "CUC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GGP", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "IMP", "INR", "IQD", "IRR", "ISK", "JEP", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LTL", "LVL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SRD", "STD", "SVC", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VEF", "VND", "VUV", "WST", "XAF", "XAG", "XAU", "XCD", "XDR", "XOF", "XPF", "YER", "ZAR", "ZMK", "ZMW", "ZWL"
            })
            {
                string value = (((JObject)currenciesJson.GetValue("quotes")).GetValue("USD" + item)).ToString();
                string name  = (((JObject)namesJson.GetValue("currencies")).GetValue(item)).ToString();
                Coin   tmp   = new Coin(decimal.Parse(value, NumberStyles.Float), name, item);
                dictionary.Add(item, tmp);
                Currencies.Add(tmp);
            }

            using (DBmanager context = new DBmanager())
            {
                context.Coins.AddRange(Currencies);
                await context.SaveChangesAsync();
            }
        }
        public List <HistoricalCoin>[] LoadTwoCoinsData(string firstCoin, string secondCoin, DateTime start, DateTime end)
        {
            List <HistoricalCoin>[] query = new List <HistoricalCoin> [2];

            using (DBmanager ctx = new DBmanager())
            {
                query[0] = ctx.HistoricalCoins.Where(s => s.ShortName == firstCoin && s.DateTime >= start && s.DateTime <= end).ToList <HistoricalCoin>();
                query[1] = ctx.HistoricalCoins.Where(s => s.ShortName == secondCoin && s.DateTime >= start && s.DateTime <= end).ToList <HistoricalCoin>();
            }

            DateTime current = start;
            Dictionary <string, HistoricalCoin> dictionary = new Dictionary <string, HistoricalCoin>();

            for (; current <= end; current = current.AddDays(1))
            {
                if (query[0].Find(x => x.DateTime == current) != null)
                {
                    continue;
                }
                else
                {
                    GetCurrenciesDictionaryByDate(dictionary, current).Wait();
                    query[0].Add(dictionary[firstCoin]);
                    query[1].Add(dictionary[secondCoin]);
                }
            }
            return(query);
        }
        public List <HistoricalCoin> LoadSpecificCoinData(string CoinName)
        {
            DBmanager             ctx   = new DBmanager();
            List <HistoricalCoin> query = ctx.HistoricalCoins.Where(s => s.ShortName == CoinName).ToList <HistoricalCoin>();

            return(query);
        }
        public List <HistoricalCoin>[] LoadTwoCoinsData(string firstCoin, string secondCoin)
        {
            List <HistoricalCoin>[] query = new List <HistoricalCoin> [2];

            using (DBmanager ctx = new DBmanager())
            {
                query[0] = ctx.HistoricalCoins.Where(s => s.ShortName == firstCoin).ToList <HistoricalCoin>();
                query[1] = ctx.HistoricalCoins.Where(s => s.ShortName == secondCoin).ToList <HistoricalCoin>();
            }
            return(query);
        }
        public async Task LoadLiveCurrencies(List <Coin> coins)
        {
            using (var ctx = new DBmanager())
            {
                List <Coin> list = await ctx.Coins.ToListAsync();

                foreach (var item in list)
                {
                    coins.Add(item);
                }
            }
        }
        public async Task GetCurrenciesDictionaryByDate(Dictionary <string, HistoricalCoin> dictionary, DateTime dateTime)
        {
            try
            {
                string date = correctDate(dateTime);

                #region Check if record already exist

                using (var ctx = new DBmanager())
                {
                    var query = ctx.HistoricalCoins.Where(s => s.DateTime.Equals(dateTime)).FirstOrDefault <HistoricalCoin>();
                    if (query != null)
                    {
                        Console.WriteLine("this record is already exist");
                        return;
                    }
                }

                #endregion

                #region GET
                string responseString = await client.GetStringAsync("http://apilayer.net/api/historical?access_key=" + access_key + "&date=" + date + "&source=USD&format=1");

                if (names == "")
                {
                    names = await client.GetStringAsync("http://apilayer.net/api/list?access_key=" + access_key + "&&format=1");
                }
                #endregion

                Console.WriteLine("in async");
                JObject jObject   = JObject.Parse(responseString);
                JObject namesJson = JObject.Parse(names);
                dictionary.Clear();
                List <HistoricalCoin> Currencies = new List <HistoricalCoin>();
                string timestamp = (((JObject)jObject).GetValue("timestamp")).ToString();

                foreach (var item in new List <string> {
                    "AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTC", "BTN", "BWP", "BYN", "BYR", "BZD", "CAD", "CDF", "CHF", "CLF", "CLP", "CNY", "COP", "CRC", "CUC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GGP", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "IMP", "INR", "IQD", "IRR", "ISK", "JEP", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LTL", "LVL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SRD", "STD", "SVC", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VEF", "VND", "VUV", "WST", "XAF", "XAG", "XAU", "XCD", "XDR", "XOF", "XPF", "YER", "ZAR", "ZMK", "ZMW", "ZWL"
                })
                {
                    string name = (((JObject)namesJson.GetValue("currencies")).GetValue(item)).ToString();
                    try
                    {
                        string         value = (((JObject)jObject.GetValue("quotes")).GetValue("USD" + item)).ToString();
                        HistoricalCoin tmp   = new HistoricalCoin(decimal.Parse(value, NumberStyles.Float), name, item, dateTime);
                        dictionary.Add(item, tmp);
                        Currencies.Add(tmp);
                    }
                    catch (Exception)
                    {
                        dictionary.Add(item, new HistoricalCoin(-1, name, item, dateTime));
                    }
                }

                using (DBmanager context = new DBmanager())
                {
                    context.HistoricalCoins.AddRange(Currencies);
                    await context.SaveChangesAsync();
                }

                Console.WriteLine("this record added succesfully exist:    " + date);
                Console.WriteLine(DateTime.Now);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }