/// <summary>
 /// Получить список кодов валют
 /// </summary>
 /// <returns></returns>
 public List <CurrencyFromDate> GetEnumCurrencies()
 {
     try
     {
         List <CurrencyFromDate> result        = new List <CurrencyFromDate>();
         List <string>           vName         = new List <string>();
         List <string>           vCode         = new List <string>();
         DailyInfoSoapClient     RatesCBR_Data = new DailyInfoSoapClient();
         XmlNode data = RatesCBR_Data.EnumValutesXML(false); //получаем данные с веб-сервиса http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx
         foreach (XmlNode valute in data)
         {
             result.Add(new CurrencyFromDate()
             {
                 CurrencyName = valute["Vname"].InnerText.TrimEnd(),
                 CurrencyCode = valute["Vcode"].InnerText.TrimEnd(),
             });
         }
         return(result);
     }
     catch (Exception e)
     {
         string MethodName = MethodBase.GetCurrentMethod().ToString();
         WriteLog(e.Message, MethodName);
         return(null);
     }
 }
Example #2
0
        /// <summary>
        /// Заполнение gridCurrency курсами валют
        /// </summary>
        /// <returns></returns>
        private DataTable GetExcahngeRate()
        {
            try
            {
                var       client    = new DailyInfoSoapClient();
                DataSet   response  = client.GetCursOnDate(dtCource.DateTime); // Загрузка данных из сервиса ЦБ на дату
                DataTable rateTable = response.Tables["ValuteCursOnDate"];     // Таблица с данными из сервиса ЦБ
                rateTable.Select().ToList <DataRow>()
                .ForEach(r => { r["Vname"] = r["Vname"].ToString().Trim(); }); // Убираем пробелы в конце строки

                gridCurrency.DataSource = rateTable;                           // Источник данных грида

                // Наименования колонок
                gridViewCurrency.Columns["Vname"].Caption   = "Наименование валюты";
                gridViewCurrency.Columns["Vnom"].Caption    = "Номинал";
                gridViewCurrency.Columns["Vcurs"].Caption   = "Курс";
                gridViewCurrency.Columns["Vcode"].Caption   = "ISO Цифровой код валюты";
                gridViewCurrency.Columns["VchCode"].Caption = "ISO Символьный код валюты";

                gridViewCurrency.BestFitColumns(); // Автоширина колонок по макс.длинне значения
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка получения курсов валют. " + ex.Message);
            }

            return(null);
        }
 /// <summary>
 /// Получить курс валют на сегодняшний день
 /// </summary>
 /// <returns></returns>
 public List <Currency> GetCursOnDate()
 {
     try
     {
         List <Currency>     result        = new List <Currency>();
         DailyInfoSoapClient RatesCBR_Data = new DailyInfoSoapClient();
         XmlNode             data          = RatesCBR_Data.GetCursOnDateXML(DateTime.Now); //получаем данные с веб-сервиса http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx
         foreach (XmlNode valute in data)
         {
             result.Add(new Currency() //заполняем список данными из запроса
             {
                 CurrencyName       = valute["Vname"].InnerText,
                 CurrencyStringCode = valute["VchCode"].InnerText,
                 Nominal            = Convert.ToInt32(valute["Vnom"].InnerText),
                 ExchangeRate       = valute["Vcurs"].InnerText,
             });
         }
         return(result);
     }
     catch (Exception e)
     {
         string MethodName = MethodBase.GetCurrentMethod().ToString();
         WriteLog(e.Message, MethodName);
         return(null);
     }
 }
 /// <summary>
 /// Получить динамику выбранной валюты по дате
 /// </summary>
 /// <param name="startDate"></param>
 /// <param name="endTime"></param>
 /// <param name="currencyCode"></param>
 /// <returns></returns>
 public List <DynamicCurrency> GetCursDynamic(DateTime startDate, DateTime endDate, string currencyCode)
 {
     try
     {
         List <DynamicCurrency> result        = new List <DynamicCurrency>();
         DailyInfoSoapClient    RatesCBR_Data = new DailyInfoSoapClient();
         XmlNode data = RatesCBR_Data.GetCursDynamicXML(startDate, endDate, currencyCode); //получаем данные с веб-сервиса http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx
         foreach (XmlNode valute in data)
         {
             result.Add(new DynamicCurrency()
             {
                 RatesDate    = Convert.ToDateTime(valute["CursDate"].InnerText),
                 Nominal      = Convert.ToInt32(valute["Vnom"].InnerText),
                 ExchangeRate = valute["Vcurs"].InnerText,
             });
         }
         return(result);
     }
     catch (Exception e)
     {
         string MethodName = MethodBase.GetCurrentMethod().ToString();
         WriteLog(e.Message, MethodName);
         return(null);
     }
 }
