Beispiel #1
0
        public async Task DataBaseSaveCurs_Ok_Test()
        {
            IConfiguration config = SU.GetConfiguration();

            ExchangeRatesDdContext dbContext = new ExchangeRatesDdContext(config, SU.GetLogger <ExchangeRatesDdContext>());
            DbWorker db = new DbWorker(config, SU.GetLogger <DbWorker>(), dbContext);

            Valute saveValute = new Valute()
            {
                CharCode = "TEST_1",
                Name     = "TEST_1",
                Nominal  = 10,
                Value    = 10.1m
            };

            bool result = await db.StoreCurrencyAsync(new ValCurs()
            {
                Date = DateTime.Today.AddYears(-100), Name = "TEST_0", Valute = new List <Valute>()
                {
                    saveValute
                }
            });

            Assert.True(result);

            IQueryable <ExchangeRates> restoreValute = dbContext.ExchangeRates.Where(valute => valute.Name == saveValute.Name &&
                                                                                     valute.Value == saveValute.Value &&
                                                                                     saveValute.Nominal == saveValute.Nominal);

            Assert.True(restoreValute.Any());

            dbContext.ExchangeRates.Remove(restoreValute.Single());
            dbContext.SaveChanges();
        }
        private ValCurs ParseXmlToValCurs(string xml)
        {
            ValCurs   result  = new ValCurs();
            XDocument srcTree = XDocument.Parse(xml);

            result.Date    = (string)srcTree.Element("ValCurs").Attribute("Date").Value;
            result.Name    = (string)srcTree.Element("ValCurs").Attribute("name").Value;
            result.Valutes = new List <Valute>();

            foreach (var item in srcTree.Descendants("Valute"))
            {
                Valute valute = new Valute();

                valute.ID       = (string)item.Attribute("ID").Value;
                valute.NumCode  = int.Parse(item.Element("NumCode").Value);
                valute.CharCode = (string)item.Element("CharCode").Value;
                valute.Nominal  = int.Parse(item.Element("Nominal").Value);
                valute.Name     = (string)item.Element("Name").Value;
                valute.Value    = (float)Convert.ToDouble(item.Element("Value").Value);

                result.Valutes.Add(valute);
            }

            return(result);
        }
        static public void Create_Vklad(Client client, Valute valute, Prog prog, decimal Sum, Schet Out, Bank bank)
        {
            Schet In = new Schet();

            In.Nschet    = 1;
            In.Data_sozd = DateTime.Now;
            In.Prog      = prog;
            In.Sum       = 0;
            In.ValuteID  = valute.ID;
            In.ClientID  = client.ID;
            In.Status    = true;
            bank.Schet.Add(In);
            bank.SaveChanges();
            Operacii operacii = new Operacii();

            operacii.ID             = 1;
            operacii.Date           = DateTime.Now;
            operacii.StatusID       = bank.Status.Where(i => i.Name == "Выполнена").FirstOrDefault().ID;
            operacii.OutID          = Out.Nschet;
            operacii.InID           = In.Nschet;
            operacii.Tip_operaziiID = bank.Tip_operacii.Where(i => i.Name == "Создание вклада").FirstOrDefault().ID;
            if (In.ValuteID == Out.ValuteID)
            {
                operacii.Sum_In = operacii.Sum_Out = Sum;
                Out.Sum        -= Sum;
                In.Sum         += Sum;
            }
            else
            {
                perevod(Out, In, Sum, bank, operacii);
            }

            bank.Operacii.Add(operacii);
            bank.SaveChanges();
        }
        public async Task UpdateCache(object valute = null, DateTime dateFrom = default(DateTime))
        {
            Valute val = valute as Valute;

            if (val == null)
            {
                throw new ArgumentNullException("valute");
            }
            try
            {
                var httpClient = new HttpClient();
                httpClient.Timeout = TimeSpan.FromSeconds(5);
                var uri = this.GenerateUri(val, dateFrom == default(DateTime) ? DateTime.Now.AddMonths(-1) : dateFrom, DateTime.Now);
                HttpResponseMessage response = await httpClient.GetAsync(uri).ConfigureAwait(false);

                var data = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false);

                await this.WriteFile(string.Concat(val.ID, dateFrom.ToString("_ddMMyyyy"), ".xml"), data).ConfigureAwait(false);

                if (CashUpdated != null)
                {
                    CashUpdated(this, null);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(string.Format("{0}{1}{2}", ex.Message, Environment.NewLine, ex.StackTrace));
            }
        }
