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; /// /// Represents plugin event consumer /// public abstract class MgEventConsumerBase(IMgDbContextBase ctx, IHttpContextAccessor httpContextAccessor, IEnumerable logWriters) : IConsumer>, IConsumer>, IConsumer, IConsumer, IConsumer, IConsumer //IConsumer>, //IConsumer>, //IConsumer> { #region Fields protected ILogger Logger { get; } = new Logger(logWriters.ToArray()); protected readonly IHttpContextAccessor HttpContextAccessor = httpContextAccessor; #endregion protected virtual async Task 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 eventMessage) { } public virtual async Task HandleEventAsync(EntityInsertedEvent 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) { } }