Example #5
0
        public Task <IBankResult> GetRateAsync(string currency, DateTime date)
        {
            IBankResult bankResult = new BankResult()
            {
                ExchangeRate = -1m,
                RateDate     = date,
                HomeCurrency = homeCurrency,
                BankName     = bankName
            };

            BasicHttpBinding binding         = new BasicHttpBinding();
            EndpointAddress  endPointAddress = new EndpointAddress("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx");
            DailyInfoSoap    client          = new DailyInfoSoapClient(binding, endPointAddress);

            Task <DataSet> fxRates = client.GetCursOnDateAsync(date);

            fxRates.Wait();
            DataTable table = fxRates.Result.Tables["ValuteCursOnDate"];

            string filterExpression = $"VchCode = '{currency}'";

            DataRow[] rows = table.Select(filterExpression);

            decimal.TryParse(rows[0]["Vnom"].ToString(), out decimal multiplier);
            decimal.TryParse(rows[0]["Vcurs"].ToString(), out decimal rate);
            decimal fxRate = rate / multiplier;

            bankResult.ExchangeRate = fxRate;

            return(Task.FromResult(bankResult));
        }
Example #6
0
        private static DailyInfoSoapClient CreateDailyInfoSoapClient()
        {
            var soapClient = new DailyInfoSoapClient(
                endpointConfiguration: DailyInfoSoapClient.EndpointConfiguration.DailyInfoSoap
                );

            return(soapClient);
        }
Example #7
0
        private DailyInfoSoapClient CreateDailyInfoSoapClient()
        {
            var binding = new BasicHttpBinding {
                MaxReceivedMessageSize = 104857600
            };
            var endpoint          = new EndpointAddress(new Uri(_serviceOptions.Value.Url));
            var cartServiceClient = new DailyInfoSoapClient(binding, endpoint);

            return(cartServiceClient);
        }
Example #8
0
        public async Task <XmlDocument> DownloadKeyRate(DateTime date)
        {
            _logger.Info($"Загрузка ключевой ставки");
            var client = new DailyInfoSoapClient(DailyInfoSoapClient.EndpointConfiguration.DailyInfoSoap);
            var temp   = await client.KeyRateXMLAsync(date, date);

            var xmlDocument = new XmlDocument();

            xmlDocument.LoadXml($"<KeyRate><ValidDate>{date.ToString("yyyy-MM-dd")}</ValidDate>{temp.InnerXml}</KeyRate>");
            return(xmlDocument);
        }
Example #9
0
        public async Task <XmlDocument> DownloadForeignExchange(DateTime date)
        {
            _logger.Info($"Загрузка иносстранных валют");
            var client = new DailyInfoSoapClient(DailyInfoSoapClient.EndpointConfiguration.DailyInfoSoap);
            var temp   = await client.GetCursOnDateXMLAsync(date);

            var xmlDocument = new XmlDocument();

            xmlDocument.LoadXml($"<Currencies><ValidDate>{date.ToString("yyyy-MM-dd")}</ValidDate>{temp.InnerXml}</Currencies>");
            return(xmlDocument);
        }
Example #10
0
        public async Task <XmlDocument> DownloadRuonia(DateTime date)
        {
            _logger.Info($"Загрузка руони");
            var client = new DailyInfoSoapClient(DailyInfoSoapClient.EndpointConfiguration.DailyInfoSoap);
            var temp   = await client.RuoniaXMLAsync(date, date);

            var xmlDocument = new XmlDocument();

            xmlDocument.LoadXml($"<Ruonia><ValidDate>{date.ToString("yyyy-MM-dd")}</ValidDate>{temp.InnerXml}</Ruonia>");
            return(xmlDocument);
        }
