Try your search with a different keyword or use * as a wildcard.
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
}