Beispiel #5
0
        private FinancialQuote Cast(JsonElement jsonValute)
        {
            var id = jsonValute.GetProperty("ID").GetString();

            var valute = new Valute
            {
                ID       = id,
                Name     = jsonValute.GetProperty("Name").GetString(),
                CharCode = jsonValute.GetProperty("CharCode").GetString(),
                NumCode  = jsonValute.GetProperty("NumCode").GetString()
            };

            var quotation = new Quotation
            {
                ValuteID = id
            };

            if (jsonValute.GetProperty("Nominal").TryGetInt32(out var nominal))
            {
                quotation.Nominal = nominal;
            }

            if (jsonValute.GetProperty("Value").TryGetDecimal(out decimal value))
            {
                quotation.Value = value;
            }

            return(new FinancialQuote
            {
                Valute = valute,
                Quotation = quotation
            });
        }
Beispiel #6
0
 public ValuteBLL(Valute valute)
 {
     ID   = valute.ID;
     Name = valute.Name;
     Otnoshenie_k_rub_prod = valute.Otnoshenie_k_rub_prod;
     Otnoshenie_k_rub_pok  = valute.Otnoshenie_k_rub_pok;
 }
        public Valute GetCourse(DateTime date, string currencyCode)
        {
            DataSet ds = Cbr.GetCursOnDate(date);

            if (ds == null)
            {
                throw new ArgumentNullException("ds", "Сервис вернул null");
            }
            if (string.IsNullOrEmpty(currencyCode))
            {
                throw new ArgumentNullException("currencyCode", "currencyCode не может быть null");
            }
            DataTable dt = ds.Tables["ValuteCursOnDate"];

            DataRow[] rows = dt.Select(string.Format("VchCode=\'{0}\'", currencyCode));

            if (rows.Length > 0)
            {
                var valute = new Valute();
                if (decimal.TryParse(rows[0]["Vcurs"].ToString(), out decimal resultCourse) &&
                    (int.TryParse(rows[0]["Vnom"].ToString(), out int resultNominal)))
                {
                    valute.Curse   = resultCourse;
                    valute.Nominal = resultNominal;
                    valute.Name    = rows[0]["Vname"].ToString();
                    return(valute);
                }
                throw new InvalidCastException("От службы ожидалось значение курса валют.");
            }

            throw new KeyNotFoundException("Для заданной валюты не найден курс.");
        }
        private Uri GenerateUri(Valute valute, DateTime starDate, DateTime endDate)
        {
            var startString = starDate.ToString("dd'/'MM'/'yyyy");
            var endString   = endDate.ToString("dd'/'MM'/'yyyy");
            var query       = string.Format("date_req1={0}&date_req2={1}&VAL_NM_RQ={2}", startString, endString, valute.ID);

            return(new Uri("http://www.cbr.ru/scripts/XML_dynamic.asp?" + query));
        }
        public void UPD(Valute valute)
        {
            Valute v = db.Valute.Find(valute.ID);

            v.Name = valute.Name;
            v.Otnoshenie_k_rub_pok  = valute.Otnoshenie_k_rub_pok;
            v.Otnoshenie_k_rub_prod = valute.Otnoshenie_k_rub_prod;
        }
        public Task <QouteCurs> GetResponse(object valute = null, DateTime dateFrom = default(DateTime))
        {
            Valute val = valute as Valute;

            if (val == null)
            {
                throw new ArgumentNullException("valute");
            }
            return(this.GetValuteQoutesResponce(val, dateFrom));
        }