Example #11
0
        public DCURSES GetDynamicCurs(DateTime startDate, DateTime endDate, string code)
        {
            string tabl = string.Empty;
            DailyInfoSoapClient clientCurs = new DailyInfoSoapClient(DailyInfoSoapClient.EndpointConfiguration.DailyInfoSoap);
            Task <XElement>     t          = clientCurs.GetCursDynamicXMLAsync(startDate, endDate, code);
            XElement            elemDCurs  = t.Result;

            Console.WriteLine("elemDCurs - " + elemDCurs.ToString());
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(DCURSES));
            DCURSES       curCurs       = (DCURSES)xmlSerializer.Deserialize(elemDCurs.CreateReader());

            Console.WriteLine("DDDcurCurs.Count - " + curCurs.Count);

            return(curCurs);
        }
Example #12
0
        public Task <IBankResult> GetRateAsync(string currency, DateTime date)
        {
            IBankResult bankResult = new BankResult()
            {
                ExchangeRate = -1m,
                RateDate     = date,
                HomeCurrency = homeCurrency,
                BankName     = bankName
            };


            DailyInfoSoap          client  = new DailyInfoSoapClient(DailyInfoSoapClient.EndpointConfiguration.DailyInfoSoap);
            Task <ArrayOfXElement> fxRates = client.GetCursOnDateAsync(date);

            List <XElement> Results = fxRates.Result.Nodes;

            foreach (XElement result in Results)
            {
                if (result.Name.LocalName == "diffgram")
                {
                    XElement ValuteData = result.Element("ValuteData");
                    IEnumerable <XElement> ValueOnDate = ValuteData.Elements();
                    foreach (XElement ValuteCursOnDate in ValueOnDate)
                    {
                        IEnumerable <XElement> Properties = ValuteCursOnDate.Elements();

                        string Currency = ValuteCursOnDate.Element("VchCode").Value;

                        decimal FxRate = decimal.Zero;
                        decimal.TryParse(ValuteCursOnDate.Element("Vcurs").Value, out FxRate);

                        decimal multiplier = decimal.Zero;
                        decimal.TryParse(ValuteCursOnDate.Element("Vnom").Value, out multiplier);

                        if (Currency == currency)
                        {
                            FxRate /= multiplier;
                            bankResult.ExchangeRate = FxRate;
                            return(Task.FromResult(bankResult));
                        }
                    }
                }
            }
            return(Task.FromResult(bankResult));
        }
Example #13
0
        public async Task <IBankResult> GetRateAsync(string currency, DateTime date)
        {
            if (!SupportedCurrencies.ContainsKey(currency))
            {
                throw new NotImplementedException($"{bankName} does not support {currency}");
            }

            IBankResult bankResult = new BankResult()
            {
                ExchangeRate = -1m,
                RateDate     = date,
                HomeCurrency = homeCurrency,
                BankName     = bankName
            };

            BasicHttpBinding binding         = new BasicHttpBinding();
            EndpointAddress  endPointAddress = new EndpointAddress("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx");
            DailyInfoSoap    client          = new DailyInfoSoapClient(binding, endPointAddress);

            //ArrayOfXElement fxRates = await client.GetCursOnDateAsync(date);
            Task <DataSet> fxRates = client.GetCursOnDateAsync(date);

            fxRates.Wait();

            //var list = fxRates.Nodes.Find(n => n.Name.LocalName == "diffgram");

            DataTable table = fxRates.Result.Tables["ValuteCursOnDate"];


            string filterExpression = $"VchCode = '{currency}'";

            if (table == null || table?.Rows.Count == 0)
            {
                return(bankResult);
            }
            DataRow[] rows = table.Select(filterExpression);

            decimal.TryParse(rows[0]["Vnom"].ToString(), out decimal multiplier);
            decimal.TryParse(rows[0]["Vcurs"].ToString(), out decimal rate);
            decimal fxRate = rate / multiplier;

            bankResult.ExchangeRate = fxRate;

            return(bankResult);
        }
Example #14
0
        public CURSES GetCursOnDate()
        {
            string tabl = string.Empty;
            DailyInfoSoapClient clientCurs = new DailyInfoSoapClient(DailyInfoSoapClient.EndpointConfiguration.DailyInfoSoap);
            Task <XElement>     t          = clientCurs.GetCursOnDateXMLAsync(DateTime.Now);
            XElement            elemCurs   = t.Result;

            Console.WriteLine("elemCurs - " + elemCurs.ToString());
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(CURSES));
            CURSES        curCurs       = (CURSES)xmlSerializer.Deserialize(elemCurs.CreateReader());

            Console.WriteLine("curCurs.Count - " + curCurs.Count);

            if (curCurs.Count == 0)
            {
                tabl = "Нет данных";
            }
            Console.WriteLine("result - " + tabl);
            return(curCurs);
        }
