using Nop.Core; using Nop.Core.Domain.Messages; using Nop.Data; namespace Nop.Services.Messages; /// /// Email account service /// public partial class EmailAccountService : IEmailAccountService { #region Fields protected readonly IRepository _emailAccountRepository; #endregion #region Ctor public EmailAccountService(IRepository emailAccountRepository) { _emailAccountRepository = emailAccountRepository; } #endregion #region Methods /// /// Inserts an email account /// /// Email account /// A task that represents the asynchronous operation public virtual async Task InsertEmailAccountAsync(EmailAccount emailAccount) { ArgumentNullException.ThrowIfNull(emailAccount); emailAccount.Email = CommonHelper.EnsureNotNull(emailAccount.Email); emailAccount.DisplayName = CommonHelper.EnsureNotNull(emailAccount.DisplayName); emailAccount.Host = CommonHelper.EnsureNotNull(emailAccount.Host); emailAccount.Username = CommonHelper.EnsureNotNull(emailAccount.Username); emailAccount.Password = CommonHelper.EnsureNotNull(emailAccount.Password); emailAccount.Email = emailAccount.Email.Trim(); emailAccount.DisplayName = emailAccount.DisplayName.Trim(); emailAccount.Host = emailAccount.Host.Trim(); emailAccount.Username = emailAccount.Username.Trim(); emailAccount.Password = emailAccount.Password.Trim(); emailAccount.Email = CommonHelper.EnsureMaximumLength(emailAccount.Email, 255); emailAccount.DisplayName = CommonHelper.EnsureMaximumLength(emailAccount.DisplayName, 255); emailAccount.Host = CommonHelper.EnsureMaximumLength(emailAccount.Host, 255); emailAccount.Username = CommonHelper.EnsureMaximumLength(emailAccount.Username, 255); emailAccount.Password = CommonHelper.EnsureMaximumLength(emailAccount.Password, 255); await _emailAccountRepository.InsertAsync(emailAccount); } /// /// Updates an email account /// /// Email account /// A task that represents the asynchronous operation public virtual async Task UpdateEmailAccountAsync(EmailAccount emailAccount) { ArgumentNullException.ThrowIfNull(emailAccount); emailAccount.Email = CommonHelper.EnsureNotNull(emailAccount.Email); emailAccount.DisplayName = CommonHelper.EnsureNotNull(emailAccount.DisplayName); emailAccount.Host = CommonHelper.EnsureNotNull(emailAccount.Host); emailAccount.Username = CommonHelper.EnsureNotNull(emailAccount.Username); emailAccount.Password = CommonHelper.EnsureNotNull(emailAccount.Password); emailAccount.Email = emailAccount.Email.Trim(); emailAccount.DisplayName = emailAccount.DisplayName.Trim(); emailAccount.Host = emailAccount.Host.Trim(); emailAccount.Username = emailAccount.Username.Trim(); emailAccount.Password = emailAccount.Password.Trim(); emailAccount.Email = CommonHelper.EnsureMaximumLength(emailAccount.Email, 255); emailAccount.DisplayName = CommonHelper.EnsureMaximumLength(emailAccount.DisplayName, 255); emailAccount.Host = CommonHelper.EnsureMaximumLength(emailAccount.Host, 255); emailAccount.Username = CommonHelper.EnsureMaximumLength(emailAccount.Username, 255); emailAccount.Password = CommonHelper.EnsureMaximumLength(emailAccount.Password, 255); await _emailAccountRepository.UpdateAsync(emailAccount); } /// /// Deletes an email account /// /// Email account /// A task that represents the asynchronous operation public virtual async Task DeleteEmailAccountAsync(EmailAccount emailAccount) { ArgumentNullException.ThrowIfNull(emailAccount); if ((await GetAllEmailAccountsAsync()).Count == 1) throw new NopException("You cannot delete this email account. At least one account is required."); await _emailAccountRepository.DeleteAsync(emailAccount); } /// /// Gets an email account by identifier /// /// The email account identifier /// /// A task that represents the asynchronous operation /// The task result contains the email account /// public virtual async Task GetEmailAccountByIdAsync(int emailAccountId) { return await _emailAccountRepository.GetByIdAsync(emailAccountId, cache => default); } /// /// Gets all email accounts /// /// /// A task that represents the asynchronous operation /// The task result contains the email accounts list /// public virtual async Task> GetAllEmailAccountsAsync() { var emailAccounts = await _emailAccountRepository.GetAllAsync(query => { return from ea in query orderby ea.Id select ea; }, cache => default); return emailAccounts; } #endregion }