public ActionResult Currency(FormCollection collection) { decimal rate = 0; var sRate = ""; if (collection["CurrencyRate"].IsNullOrEmpty()) { sRate = new CBRF.DailyInfoSoapClient().GetCursOnDate(DateTime.Now).Tables[0].Rows.Cast <DataRow>() .First(x => x[4].ToString() == "EUR")[2].ToString(); } else { sRate = collection["CurrencyRate"].Replace(".", ","); } decimal.TryParse(sRate, out rate); if (rate == 0) { rate = (decimal) new CBRF.DailyInfoSoapClient().GetCursOnDate(DateTime.Now).Tables[0].Rows.Cast <DataRow>() .First(x => x[4].ToString() == "EUR")[2]; } SiteSetting.Set("AutoCurrencyRate", collection["AutoCurrencyRate"].ToBool()); SiteSetting.Set("CurrencyRate", rate); ViewBag.AutoCurrencyRate = SiteSetting.Get <bool>("AutoCurrencyRate"); ViewBag.TitleBlock = "Курс валюты"; ViewBag.CurrencyRate = rate; ModelState.AddModelError("", "Данные сохранены"); return(View()); }
private void StartFunction() { while (isWorking) { DynamicValuteCollection dynamicVals = new DynamicValuteCollection(); List <DayCursePairs> pointList = new List <DayCursePairs>(); DBMethods toLoad = new DBMethods(_constr); try { EndpointAddress ea = new EndpointAddress("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL"); BasicHttpBinding bin = new BasicHttpBinding(); var tmp = new CBRF.DailyInfoSoapClient(bin, ea); tmp.Open(); DateTime lastLoad; try { lastLoad = tmp.GetLatestDateTime(); } catch (Exception e) { lastLoad = DateTime.Now; logger("Ошибка", e.ToString()); } //lastLoad - дата на сервере ЦБРФ. lastUpdate - дата обновления на компьютере TimeSpan ts = lastLoad - lastUpdate; int differenceInDays = ts.Days; if ((differenceInDays <= 0)) { lastUpdate = lastLoad; logger("Инфо", "Информация в БД актуальна. На " + lastLoad); tmp.Close(); } else { var c1 = tmp.EnumValutesXML(false).OuterXml; using (TextReader _tmp = new StringReader(c1)) { XmlSerializer serializer2 = new XmlSerializer(typeof(EnumValuteCollection)); enumValute = (EnumValuteCollection) serializer2.Deserialize(_tmp); } for (int i = 0; i < enumValute.ValsList.Count(); i++) { if (!codesList.ContainsKey(enumValute.ValsList[i].Vname.Trim()) && (enumValute.ValsList[i].Vname != null) && (enumValute.ValsList[i].Vcode != null)) { codesList.Add(enumValute.ValsList[i].Vname.Trim(), enumValute.ValsList[i].Vcode.Trim()); } if ((enumValute.ValsList[i].Vcode.Trim() == "R01035") || (enumValute.ValsList[i].Vcode.Trim() == "R01095") || (enumValute.ValsList[i].Vcode.Trim() == "R01235") || (enumValute.ValsList[i].Vcode.Trim() == "R01239") || (enumValute.ValsList[i].Vcode.Trim() == "R01375") || (enumValute.ValsList[i].Vcode.Trim() == "R01770")) { try { toLoad.CreateEnumValute(enumValute.ValsList, @"C:\Users\Yusupov.V\Desktop\ValutesService\ValutesService\Images\" + enumValute.ValsList[i].Vcode + ".png"); } catch (Exception e) { logger("Ошибка", e.ToString()); } } else { try { toLoad.CreateEnumValute(enumValute.ValsList); } catch (Exception e) { logger("Ошибка", e.ToString()); } } } //Название-Код foreach (string valCode in codesList.Keys) { string dynCurse = ""; try { dynCurse = tmp.GetCursDynamicXML(lastUpdate, lastLoad, codesList[valCode]).OuterXml; } catch (Exception e) { logger("Ошибка", e.ToString()); //throw; } using (TextReader _tmp = new StringReader(dynCurse)) { XmlSerializer serializer2 = new XmlSerializer(typeof(DynamicValuteCollection)); dynamicVals = (DynamicValuteCollection) serializer2.Deserialize(_tmp); _tmp.Dispose(); } if (dynamicVals.ValsList != null) { for (int i = 0; i < dynamicVals.ValsList.Count(); i++) { DateTime tmp1 = DateTime.Parse(dynamicVals.ValsList[i].CursDate); dynamicVals.ValsList[i].CursDate = tmp1.ToString(@"dd.MM.yyyy"); pointList.Add(new DayCursePairs(dynamicVals.ValsList[i].CursDate, dynamicVals.ValsList[i].Vcurs)); } toLoad.AddCurse(valCode, pointList); } pointList = new List <DayCursePairs>(); } logger("Инфо", "Информация обновлена"); lastUpdate = lastLoad; } tmp.Close(); } catch (Exception e) { logger("Ошибка", e.ToString()); } finally { } Thread.Sleep(timeOut); } }