Example #15
0
        public VALUTES GetValutes()
        {
            try
            {
                DailyInfoSoapClient clientValuta = new DailyInfoSoapClient(DailyInfoSoapClient.EndpointConfiguration.DailyInfoSoap);
                Task <XElement>     t            = clientValuta.EnumValutesXMLAsync(false);

                XElement elem = t.Result;
                this.element = elem;
                Console.WriteLine("elem - " + elem.ToString());
                XmlSerializer xmlSerializer = new XmlSerializer(typeof(VALUTES));
                VALUTES       vals          = (VALUTES)xmlSerializer.Deserialize(elem.CreateReader());
                return(vals);
            }
            catch (Exception e)
            {
                Console.WriteLine("!!!!!!" + e.ToString());
                return(null);
            }
        }
Example #16
0
        public async Task <IBankResult> GetRateAsync(string currency, DateTime date)
        {
            if (!SupportedCurrencies.ContainsKey(currency))
            {
                throw new NotImplementedException($"{bankName} does not support {currency}");
            }
            if (date < minDate)
            {
                throw new ArgumentOutOfRangeException("date", $"Date must be greater than {minDate:dd-MMM-yyyy}");
            }
            BasicHttpBinding binding         = new BasicHttpBinding();
            EndpointAddress  endPointAddress = new EndpointAddress("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx");
            DailyInfoSoap    client          = new DailyInfoSoapClient(binding, endPointAddress);

            ArrayOfXElement fxRates = await client.GetCursOnDateAsync(date);

            var valuesNode = fxRates.Nodes
                             .Where(n => n.Name.LocalName == "diffgram").FirstOrDefault().Elements()
                             .Where(e => e.Name == "ValuteData").Elements("ValuteCursOnDate")
                             .Where(ee => ee.Elements("VchCode").FirstOrDefault().Value.Trim() == currency).FirstOrDefault();

            if (!valuesNode.IsEmpty)
            {
                string Vnom    = valuesNode.Elements("Vnom").FirstOrDefault().Value.Trim();
                string Vcurs   = valuesNode.Elements("Vcurs").FirstOrDefault().Value.Trim();
                string VchCode = valuesNode.Elements("VchCode").FirstOrDefault().Value.Trim();

                decimal.TryParse(Vnom, out decimal multiplier);
                decimal.TryParse(Vcurs, out decimal rate);
                decimal resultFxRate = rate / (multiplier == 0 ? 1: multiplier);

                bankResult.RateDate     = date;
                bankResult.ExchangeRate = resultFxRate;
            }
            return(bankResult);
        }
Example #17
0
        /// <summary>
        /// ѕеречисление валют.
        /// </summary>
        /// <remarks>
        /// ћетод здесь не используетс¤.
        /// —оздан просто чтобы получить список кодов валют.
        /// ѕри использовании в try catch обернуть только не забыть надо.
        /// ј то может и ответ не прийти и поле помен¤ть формат. Ќу вдруг.
        /// </remarks>
        public async Task <Object[]> EnumValutesAsync()
        {
            using DailyInfoSoapClient soapClient = CreateDailyInfoSoapClient();

            // Seld Ч формат -boolean
            // False Ч перечень ежедневных валют
            // True Ч перечень ежемес¤чных валют
            ArrayOfXElement arrayOfXElement = await soapClient.EnumValutesAsync(false);

            Object[] result = InterpretTables(arrayOfXElement: arrayOfXElement
                                              , selector: dataRow => new
            {
                Vcode       = dataRow.Field <String>("Vcode").Trim(),       // Ч ¬нутренний код валюты*
                Vname       = dataRow.Field <String>("Vname").Trim(),       // Ч Ќазвание валюты
                VEngname    = dataRow.Field <String>("VEngname").Trim(),    // Ч јнгл. название валюты
                Vnom        = dataRow.Field <String>("Vnom").Trim(),        //  Ч Ќоминал
                VcommonCode = dataRow.Field <String>("VcommonCode").Trim(), // Ч ¬нутренний код валюты, ¤вл¤ющейс¤ ТбазовойТ**
                VnumCode    = dataRow.Field <String>("VnumCode").Trim(),    // Ч цифровой код ISO
                VcharCode   = dataRow.Field <String>("VcharCode").Trim(),   // Ч 3х буквенный код ISO
            } as Object
                                              );

            return(result);
        }