Beispiel #11
0
        private void View_SelectedHistory(object sender, EventArgs e)
        {
            checkHistory = true;

            MainView.Click_SelectedHistory(out _selectedHistoryItem);

            _selectedValueLeft   = _selectedHistoryItem.FirstValue;
            _selectedValuteRight = _selectedHistoryItem.SecondValute;
            _selectedValueRight  = _selectedHistoryItem.SecondValue;
            _selectedValuteLeft  = _selectedHistoryItem.FirstValute;

            checkHistory = false;
        }
Beispiel #12
0
 public ItemViewModel(Valute selectedItem, IRepositoryCache <QouteCurs> dataSource)
 {
     _selectedItem = selectedItem;
     _selectedDate = DateTime.Now.AddMonths(-1);
     _dataSource   = dataSource;
     _name         = selectedItem.Name;
     _charCode     = selectedItem.CharCode;
     _id           = selectedItem.ID;
     _nominal      = selectedItem.Nominal;
     _numCode      = selectedItem.NumCode;
     _value        = selectedItem.Value;
     this._dataSource.CashUpdated += _dataSource_CashUpdated;
     this.UpdateQoutesAsync();
 }
Beispiel #13
0
        static async Task Main(string[] args)
        {
            Console.WriteLine("Start!");

            Valute valute = new Valute(
                "R01820",
                "392",
                "JPY",
                100,
                "Японских иен",
                66.9191,
                66.5617);

            _valuteRepository.Add(valute);
        }
Beispiel #14
0
        public static void FeelBigTable()
        {
            string   uri  = string.Empty;
            DateTime date = DateTime.Now;

            using (SqlConnection connection = new SqlConnection(@"Data source = KYLAK-ПК;" + "Integrated security = true; Initial Catalog = ValuteTable"))
            {
                connection.Open();
                SqlCommand command = new SqlCommand();
                command.Connection = connection;

                while (date <= DateTime.Now)
                {
                    uri  = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=";
                    uri += date.ToShortDateString();
                    WebRequest req = WebRequest.Create(uri);
                    req.Timeout = int.MaxValue;
                    WebResponse response = req.GetResponse();
                    string      xml      = string.Empty;
                    using (Stream myReader = response.GetResponseStream())
                    {
                        using (StreamReader MyNewReader = new StreamReader(myReader))
                        {
                            xml = MyNewReader.ReadToEnd();
                        }
                    }
                    XDocument xdoc = XDocument.Parse(xml);
                    var       el   = xdoc.Element("ValCurs").Elements("Valute");
                    foreach (XElement Valute in el)
                    {
                        command.CommandText =
                            $@"
                           INSERT INTO dbo.ValuteTable1 (Nominal, Rate, CharCode, RateDate)
                               VALUES(
		                              {Valute.Element("Nominal").Value},
		                               {Valute.Element("Value").Value.Replace(",", ".")},
		                               '{Valute.Element("CharCode").Value}',
		                               '{date}'
	                                 )
                           ";
                        command.ExecuteNonQuery();
                    }
                    date = date.AddDays(1);
                }
                connection.Close();
            }
        }
