public void UpdateCurrency() { try { var XmlDataList = new ParsingXML().DownloadRatesFile(); var XmlDataListNational = new ParsingXML().getNationCurrency(); if (XmlDataList == null) { Log.AddLog("Second attempt"); XmlDataList = new ParsingXML().DownloadRatesFile(); if (XmlDataList == null) { Log.AddLog("Bad Second attempt"); return; } } if (XmlDataListNational == null) { Log.AddLog("Second attempt /2"); XmlDataListNational = new ParsingXML().getNationCurrency(); if (XmlDataListNational == null) { Log.AddLog("Bad Second attempt /2"); return; } } DateTime date = Convert.ToDateTime(XmlDataList.First().RelevanceDate); decimal USD, EUR, UZS, USDNational, EURNational, RUBNational; USD = Convert.ToDecimal(XmlDataList.Find(x => x.IsoCode.Contains("USD")).ExchangeValue) / Convert.ToDecimal(XmlDataList.Find(x => x.IsoCode.Contains("USD")).Nominal); EUR = Convert.ToDecimal(XmlDataList.Find(x => x.IsoCode.Contains("EUR")).ExchangeValue) / Convert.ToDecimal(XmlDataList.Find(x => x.IsoCode.Contains("EUR")).Nominal); UZS = Convert.ToDecimal(XmlDataList.Find(x => x.IsoCode.Contains("UZS")).ExchangeValue) / Convert.ToDecimal(XmlDataList.Find(x => x.IsoCode.Contains("UZS")).Nominal); USDNational = Convert.ToDecimal(XmlDataListNational.Find(y => y.IsoCode.Contains("USD")).ExchangeValue); EURNational = Convert.ToDecimal(XmlDataListNational.Find(y => y.IsoCode.Contains("EUR")).ExchangeValue); RUBNational = Convert.ToDecimal(XmlDataListNational.Find(y => y.IsoCode.Contains("RUB")).ExchangeValue); if (FindAndDeactivateEntity(date)) { var newRateUSD = new sl_ExchangeRate() { sl_RelevanceDate = date, sl_TransactionCurrencyId = ToTransactionCurrency("USD", decimal.One), sl_ExchangeRate1 = decimal.One, new_national_currency = USDNational }; service.Create(newRateUSD); var newRateEUR = new sl_ExchangeRate() { sl_RelevanceDate = date, sl_TransactionCurrencyId = ToTransactionCurrency("EUR", EUR / USD), sl_ExchangeRate1 = EUR / USD, new_national_currency = EURNational }; service.Create(newRateEUR); var newRateUZS = new sl_ExchangeRate() { sl_RelevanceDate = date, sl_TransactionCurrencyId = ToTransactionCurrency("UZS", UZS / USD), sl_ExchangeRate1 = UZS / USD, new_national_currency = decimal.One }; service.Create(newRateUZS); var newRateRUB = new sl_ExchangeRate() { sl_RelevanceDate = date, sl_TransactionCurrencyId = ToTransactionCurrency("RUB", decimal.One / USD), sl_ExchangeRate1 = decimal.One / USD, new_national_currency = RUBNational }; service.Create(newRateRUB); } else { Log.AddLog("All Currency is correct"); } } catch (Exception ex) { Log.AddLog(string.Format("Somethink is wrong in WorkClass: {0}", ex.Message)); } }
public void UpdateCurrency() { try { var XmlDataList = new ParsingXML().DownloadRatesFile(); var XmlDataListNational = new ParsingXML().getNationCurrency(); if (XmlDataList == null) { Log.AddLog("Second attempt"); XmlDataList = new ParsingXML().DownloadRatesFile(); if (XmlDataList == null) { Log.AddLog("Bad Second attempt"); return; } } if (XmlDataListNational == null) { Log.AddLog("Second attempt /2"); XmlDataListNational = new ParsingXML().getNationCurrency(); if (XmlDataListNational == null) { Log.AddLog("Bad Second attempt /2"); return; } } DateTime date = Convert.ToDateTime(XmlDataList.First().RelevanceDate); decimal USD, EUR, UZS, USDNational, EURNational, RUBNational; USD = Convert.ToDecimal(XmlDataList.Find(x => x.IsoCode.Contains("USD")).ExchangeValue) / Convert.ToDecimal(XmlDataList.Find(x => x.IsoCode.Contains("USD")).Nominal); EUR = Convert.ToDecimal(XmlDataList.Find(x => x.IsoCode.Contains("EUR")).ExchangeValue) / Convert.ToDecimal(XmlDataList.Find(x => x.IsoCode.Contains("EUR")).Nominal); UZS = Convert.ToDecimal(XmlDataList.Find(x => x.IsoCode.Contains("UZS")).ExchangeValue) / Convert.ToDecimal(XmlDataList.Find(x => x.IsoCode.Contains("UZS")).Nominal); USDNational = Convert.ToDecimal(XmlDataListNational.Find(y => y.IsoCode.Contains("USD")).ExchangeValue); EURNational = Convert.ToDecimal(XmlDataListNational.Find(y => y.IsoCode.Contains("EUR")).ExchangeValue); RUBNational = Convert.ToDecimal(XmlDataListNational.Find(y => y.IsoCode.Contains("RUB")).ExchangeValue); if (FindAndDeactivateEntity(date)) { var newRateUSD = new sl_ExchangeRate() { sl_RelevanceDate = date, sl_TransactionCurrencyId = ToTransactionCurrency("USD", decimal.One), sl_ExchangeRate1 = decimal.One, new_national_currency = decimal.One }; service.Create(newRateUSD); var newRateEUR = new sl_ExchangeRate() { sl_RelevanceDate = date, sl_TransactionCurrencyId = ToTransactionCurrency("EUR", EUR / USD), sl_ExchangeRate1 = EUR / USD, new_national_currency = EURNational }; service.Create(newRateEUR); var newRateUZS = new sl_ExchangeRate() { sl_RelevanceDate = date, sl_TransactionCurrencyId = ToTransactionCurrency("UZS", UZS / USD), sl_ExchangeRate1 = UZS / USD, new_national_currency = USDNational }; service.Create(newRateUZS); var newRateRUB = new sl_ExchangeRate() { sl_RelevanceDate = date, sl_TransactionCurrencyId = ToTransactionCurrency("RUB", decimal.One / USD), sl_ExchangeRate1 = decimal.One / USD, new_national_currency = RUBNational }; service.Create(newRateRUB); } else { Log.AddLog("All Currency is correct"); } } catch (Exception ex) { Log.AddLog(string.Format("Somethink is wrong in WorkClass: {0}", ex.Message)); } }
static void Main(string[] args) { CustomService = new CrmService(); Console.WriteLine("Connection esteblished..."); List <TransactionCurrency> currencies = CustomService .XrmContext .TransactionCurrencySet .ToList(); List <ExchangeRateDTO> eRateDtos = DownloadRatesFile(); DateTime relevanceDate = GetRelevanceDate(eRateDtos.First()); DeactivateAllExchangeRates(CustomService, relevanceDate); decimal usdRate = findUsdToAznRate(eRateDtos); foreach (var rate in eRateDtos) { if (rate.IsoCode.ToUpper() == "USD") { rate.IsoCode = "AZN"; } TransactionCurrency currentCurrency = currencies .SingleOrDefault(x => x.ISOCurrencyCode.ToUpper() == rate.IsoCode.ToUpper()); if (currentCurrency == null) { continue; } sl_ExchangeRate newRate = new sl_ExchangeRate(); if (rate.IsoCode != "AZN") { newRate = new sl_ExchangeRate() { sl_RelevanceDate = relevanceDate, sl_TransactionCurrencyId = currentCurrency.ToEntityReference(), sl_ExchangeRate1 = 1 / decimal.Parse(rate.ExchangeValue.Replace('.', ',')) * usdRate, // eur/azn / usd/azn }; } else { newRate = new sl_ExchangeRate() { sl_RelevanceDate = relevanceDate, sl_TransactionCurrencyId = new EntityReference(TransactionCurrency.EntityLogicalName, currentCurrency.TransactionCurrencyId.Value), sl_ExchangeRate1 = decimal.Parse(rate.ExchangeValue.Replace('.', ',')) }; } CustomService.Create(newRate); Console.WriteLine("Created exchange rate of {0} = {1}", currentCurrency.ISOCurrencyCode, newRate.sl_ExchangeRate1); } Console.WriteLine("Update complete!"); }