Try your search with a different keyword or use * as a wildcard.
using Nop.Core;
using Nop.Core.Domain.Customers;
using Nop.Services.Events;
using Nop.Services.Messages;
namespace Nop.Services.Customers;
///
/// Represents a customer event consumer
///
public class CustomerEventConsumer : IConsumer
{
#region Fields
protected readonly ICustomerService _customerService;
protected readonly INewsLetterSubscriptionService _newsLetterSubscriptionService;
protected readonly IStoreContext _storeContext;
#endregion
#region Ctor
public CustomerEventConsumer(ICustomerService customerService,
INewsLetterSubscriptionService newsLetterSubscriptionService,
IStoreContext storeContext)
{
_customerService = customerService;
_newsLetterSubscriptionService = newsLetterSubscriptionService;
_storeContext = storeContext;
}
#endregion
#region Methods
///
/// Handle working language changed event
///
/// Event message
/// A task that represents the asynchronous operation
public async Task HandleEventAsync(CustomerChangeWorkingLanguageEvent eventMessage)
{
if (eventMessage.Customer is not Customer customer)
return;
if (await _customerService.IsGuestAsync(customer))
return;
var store = await _storeContext.GetCurrentStoreAsync();
var subscription = await _newsLetterSubscriptionService.GetNewsLetterSubscriptionByEmailAndStoreIdAsync(customer.Email, store.Id);
if (subscription != null && subscription.LanguageId != customer.LanguageId)
{
subscription.LanguageId = customer.LanguageId ?? 0;
await _newsLetterSubscriptionService.UpdateNewsLetterSubscriptionAsync(subscription);
}
}
#endregion
}