public async Task <IActionResult> List(bool liveRates = false) { if (liveRates) { try { var primaryExchangeCurrency = await _currencyService.GetCurrencyById(_currencySettings.PrimaryExchangeRateCurrencyId); if (primaryExchangeCurrency == null) { throw new GrandException("Primary exchange rate currency is not set"); } ViewBag.Rates = await _exchangeRateService.GetCurrencyLiveRates(primaryExchangeCurrency.CurrencyCode); } catch (Exception exc) { Error(exc, false); } } ViewBag.ExchangeRateProviders = new List <SelectListItem>(); foreach (var erp in _exchangeRateService.LoadAllExchangeRateProviders()) { ViewBag.ExchangeRateProviders.Add(new SelectListItem { Text = erp.FriendlyName, Value = erp.SystemName, Selected = erp.SystemName.Equals(_currencySettings.ActiveExchangeRateProviderSystemName, StringComparison.OrdinalIgnoreCase) }); } ViewBag.AutoUpdateEnabled = _currencySettings.AutoUpdateEnabled; return(View()); }
/// <summary> /// Executes a task /// </summary> public async Task Execute() { if (!_currencySettings.AutoUpdateEnabled) { return; } var primaryCurrencyCode = (await _currencyService.GetPrimaryExchangeRateCurrency()).CurrencyCode; var exchangeRates = await _exchangeRateService.GetCurrencyLiveRates(primaryCurrencyCode); foreach (var exchageRate in exchangeRates) { var currency = await _currencyService.GetCurrencyByCode(exchageRate.CurrencyCode); if (currency != null) { currency.Rate = exchageRate.Rate; currency.UpdatedOnUtc = DateTime.UtcNow; await _currencyService.UpdateCurrency(currency); } } }