Mango.Nop.Libraries/Mango.Nop.Services/MgEventConsumerBase.cs

64 lines
2.1 KiB
C#

using AyCode.Core.Loggers;
using Mango.Nop.Core.Interfaces;
using Mango.Nop.Core.Loggers;
using Mango.Nop.Data.Interfaces;
using Mango.Nop.Data.Repositories;
using Microsoft.AspNetCore.Http;
using Nop.Core.Domain.Catalog;
using Nop.Core.Domain.Customers;
using Nop.Core.Domain.Orders;
using Nop.Core.Events;
using Nop.Services.Events;
using Nop.Web.Framework.Events;
namespace Mango.Nop.Services;
/// <summary>
/// Represents plugin event consumer
/// </summary>
public abstract class MgEventConsumerBase(IMgDbContextBase ctx, IHttpContextAccessor httpContextAccessor, IEnumerable<IAcLogWriterBase> logWriters) :
IConsumer<EntityUpdatedEvent<Product>>,
IConsumer<EntityInsertedEvent<Product>>,
IConsumer<CustomerRegisteredEvent>,
IConsumer<OrderPlacedEvent>,
IConsumer<PageRenderingEvent>,
IConsumer<ProductSearchEvent>
//IConsumer<EntityInsertedEvent<ShoppingCartItem>>,
//IConsumer<MessageTokensAddedEvent<Token>>,
//IConsumer<ModelPreparedEvent<BaseNopModel>>
{
#region Fields
protected ILogger Logger { get; } = new Logger<MgEventConsumerBase>(logWriters.ToArray());
protected readonly IHttpContextAccessor HttpContextAccessor = httpContextAccessor;
#endregion
protected virtual async Task<Product> CheckAndUpdateProductManageInventoryMethodToManageStock(Product product)
{
if (product.ManageInventoryMethod == ManageInventoryMethod.ManageStock) return product;
product.ManageInventoryMethod = ManageInventoryMethod.ManageStock;
await ctx.Products.UpdateAsync(product, false);
return product;
}
public virtual async Task HandleEventAsync(EntityUpdatedEvent<Product> eventMessage)
{ }
public virtual async Task HandleEventAsync(EntityInsertedEvent<Product> eventMessage)
{ }
public virtual async Task HandleEventAsync(CustomerRegisteredEvent eventMessage)
{ }
public virtual async Task HandleEventAsync(OrderPlacedEvent eventMessage)
{ }
public virtual async Task HandleEventAsync(PageRenderingEvent eventMessage)
{ }
public virtual async Task HandleEventAsync(ProductSearchEvent eventMessage)
{ }
}