Beispiel #15
0
        public static void InitDictionary()
        {
            string       uri     = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=";
            WebClient    client  = new WebClient();
            Encoding     win1251 = Encoding.GetEncoding("windows-1251");
            UTF8Encoding utf     = new UTF8Encoding();

            Byte[] encodedBytes = win1251.GetBytes(uri);
            uri = utf.GetString(encodedBytes);
            var       xml  = client.DownloadString(uri);
            XDocument xdoc = XDocument.Parse(xml);
            var       el   = xdoc.Element("ValCurs").Elements("Valute");

            if (!object.ReferenceEquals(el, null) && el.Count() > 0)
            {
                using (SqlConnection connection = new SqlConnection(@"Data source = KYLAK-ПК;" + "Integrated security = true; Initial Catalog = ValuteTable"))
                {
                    connection.Open();
                    SqlCommand command = new SqlCommand();
                    command.Connection = connection;
                    try
                    {
                        foreach (XElement Valute in el)
                        {
                            command.CommandText =
                                $@"
                            INSERT INTO dbo.Valute (ValuteId, ValuteName, CharCode)
                                VALUES(
		                        NEWID(),
		                        '{Valute.Element("Name").Value}',
		                        '{Valute.Element("CharCode").Value}'
	                                  )
                            ";
                            command.ExecuteNonQuery();
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message + ex.InnerException?.Message);
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
            }
        }
Beispiel #16
0
        public MainPresenter(IMainView mainView, IValutesService valutesService, ILoggerRecording lg)
        {
            logger       = lg;
            MainView     = mainView;
            _valutesLeft = new BindingList <Valute>
            {
                new Valute
                {
                    CharCode = "RUS",
                    Nominal  = 1,
                    Name     = "Российский рубль",
                    NumCode  = 0,
                    Value    = "1",
                }
            };
            MainView.ValueLeft  = 1.0;
            MainView.ValueRight = 1.0;


            this.valutesService = valutesService;
            var           valsLeft = valutesService.GetValutes("./Content/daily_utf8.xml");
            List <Valute> buf      = _valutesLeft.Union(valsLeft.Valutes).ToList();

            _valutesLeft  = new BindingList <Valute>(buf);;
            _valutesRight = new BindingList <Valute>(_valutesLeft);



            _selectedValuteLeft  = _valutesLeft[0];
            _selectedValuteRight = _valutesLeft[0];

            MainView.ListBoxValuteLeft_Add(_valutesLeft);
            MainView.ListBoxValuteRight_Add(_valutesRight);

            MainView.ListBoxHistory_Add(history.Histories);
            MainView.OpenChart           += View_OpenChart;
            MainView.OpenSum             += View_OpenSum;
            MainView.OpenEdit            += View_OpenEdit;
            MainView.SelectedValuteLeft  += View_SelectedValuteLeft;
            MainView.SelectedValuteRight += View_SelectedValuteRight;
            MainView.TextChangedLeft     += View_TextChangedLeft;
            MainView.TextChangedRight    += View_TextChangedRight;
            MainView.SelectedHistory     += View_SelectedHistory;
            logger.log("Открытие Программы");
            MainView.Show();
        }
Beispiel #17
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            Valute        selectValute  = (Valute)e.Parameter;
            ConvertResult convertResult = new ConvertResult();

            //если значение активной кнопки равно первой валюте - изменяем значение второй валюты
            if (Variables.activeButton == ChangeCurrency1.Name)
            {
                Currency1CharCode.Text   = selectValute.CharCode;
                Variables.currency1      = selectValute;
                Currency2.Text           = convertResult.Result(Currency1.Text, Currency2.Text, Variables.currency1, Variables.currency2);
                Currency1.SelectionStart = Currency1.Text.Length;
            }
            if (Variables.activeButton == ChangeCurrency2.Name)
            {
                Currency2CharCode.Text   = selectValute.CharCode;
                Variables.currency2      = selectValute; Currency1.Text = convertResult.Result(Currency2.Text, Currency1.Text, Variables.currency2, Variables.currency1);
                Currency2.SelectionStart = Currency2.Text.Length;
            }
        }
Beispiel #18
0
        public static Valute GetValute(string valuteId)
        {
            Valute valute = new Valute {
                Id = valuteId
            };

            if (valuteId != "RUB")
            {
                string  URI = "https://www.cbr-xml-daily.ru/daily_json.js";
                JObject o   = JObject.Parse(SendRequest.SendingRequest(URI));
                valute.Value   = (decimal)o.SelectToken($"Valute.{valuteId}.Value");
                valute.Nominal = (int)o.SelectToken($"Valute.{valuteId}.Nominal");
            }
            else
            {
                valute.Value   = 1;
                valute.Nominal = 1;
            }
            return(valute);
        }
        public async Task <QouteCurs> GetValuteQoutesResponce(Valute valute, DateTime dateFrom = default(DateTime))
        {
            try
            {
                var stream = await ReadFile(string.Concat(valute.ID, dateFrom.ToString("_ddMMyyyy"), ".xml")).ConfigureAwait(false);

                XmlReader xr         = XmlReader.Create(stream);
                var       serializer = new XmlSerializer(typeof(QouteCurs));
                return((QouteCurs)serializer.Deserialize(xr));
            }
            catch (FileNotFoundException fileNotFoundException)
            {
                this.UpdateCache(valute, dateFrom).ConfigureAwait(false);
                return(null);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(string.Format("{0}{1}{2}", ex.Message, Environment.NewLine, ex.StackTrace));
            }
            return(null);
        }
Beispiel #20
0
        public ActionResult TroskoviCreate(Troskovi tr)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    int id = int.Parse(TempData["id_rez"].ToString());
                    tr.id_rez = id;

                    // izračun iznos u domaćoj valuti
                    Valute  val = (from v in Db.Valute where v.id_val == tr.id_val select v).FirstOrDefault();
                    decimal par =
                        (from p in Db.vTecajna where p.sifra_valute == val.Sifra select p.koef_srednji).FirstOrDefault
                            ();
                    if (par == 0)
                    {
                        tr.IznosKM = tr.Iznos;
                    }
                    else
                    {
                        tr.IznosKM = par * tr.Iznos;
                    }

                    Db.Troskovi.AddObject(tr);
                    Db.SaveChanges();
                    TempData.Remove("user");
                    TempData.Remove("id_rez");
                    // slanje email obavijesti za odgovornu osobu u

                    return(RedirectToAction("ZapisnikPage", new { id = tr.id_rez }));
                }

                return(View(tr));
            }
            catch (Exception ex)
            {
                return(Error(ex.ToString()));
            }
        }