Example #18
0
        /// <summary>
        ///  урс.
        /// </summary>
        /// <remarks>
        /// ѕо идее тут могут выскочить ошибки, например преобразовани¤ пришедшего ответа или что ещЄ.
        /// Ќо всЄ не предусмотришь.
        /// Ќа это есть обработчик, настроенный в Startup-е.
        /// </remarks>
        public async Task <ValuteCursOnDate[]> GetCursOnDateAsync(DateTime date)
        {
            // Ќа вс¤кий, вдруг с временем передали. ј мне только дату хочетс¤.
            // Ёто не лишнее т.к. ¤ не нашЄл в документации,
            // что можно передавать с временем и от него нет зависимости.
            date = date.Date;

            using DailyInfoSoapClient soapClient = CreateDailyInfoSoapClient();

            ArrayOfXElement arrayOfXElement = await soapClient.GetCursOnDateAsync(date);

            ValuteCursOnDate[] result = InterpretTables(arrayOfXElement: arrayOfXElement
                                                        , selector: dataRow => new ValuteCursOnDate
            {
                Vname   = dataRow.Field <String>("Vname").Trim(),
                Vnom    = dataRow.Field <Decimal>("Vnom"),
                Vcurs   = dataRow.Field <Decimal>("Vcurs"),
                Vcode   = dataRow.Field <Int32>("Vcode"),
                VchCode = dataRow.Field <String>("VchCode").Trim(),
            }
                                                        );

            return(result);
        }
Example #19
0
 protected SoapServiceBase(DailyInfoSoapClient soapClient)
 {
     SoapClient = soapClient ?? throw new ArgumentNullException(nameof(soapClient));
 }
Example #20
0
 protected SoapServiceBase()
 {
     SoapClient = new DailyInfoSoapClient(DailyInfoSoapClient.EndpointConfiguration.DailyInfoSoap);
 }
 public CurrencyService(DailyInfoSoapClient soapClient) : base(soapClient)
 {
 }
Example #22
0
 public DailyInfoSoapClient(EndpointConfiguration endpointConfiguration) :
     base(DailyInfoSoapClient.GetBindingForEndpoint(endpointConfiguration), DailyInfoSoapClient.GetEndpointAddress(endpointConfiguration))
 {
     this.Endpoint.Name = endpointConfiguration.ToString();
     ConfigureEndpoint(this.Endpoint, this.ClientCredentials);
 }
