Ejemplo n.º 1
0
        /// <summary>
        /// Конвертация в список курсов валют
        /// </summary>
        /// <param name="arrayOfXElement"><see cref="ArrayOfXElement"/></param>
        /// <returns>список курсов валют</returns>
        public static IList <CurrencyRate> EnumValutesToCurrencyRates(this ArrayOfXElement arrayOfXElement)
        {
            List <CurrencyRate> result = new List <CurrencyRate>();

            foreach (XElement listNode in arrayOfXElement.Nodes)
            {
                XmlSerializer serializer = new XmlSerializer(typeof(CurrencyRateRoot));

                if (serializer.CanDeserialize(listNode.CreateReader()) == false)
                {
                    continue;
                }

                CurrencyRateRoot root = (CurrencyRateRoot)serializer.Deserialize(listNode.CreateReader());

                if (root.ValuteData == null || root.ValuteData.Length <= 0)
                {
                    continue;
                }

                result.AddRange(
                    from cursOnDate in root.ValuteData
                    let currency = new Currency {
                    Name = cursOnDate.Vname, Code = cursOnDate.VchCode
                }
                    select new CurrencyRate(currency)
                {
                    Nom = cursOnDate.Vnom, Rate = cursOnDate.Vcurs
                });
            }

            return(result);
        }
