private bool PopulateCurrencyDictionary(EmployeeSpendings EmployeeSpending) { string content = FetchExchangeRatingsAsync(EmployeeSpending).Result; XNamespace docNamespace = "{http://www.lb.lt/WebServices/FxRates}"; IEnumerable <XElement> exchangeRatesXml; try { XDocument doc = XDocument.Parse(content); exchangeRatesXml = doc.Elements($"{docNamespace}FxRates"); } catch { return(false); } foreach (XElement element in exchangeRatesXml.Elements($"{docNamespace}FxRate")) { IEnumerable <XElement> exchangeRateXml = element.Elements($"{docNamespace}CcyAmt"); string toCurrency = exchangeRateXml.First().Element($"{docNamespace}Ccy").Value; double toAmount = double.Parse(exchangeRateXml.First().Element($"{docNamespace}Amt").Value, CultureInfo.InvariantCulture); string fromCurrency = exchangeRateXml.Last().Element($"{docNamespace}Ccy").Value; double fromAmount = double.Parse(exchangeRateXml.Last().Element($"{docNamespace}Amt").Value, CultureInfo.InvariantCulture); exchangeRates[EmployeeSpending.expensesDate.ToString() + fromCurrency] = new ExchangeRate(toCurrency, toAmount / fromAmount); } return(exchangeRates.ContainsKey(EmployeeSpending.expensesDate.ToString() + EmployeeSpending.currency)); }
private async Task <string> FetchExchangeRatingsAsync(EmployeeSpendings empployee) { string date = empployee.expensesDate.ToShortDateString(); string exchangeType = empployee.expensesDate < DateTime.ParseExact("2015-01-01", "yyyy-MM-dd", null) ? "LT" : "EU"; Uri url = new Uri($@"http://old.lb.lt/webservices/FxRates/FxRates.asmx/getFxRates?tp={exchangeType}&dt={date}"); return(await client.GetStringAsync(url)); }