Try your search with a different keyword or use * as a wildcard.
using Nop.Core.Domain.Directory;
using Nop.Services.ScheduleTasks;
namespace Nop.Services.Directory;
///
/// Represents a task for updating exchange rates
///
public partial class UpdateExchangeRateTask : IScheduleTask
{
#region Fields
protected readonly CurrencySettings _currencySettings;
protected readonly ICurrencyService _currencyService;
#endregion
#region Ctor
public UpdateExchangeRateTask(CurrencySettings currencySettings,
ICurrencyService currencyService)
{
_currencySettings = currencySettings;
_currencyService = currencyService;
}
#endregion
#region Methods
///
/// Executes a task
///
public async System.Threading.Tasks.Task ExecuteAsync()
{
if (!_currencySettings.AutoUpdateEnabled)
return;
var exchangeRates = await _currencyService.GetCurrencyLiveRatesAsync();
foreach (var exchangeRate in exchangeRates)
{
var currency = await _currencyService.GetCurrencyByCodeAsync(exchangeRate.CurrencyCode);
if (currency == null)
continue;
currency.Rate = exchangeRate.Rate;
currency.UpdatedOnUtc = DateTime.UtcNow;
await _currencyService.UpdateCurrencyAsync(currency);
}
}
#endregion
}