Ejemplo n.º 2
0
        public async Task GetCompanies()
        {
            ArrayOfXElement elements = await serviceProxy.GetCompaniesAsync();

            foreach (XElement el in elements.Nodes)
            {
                var test = el.Value;
            }

            DataSet dataset = new DataSet();

            dataset.ReadXml(new System.IO.StringReader(elements.ToString()));

            if (!dataset.HasErrors)
            {
                Companies = new List <Models.Company>();
                foreach (DataRow row in dataset.Tables[0].Rows)
                {
                    Companies.Add(new Models.Company
                    {
                        ObjectID         = int.Parse(row["ObjectID"].ToString()),
                        Name             = row["Name"].ToString(),
                        NumberOfChildren = int.Parse(row["NumberOfChildren"].ToString()),
                    });
                }

                await Task.FromResult(1);
            }
            await Task.FromResult(0);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Конвертация в список валют
        /// </summary>
        /// <param name="arrayOfXElement"><see cref="ArrayOfXElement"/></param>
        /// <returns>список валют</returns>
        public static IList <Currency> EnumValutesToCurrencies(this ArrayOfXElement arrayOfXElement)
        {
            List <Currency> result = new List <Currency>();

            foreach (XElement listNode in arrayOfXElement.Nodes)
            {
                XmlSerializer serializer = new XmlSerializer(typeof(CurrencyListRoot));

                if (serializer.CanDeserialize(listNode.CreateReader()) == false)
                {
                    continue;
                }

                CurrencyListRoot root = (CurrencyListRoot)serializer.Deserialize(listNode.CreateReader());

                if (root.ValuteData == null || root.ValuteData.Length <= 0)
                {
                    continue;
                }

                result.AddRange(root.ValuteData.Select(valutes => new Currency {
                    Name = valutes.Vname, Code = valutes.VcharCode
                }));
            }

            return(result);
        }
Ejemplo n.º 4
0
        public async Task <List <Status> > GetStatus1(int accountId, string area, ArrayOfXElement visitorData, ArrayOfXElement screenMessages)
        {
            var connString = await GetAccountConnectionString(accountId);

            var response = await _infowebAXClientReference.GetStatus1(connString, area, visitorData, screenMessages);

            return(GetDeserializedResponse <Status>(response.GetStatus2Result.Nodes));
        }
Ejemplo n.º 5
0
        private static DataSet ToDataSet(ArrayOfXElement data)
        {
            var result = new DataSet();
            var rawXml = new XElement("Root", data.Nodes).ToString();

            using var reader = new StringReader(rawXml);
            result.ReadXml(reader);

            return(result);
        }
Ejemplo n.º 6
0
        public async Task GetMetersForSiteId(int?siteID)
        {
            Meters = new List <Models.Meter>();
            meter  = new MeterSoapClient(basicHttpBinding, basicendpoint);
            //meter.CookieContainer = cookieContainer;

            DataSet meterDataSet = new DataSet();

            if (siteID.HasValue)
            {
                ArrayOfXElement elements = await meter.GetMetersForSiteIDAsync(siteID.Value);

                meterDataSet = new DataSet();
                meterDataSet.ReadXml(new System.IO.StringReader(elements.ToString()));
            }
            else
            {
                ArrayOfXElement elements = await meter.GetMetersAsync();

                meterDataSet = new DataSet();
                meterDataSet.ReadXml(new System.IO.StringReader(elements.ToString()));
            }

            foreach (DataRow row in meterDataSet.Tables[0].Rows)
            {
                bool Enabled = false;
                bool.TryParse(row["Enabled"].ToString(), out Enabled);
                bool AMR = false;
                bool.TryParse(row["AMR"].ToString(), out AMR);
                Meters.Add(new Models.Meter
                {
                    AMR                = AMR,
                    ContractNumber     = row["ContractNumber"].ToString(),
                    DataImportCode     = row["DataImportCode"].ToString(),
                    Enabled            = Enabled,
                    MeterCode          = row["MeterCode"].ToString(),
                    MeterID            = int.Parse(row["MeterID"].ToString()),
                    MeterNumber        = row["MeterNumber"].ToString(),
                    MeterPrefix        = row["MeterPrefix"].ToString(),
                    MeterReadFrequency = row["MeterReadFrequency"].ToString(),
                    MeterType          = row["MeterType"].ToString(),
                    MeterTypeID        = int.Parse(row["MeterTypeID"].ToString()),
                    Name               = row["Name"].ToString(),
                    ParentID           = int.Parse(row["ParentID"].ToString()),
                    ParentTypeID       = int.Parse(row["ParentTypeID"].ToString()),
                    SerialNumber       = row["SerialNumber"].ToString(),
                    SiteMeterCode      = row["SiteMeterCode"].ToString(),
                    TypeID             = int.Parse(row["TypeID"].ToString()),
                });
            }
            await Task.FromResult(1);
        }
        public ActionResult <Traking> getTraking([FromQuery] string trak)
        {
            Traking traking = new Traking();

            WsUtilSoapClient wsUtilSoapClient = new WsUtilSoapClient(WsUtilSoapClient.EndpointConfiguration.WsUtilSoap);
            ArrayOfXElement  a = wsUtilSoapClient.getTrackingAsync(trak).Result;
            ArrayOfXElement  b = wsUtilSoapClient.getTrackAwbAsync(trak).Result;
            ArrayOfXElement  c = wsUtilSoapClient.getAgentSimpleAsync(trak, "#@io(*^^!jl").Result;
            ArrayOfXElement  d = wsUtilSoapClient.getTrackBookAsync(trak).Result;

            try
            {
                XmlSerializer       xmlSerializer = new XmlSerializer(typeof(Models.awb.diffgram));
                Models.awb.diffgram awb           = (Models.awb.diffgram)xmlSerializer.Deserialize(b.Nodes[1].CreateReader());
                //trakiing
                XmlSerializer xmlSerializer1          = new XmlSerializer(typeof(Models.trakingHistory.diffgram));
                Models.trakingHistory.diffgram trakin = (Models.trakingHistory.diffgram)xmlSerializer1.Deserialize(a.Nodes[1].CreateReader());
                //agent
                XmlSerializer         xmlSerializer2 = new XmlSerializer(typeof(Models.agent.diffgram));
                Models.agent.diffgram agent          = (Models.agent.diffgram)xmlSerializer2.Deserialize(c.Nodes[1].CreateReader());

                XmlSerializer        xmlSerializer3 = new XmlSerializer(typeof(Models.book.diffgram));
                Models.book.diffgram book           = (Models.book.diffgram)xmlSerializer3.Deserialize(d.Nodes[1].CreateReader());

                List <Models.trakingHistory.NewDataSetTable> trakings = trakin.NewDataSet.OrderBy(x => x.DATEIN).ToList();

                traking = new Traking()
                {
                    Name           = (agent.NewDataSet == null)?"No Agent": agent.NewDataSet.Table.Name.Trim(),
                    Origin         = awb.NewDataSet.Table.origin.Trim(),
                    Destination    = awb.NewDataSet.Table.destination.Trim(),
                    CargoType      = book.NewDataSet.Table.commodity.Trim(),
                    Pieces         = awb.NewDataSet.Table.totpieces.ToString(),
                    Weight         = Math.Round(awb.NewDataSet.Table.totweight, 0).ToString(),
                    Volumen        = Math.Round(awb.NewDataSet.Table.totvolume, 0).ToString(),
                    TrakingHistors = trakings.Select(x => new TrakingHistor()
                    {
                        Date   = x.DATEIN,
                        Note   = x.NOTE.Trim(),
                        Pieces = x.PIECES.ToString(),
                        Weight = x.WEIGHT.ToString()
                    }).ToList()
                };
            }
            catch (Exception e)
            {
                return(Ok(null));
            }

            return(Ok(traking));
        }
Ejemplo n.º 8
0
        private DateTime?GetCursDate(ArrayOfXElement elements)
        {
            if (elements == null || elements.Nodes == null || elements.Nodes.Count < 2)
            {
                return(null);
            }

            var dateString = ((XElement)elements.Nodes[0].FirstNode)?.LastAttribute?.Value;

            if (DateTime.TryParseExact(dateString, "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out var date))
            {
                return(date);
            }

            return(null);
        }
Ejemplo n.º 9
0
        private string ConvertXmlToJson(ArrayOfXElement elements)
        {
            var element           = elements.Nodes[1];
            var newDataSetElement = element.Element("NewDataSet");

            if (newDataSetElement == null || newDataSetElement.Element("Table1") == null)
            {
                return(string.Empty);
            }
            if (element.Element("NewDataSet").Elements("Table1").Count() == 1)
            {
                XNamespace ns = "http://james.newtonking.com/projects/json";
                AddAttribute(element.Element("NewDataSet"), XNamespace.Xmlns + "json", "http://james.newtonking.com/projects/json");
                AddAttribute(element.Element("NewDataSet").Element("Table1"), ns + "Array", "true");
            }
            var node = new XmlDocument().ReadNode(element.CreateReader()) as XmlNode;

            return(JsonConvert.SerializeXmlNode(node));
        }
Ejemplo n.º 10
0
        private IEnumerable <CurrencyExchangeRateModel> ToModel(ArrayOfXElement arrayOfXElement)
        {
            var xmlElement = arrayOfXElement.Nodes[1];

            var valutes = xmlElement.XPathSelectElements("//ValuteData");

            foreach (var valute in valutes)
            {
                foreach (var valuteCursOnDate in valute.Elements("ValuteCursOnDate"))
                {
                    yield return(new CurrencyExchangeRateModel(
                                     valuteCursOnDate.Element("Vname").Value.Trim(),
                                     valuteCursOnDate.Element("VchCode").Value.Trim(),
                                     decimal.Parse(valuteCursOnDate.Element("Vcurs").Value.Trim(), CultureInfo.InvariantCulture),
                                     int.Parse(valuteCursOnDate.Element("Vnom").Value.Trim(), CultureInfo.InvariantCulture)
                                     ));
                }
            }
        }
        /// <inheritdoc />
        public async Task <CurrencyRate> GetRate(DateTime date, string code)
        {
            ArrayOfXElement arrayOfXElement = await this.dailyInfo.GetCursOnDateAsync(date);

            IList <CurrencyRate> rates = arrayOfXElement.EnumValutesToCurrencyRates();

            if (rates == null)
            {
                return(null);
            }

            CurrencyRate result = rates.FirstOrDefault(currencyRate => currencyRate.Currency.Code == code);

            if (result != null)
            {
                result.Date = date;
            }

            return(result);
        }
Ejemplo n.º 12
0
        private static T[] InterpretTables <T>(ArrayOfXElement arrayOfXElement, Func <DataRow, T> selector)
        {
            if (arrayOfXElement is null)
            {
                return(Array.Empty <T>());
            }

            DataSet ds = ToDataSet(arrayOfXElement);

            if (!(ds?.Tables.Count > 0))
            {
                return(Array.Empty <T>());
            }

            T[] result = ds.Tables[0].AsEnumerable()
                         .Select(selector)
                         .ToArray();

            return(result);
        }
Ejemplo n.º 13
0
        private ValuteData GetValuteData(ArrayOfXElement elements)
        {
            if (elements == null || elements.Nodes == null || elements.Nodes.Count < 2)
            {
                return(null);
            }
            var data = new ValuteData();

            using var ms     = new MemoryStream();
            using var writer = XmlWriter.Create(ms);


            elements.Nodes[1].WriteTo(writer);
            writer.Flush();
            writer.Close();
            ms.Position      = 0;
            using var reader = XmlReader.Create(ms);
            data.ReadXml(reader);
            reader.Close();
            return(data);
        }
Ejemplo n.º 14
0
        public async Task GetSites(int?companyID)
        {
            Eisight.Site.SiteSoapClient siteService = new Eisight.Site.SiteSoapClient(basicHttpBinding, basicendpoint);
            //siteService.CookieContainer = CookieContainer;
            DataSet dataSet = new DataSet();

            if (companyID.HasValue)
            {
                ArrayOfXElement elements = await siteService.GetSitesForCompanyIDAsync(companyID.Value);

                dataSet = new DataSet();
                dataSet.ReadXml(new System.IO.StringReader(dataSet.ToString()));
            }
            else
            {
                ArrayOfXElement elements = await siteService.GetSitesAsync();

                dataSet = new DataSet();
                dataSet.ReadXml(new System.IO.StringReader(dataSet.ToString()));
            }
            Sites = new List <Site>();
            if (!dataSet.HasErrors)
            {
                foreach (DataRow row in dataSet.Tables[0].Rows)
                {
                    Sites.Add(new Site
                    {
                        ParentID     = !companyID.HasValue ? int.Parse(row["ParentID"].ToString()) : 0,
                        ParentTypeID = !companyID.HasValue ? int.Parse(row["ParentTypeID"].ToString()) : 0,
                        SiteCode     = !companyID.HasValue ? row["SiteCode"].ToString() : row["Code"].ToString(),
                        SiteID       = !companyID.HasValue ? int.Parse(row["SiteID"].ToString()) : int.Parse(row["ObjectID"].ToString()),
                        SiteName     = !companyID.HasValue ? row["SiteName"].ToString(): row["Name"].ToString(),
                    });
                }

                await Task.FromResult(1);
            }

            await Task.FromResult(0);
        }
Ejemplo n.º 15
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);
        }
Ejemplo n.º 16
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);
        }