Beispiel #21
0
        private FinancialQuote GetRUB()
        {
            var valute = new Valute
            {
                ID       = string.Empty,
                Name     = "Российский рубль",
                CharCode = "RUB",
                NumCode  = string.Empty
            };

            var quotation = new Quotation
            {
                ValuteID = string.Empty,
                Nominal  = 1,
                Value    = 1
            };

            return(new FinancialQuote
            {
                Valute = valute,
                Quotation = quotation
            });
        }
Beispiel #22
0
        private async Task Initialize() // задаем первоначальные параметры
        {
            await Task.Delay(1000);     //Ожидание, чтобы покрутился экран заставки

            allValutes = new CBRDaily();
            allValutes = await allValutes.GetValutes(); // загружаем курс валют

            flag        = true;
            leftOrRight = "";

            LeftClickCommand = new RelayCommand(() => // если происходит выбор смены левой валюты, то "указатель" на валюту меняем соответвественно
            {
                leftOrRight = "L";
            });
            RightClickCommand = new RelayCommand(() =>
            {
                leftOrRight = "R";
            });

            // первоначальное отображение
            leftValute  = allValutes.Valute["RUB"];
            rightValute = allValutes.Valute["USD"];
        }
        static public void Create_Schet(Client client, Valute valute, Bank bank)
        {
            Schet schet = new Schet();

            schet.Nschet    = 1;
            schet.Data_sozd = DateTime.Now;
            schet.ProgID    = null;
            schet.Sum       = 0;
            schet.ValuteID  = valute.ID;
            schet.ClientID  = client.ID;
            schet.Status    = true;
            bank.Schet.Add(schet);
            bank.SaveChanges();
            Operacii operacii = new Operacii();

            bank.SaveChanges();
            operacii.ID             = 1;
            operacii.Date           = DateTime.Now;
            operacii.StatusID       = bank.Status.Where(i => i.Name == "Выполнена").FirstOrDefault().ID;
            operacii.OutID          = schet.Nschet;
            operacii.Tip_operaziiID = bank.Tip_operacii.Where(i => i.Name == "Создание счёта").FirstOrDefault().ID;
            bank.Operacii.Add(operacii);
            bank.SaveChanges();
        }
 public void ADD(Valute valute)
 {
     db.Valute.Add(valute);
 }
        public ExchangeRateInfo GetValute(ExchangeRateResponseData exchangeRateResponseData, Valute key)
        {
            var valuteKey = key.ToString("G");

            if (exchangeRateResponseData.Valute.ContainsKey(valuteKey))
            {
                return(exchangeRateResponseData.Valute[valuteKey]);
            }
            else
            {
                return(new ExchangeRateInfo());
            }
            //TODO писать в лог
        }
        static public void Create_Kredit(Schet schet, Prog prog, decimal Sum, Bank bank, Valute valute, int client)
        {
            bank.Prog.Add(prog);
            bank.SaveChanges();
            Schet schet1 = new Schet();

            schet1.ClientID  = client;
            schet1.Nschet    = 1;
            schet1.Data_sozd = DateTime.Now;
            schet1.ProgID    = prog.ID;
            schet1.Sum       = 0;
            schet1.Status    = false;
            schet1.ValuteID  = valute.ID;
            bank.Schet.Add(schet1);
            bank.SaveChanges();
            Operacii operacii = new Operacii();

            operacii.ID             = 1;
            operacii.Date           = DateTime.Now;
            operacii.StatusID       = bank.Status.Where(i => i.Name == "Ожидает выполнения").FirstOrDefault().ID;
            operacii.OutID          = schet1.Nschet;
            operacii.InID           = schet.Nschet;
            operacii.Tip_operaziiID = bank.Tip_operacii.Where(i => i.Name == "Создание кредита").FirstOrDefault().ID;
            operacii.Sum_In         = operacii.Sum_Out = Sum;
            bank.Operacii.Add(operacii);

            bank.SaveChanges();
        }
