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());
        }
Exemple #2
0
        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);
            }
        }