2021-07-27 14:08:54 +02:00
|
|
|
using System.Threading.Tasks;
|
2020-12-04 08:08:05 +01:00
|
|
|
using BTCPayServer.HostedServices;
|
2021-11-22 17:16:08 +09:00
|
|
|
using BTCPayServer.Logging;
|
2019-01-06 15:53:37 +01:00
|
|
|
using BTCPayServer.Services.Stores;
|
|
|
|
|
|
|
|
namespace BTCPayServer.Services.Mails
|
|
|
|
{
|
|
|
|
public class EmailSenderFactory
|
|
|
|
{
|
2022-05-24 13:18:16 +09:00
|
|
|
public ISettingsAccessor<PoliciesSettings> PoliciesSettings { get; }
|
2021-11-22 17:16:08 +09:00
|
|
|
public Logs Logs { get; }
|
|
|
|
|
2020-12-04 08:08:05 +01:00
|
|
|
private readonly IBackgroundJobClient _jobClient;
|
2021-07-27 14:08:54 +02:00
|
|
|
private readonly SettingsRepository _settingsRepository;
|
2020-12-04 08:08:05 +01:00
|
|
|
private readonly StoreRepository _storeRepository;
|
2019-01-06 15:53:37 +01:00
|
|
|
|
|
|
|
public EmailSenderFactory(IBackgroundJobClient jobClient,
|
2021-07-27 14:08:54 +02:00
|
|
|
SettingsRepository settingsSettingsRepository,
|
2022-05-24 13:18:16 +09:00
|
|
|
ISettingsAccessor<PoliciesSettings> policiesSettings,
|
2021-11-22 17:16:08 +09:00
|
|
|
StoreRepository storeRepository,
|
|
|
|
Logs logs)
|
2019-01-06 15:53:37 +01:00
|
|
|
{
|
2021-11-22 17:16:08 +09:00
|
|
|
Logs = logs;
|
2020-12-04 08:08:05 +01:00
|
|
|
_jobClient = jobClient;
|
2021-07-27 14:08:54 +02:00
|
|
|
_settingsRepository = settingsSettingsRepository;
|
2022-05-24 13:18:16 +09:00
|
|
|
PoliciesSettings = policiesSettings;
|
2020-12-04 08:08:05 +01:00
|
|
|
_storeRepository = storeRepository;
|
2019-01-06 15:53:37 +01:00
|
|
|
}
|
|
|
|
|
2022-05-24 13:18:16 +09:00
|
|
|
public Task<IEmailSender> GetEmailSender(string storeId = null)
|
2019-01-06 15:53:37 +01:00
|
|
|
{
|
2021-11-22 17:16:08 +09:00
|
|
|
var serverSender = new ServerEmailSender(_settingsRepository, _jobClient, Logs);
|
2019-01-06 15:53:37 +01:00
|
|
|
if (string.IsNullOrEmpty(storeId))
|
2022-05-24 13:18:16 +09:00
|
|
|
return Task.FromResult<IEmailSender>(serverSender);
|
|
|
|
return Task.FromResult<IEmailSender>(new StoreEmailSender(_storeRepository,
|
|
|
|
!PoliciesSettings.Settings.DisableStoresToUseServerEmailSettings ? serverSender : null, _jobClient,
|
|
|
|
storeId, Logs));
|
2019-01-06 15:53:37 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|