/// <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); }
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); }
/// <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); }
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)); }
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); }
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)); }
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); }
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)); }
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); }
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); }
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); }
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); }
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); }
/// <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); }
/// <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()); }
public async Task <GetStatus11> GetStatus2(string connectionString, string area, int contactKey, ArrayOfXElement screenMessages) { return(await _client.GetStatusAsync(AuthHeader, connectionString, area, contactKey, screenMessages)); }
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)); }
public async Task <GetStatus21> GetStatus1(string connectionString, string area, ArrayOfXElement visitorData, ArrayOfXElement screenMessages) { return(await _client.GetStatus1Async(AuthHeader, connectionString, area, visitorData, screenMessages)); }
protected List <T> GetDeserializedResponse <T>(ArrayOfXElement elements) { return(DeserializeJson <T>(ConvertXmlToJson(elements))); }