Exemplo n.º 1
0
        public void Load(object state)
        {
            // Загрузка данных с сервера
            WebRequest      request = WebRequest.Create(CB_REQUEST_URL);
            HttpWebResponse response;

            try
            {
                response = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException e)
            {
                response = (HttpWebResponse)e.Response;
            }

            if (response.StatusCode != HttpStatusCode.OK)
            {
                // Здесь может быть вывод в лог или оповещение об ошибке...
                return;
            }


            // Чтение данных
            Stream       stream = response.GetResponseStream();
            StreamReader sr     = new StreamReader(stream, Encoding.GetEncoding(response.CharacterSet));

            string readData = sr.ReadToEnd();

            JToken valute = JObject.Parse(readData)["Valute"];

            Currency[] currencies = valute.ToObject <Dictionary <string, Currency> >().Values.ToArray();


            // Добавление и обновление данных
            using (DbCurrencyContext context = new DbCurrencyContext())
            {
                foreach (Currency cur in currencies)
                {
                    if (context.Currencies.Any(e => e.ID == cur.ID))
                    {
                        context.Entry(cur).State = EntityState.Modified;
                    }
                    else
                    {
                        context.Entry(cur).State = EntityState.Added;
                    }
                }
                context.SaveChanges();
            }
        }
        public CurrenciesResponse Get(int page = 1)
        {
            using DbCurrencyContext db = new DbCurrencyContext();

            // количество записей на странице
            int pageSize = 5;

            IQueryable <Currency> src = db.Currencies;
            int cnt     = src.Count();                  // всего записей в таблице
            int pageCnt = cnt / pageSize;               // всего страниц

            if (cnt % pageSize != 0)
            {
                pageCnt++;
            }

            return(new CurrenciesResponse()
            {
                Count = cnt,
                Pages = pageCnt,
                CurrentPage = page,
                Valute = src.Skip((page - 1) * pageSize).Take(pageSize).ToList()
            });
        }
 public Currency GetById(string id = "R01235")
 {
     using DbCurrencyContext db = new DbCurrencyContext();
     return(db.Currencies.Find(id));
 }