Ejemplo n.º 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);
        }
        /// <inheritdoc />
        public async Task <IList <Currency> > GetList()
        {
            ArrayOfXElement arrayOfXElement = await this.dailyInfo.EnumValutesAsync(false).ConfigureAwait(false);

            return(arrayOfXElement.EnumValutesToCurrencies());
        }
Ejemplo n.º 19
0
 public async Task <GetStatus11> GetStatus2(string connectionString, string area, int contactKey, ArrayOfXElement screenMessages)
 {
     return(await _client.GetStatusAsync(AuthHeader, connectionString, area, contactKey, screenMessages));
 }
Ejemplo n.º 20
0
        public async Task <GetStatus21> GetStatus1(int accountId, string area, ArrayOfXElement visitorData, ArrayOfXElement screenMessages)
        {
            var connString = await GetAccountConnectionString(accountId);

            return(await _infowebAXClientReference.GetStatus1(connString, area, visitorData, screenMessages));
        }
Ejemplo n.º 21
0
 public async Task <GetStatus21> GetStatus1(string connectionString, string area, ArrayOfXElement visitorData, ArrayOfXElement screenMessages)
 {
     return(await _client.GetStatus1Async(AuthHeader, connectionString, area, visitorData, screenMessages));
 }
Ejemplo n.º 22
0
 protected List <T> GetDeserializedResponse <T>(ArrayOfXElement elements)
 {
     return(DeserializeJson <T>(ConvertXmlToJson(elements)));
 }