Example #23
0
        static void Main(string[] args)
        {
            bool hasException = false;

            CbrServices.DailyInfoSoapClient client =
                new DailyInfoSoapClient();
            string   generalPath = @"C:\Users\bushuevroman\YandexDisk\MarketData\CBR\raw\ruonia\ruonia.csv";
            DateTime from        = new DateTime(2010, 01, 10).Date;
            DateTime to          = DateTime.Today.Date;

            try
            {
                var           result  = client.Ruonia(from, to);
                List <string> strings = new List <string>()
                {
                    "Date\tvalue\tnominal\t"
                };
                foreach (DataTable dataTable in result.Tables)
                {
                    foreach (DataRow row in dataTable.Rows)
                    {
                        StringBuilder text = new StringBuilder();
                        foreach (DataColumn column in dataTable.Columns)
                        {
                            if (row[column].GetType() == typeof(DateTime))
                            {
                                //Добавление одной даты, т.к. у нас результат отличается благодаря
                                DateTime date       = ((DateTime)row[column]).AddDays(1);
                                string   tempResult = string.Format("{0}.{1}.{2}", date.Day, date.Month, date.Year);
                                text.Append(tempResult + "\t");
                            }
                            else
                            {
                                text.Append(row[column].ToString() + "\t");
                            }
                        }
                        strings.Add(text.ToString());
                    }
                }
                System.IO.File.WriteAllLines(generalPath, strings);
            }
            catch (Exception ex)
            {
                hasException = true;
                Console.WriteLine(ex.Message);
                bool isWriteException = false;
                while (!isWriteException)
                {
                    try
                    {
                        string path      = @"C:\Users\bushuevroman\YandexDisk\MarketData\logs.txt";
                        string pathError = @"C:\Users\bushuevroman\YandexDisk\MarketData\RuoniaExceptionLogs.txt";
                        using (FileStream fileStream = new FileStream(path,
                                                                      FileMode.Append,
                                                                      FileAccess.Write,
                                                                      FileShare.Read))
                        {
                            string dataasstring = "Ruonia exception" + "\n";
                            byte[] info         = new UTF8Encoding(true).GetBytes(dataasstring);
                            fileStream.Write(info, 0, info.Length);
                            isWriteException = true;
                            string input = string.Format("{0}->{1}", DateTime.Today.ToShortDateString(), ex.Message);
                            File.AppendAllLines(pathError, new List <string>()
                            {
                                input
                            });
                        }
                    }
                    catch
                    {
                    }
                    finally
                    {
                        Thread.Sleep(1000);
                    }
                }
            }
            finally
            {
                client.Close();
            }

            if (hasException)
            {
                return;
            }

            bool isWrite = false;

            while (!isWrite)
            {
                try
                {
                    string path = @"C:\Users\bushuevroman\YandexDisk\MarketData\queue.txt";
                    using (FileStream fileStream = new FileStream(path,
                                                                  FileMode.Append,
                                                                  FileAccess.Write,
                                                                  FileShare.Read))
                    {
                        string dataasstring = "Ruonia" + "\n";
                        byte[] info         = new UTF8Encoding(true).GetBytes(dataasstring);
                        fileStream.Write(info, 0, info.Length);
                        isWrite = true;
                    }
                }
                catch (Exception ex)
                {
                }
                finally
                {
                    Thread.Sleep(1000);
                }
            }
        }
 public CentralBankSoapCurrencyProvider(string currencyServiceRemoteAddress)
 {
     this.dailyInfo = new DailyInfoSoapClient(DailyInfoSoapClient.EndpointConfiguration.DailyInfoSoap12, currencyServiceRemoteAddress);
 }
        static void Main(string[] args)
        {
            bool hasException = false;

            CbrServices.DailyInfoSoapClient client = new DailyInfoSoapClient();
            try
            {
                string        generalPath = @"C:\Users\bushuevroman\YandexDisk\MarketData\CBR\raw\currencies\";
                DateTime      from        = DateTime.Now;
                StringBuilder text        = new StringBuilder();

                var result = client.GetCursOnDate(from);
                foreach (DataTable dataTable in result.Tables)
                {
                    foreach (DataColumn column in dataTable.Columns)
                    {
                        text.Append(column.ColumnName + "\t");
                    }
                    text.Append("\n");
                    foreach (DataRow row in dataTable.Rows)
                    {
                        foreach (DataColumn column in dataTable.Columns)
                        {
                            text.Append(row[column].ToString() + "\t");
                        }
                        text.Append("\n");
                    }
                }
                string dateTimeText = from.Year.ToString() + "." + from.Month.ToString("00") + "." + from.Day.ToString("00");
                System.IO.File.WriteAllText(generalPath + dateTimeText + ".csv", text.ToString());
                from = from.AddDays(1);
            }
            catch (Exception ex)
            {
                hasException = true;
                Console.WriteLine(ex.Message);
                bool isWriteException = false;
                while (!isWriteException)
                {
                    try
                    {
                        string path      = @"C:\Users\bushuevroman\YandexDisk\MarketData\logs.txt";
                        string pathError = @"C:\Users\bushuevroman\YandexDisk\MarketData\CurrencyExceptionLogs.txt";
                        using (FileStream fileStream = new FileStream(path,
                                                                      FileMode.Append,
                                                                      FileAccess.Write,
                                                                      FileShare.Read))
                        {
                            string dataasstring = "Currencies exception" + "\n" + DateTime.Now.ToShortDateString();
                            byte[] info         = new UTF8Encoding(true).GetBytes(dataasstring);
                            fileStream.Write(info, 0, info.Length);
                            isWriteException = true;
                            string input = string.Format("{2}->{0}->{1}", DateTime.Today.ToShortDateString(), ex.Message, "Currencies exception");
                            File.AppendAllLines(pathError, new List <string>()
                            {
                                input
                            });
                        }
                    }
                    catch
                    {
                    }
                    finally
                    {
                        Thread.Sleep(1000);
                    }
                }
            }
            finally
            {
                client.Close();
            }

            if (hasException)
            {
                return;
            }
            bool isWrite = false;

            while (!isWrite)
            {
                try
                {
                    string path = @"C:\Users\bushuevroman\YandexDisk\MarketData\queue.txt";
                    using (FileStream fileStream = new FileStream(path,
                                                                  FileMode.Append,
                                                                  FileAccess.Write,
                                                                  FileShare.Read))
                    {
                        DateTime date         = DateTime.Today;
                        string   shortFormat  = date.ToString("yyyy.MM.dd");
                        string   dataasstring = "Currencies" + " " + shortFormat + "\n";
                        byte[]   info         = new UTF8Encoding(true).GetBytes(dataasstring);
                        fileStream.Write(info, 0, info.Length);
                        isWrite = true;
                    }
                }
                catch (Exception ex)
                {
                }
                finally
                {
                    Thread.Sleep(1000);
                }
            }
        }