Beispiel #27
0
        public ActionResult Index()
        {
            //Инициализируем объекта типа XmlTextReader и
            //загружаем XML документ с сайта центрального банка
            XmlTextReader reader = new XmlTextReader("http://www.nbrb.by/Services/XmlExRates.aspx");
            //В эти переменные будем сохранять куски XML
            //с определенными валютами (Euro, USD)
            List <Valute> valutes = new List <Valute>();
            string        XML     = "";

            //Перебираем все узлы в загруженном документе
            while (reader.Read())
            {
                //Проверяем тип текущего узла
                switch (reader.NodeType)
                {
                //Если этого элемент Valute, то начинаем анализировать атрибуты
                case XmlNodeType.Element:

                    if (reader.Name == "Currency")
                    {
                        if (reader.HasAttributes)
                        {
                            //Метод передвигает указатель к следующему атрибуту
                            while (reader.MoveToNextAttribute())
                            {
                                if (reader.Name == "Id")
                                {
                                    reader.MoveToElement();
                                    XML = reader.ReadOuterXml();
                                    Valute v = new Valute();
                                    v.name     = GetName(XML);
                                    v.charCode = GetCharCode(XML);
                                    v.rate     = GetValue(XML);
                                    v.scale    = GetScale(XML);
                                    valutes.Add(v);
                                }
                            }
                        }
                    }

                    break;
                }
            }

            List <string> belvalutes = new List <string>();

            foreach (var valute in valutes)
            {
                string s = String.Format("За {3} {0}({1}): {2} BYN\n", valute.name, valute.charCode, Math.Round(valute.rate, 4), valute.scale);
                belvalutes.Add(s);
            }
            Valutes model = new Valutes();

            model.valutes = belvalutes;
            if (Session["sucsess"] == null)
            {
                Session["sucsess"] = "";
            }
            string a = Session["sucsess"].ToString();

            return(View(model));
        }