Example #26
0
 public DailyInfoSoapClient(EndpointConfiguration endpointConfiguration, System.ServiceModel.EndpointAddress remoteAddress) :
     base(DailyInfoSoapClient.GetBindingForEndpoint(endpointConfiguration), remoteAddress)
 {
     this.Endpoint.Name = endpointConfiguration.ToString();
     ConfigureEndpoint(this.Endpoint, this.ClientCredentials);
 }
Example #27
0
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string html;
                string url = "http://www.cbr.ru/scripts/XML_daily.asp";

                WebClient web = new WebClient();
                web.Encoding = Encoding.GetEncoding(1251);
                Stream       data   = web.OpenRead(url);
                StreamReader reader = new StreamReader(data, Encoding.GetEncoding(1251));
                html = reader.ReadLine();
                data.Close();
                reader.Close();

                FileStream   file  = new FileStream("data.xaml", FileMode.Create, FileAccess.ReadWrite);
                StreamWriter wData = new StreamWriter(file);
                wData.Write(html);
                wData.Close();

                ServiceReference1.DailyInfoSoapClient scr = new DailyInfoSoapClient();
                DataSet ds = scr.GetCursOnDate(DateTime.Now.Date);
                rsl.SendList = null;

                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    if (rsl.SendList != null)
                    {
                        rsl.SendList.Add(new SendModel()
                        {
                            ID       = i + 1,
                            Name     = ds.Tables[0].Rows[i].ItemArray[0].ToString(),
                            Date     = DateTime.Now.Date,
                            Nominal  = ds.Tables[0].Rows[i].ItemArray[1].ToString(),
                            Value    = ds.Tables[0].Rows[i].ItemArray[2].ToString(),
                            NumCode  = ds.Tables[0].Rows[i].ItemArray[3].ToString(),
                            CharCode = ds.Tables[0].Rows[i].ItemArray[4].ToString()
                        });
                    }
                    else
                    {
                        rsl.SendList = new List <SendModel>();
                        rsl.SendList.Add(new SendModel()
                        {
                            ID       = i + 1,
                            Name     = ds.Tables[0].Rows[i].ItemArray[0].ToString(),
                            Date     = DateTime.Now.Date,
                            Nominal  = ds.Tables[0].Rows[i].ItemArray[1].ToString(),
                            Value    = ds.Tables[0].Rows[i].ItemArray[2].ToString(),
                            NumCode  = ds.Tables[0].Rows[i].ItemArray[3].ToString(),
                            CharCode = ds.Tables[0].Rows[i].ItemArray[4].ToString()
                        });
                    }
                }
                dataGridView1.DataSource = rsl.SendList;
                LoggerProc.logger.Info("Загрузка валют с сервиса завершена. Загружено " + rsl.SendList.Count + " объектов");
                AddLogToHistory("Загрузка валют с сервиса завершена. Загружено " + rsl.SendList.Count + " объектов", false);
            }
            catch (Exception f)
            {
                MessageBox.Show("Данные не получены");
                LoggerProc.logger.Error("Загрузка валютных данных с сервиса ОСТАНОВЛЕНА. " + f);
                AddLogToHistory("Загрузка валютных данных с сервиса ОСТАНОВЛЕНА. " + f, true);
            }
        }