Mango.Nop.Plugins/Nop.Plugin.Misc.AuctionPlugin/Services/EventConsumer.cs

145 lines
4.8 KiB
C#

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Routing;
using Nop.Core.Domain.Catalog;
using Nop.Core.Domain.Customers;
using Nop.Core.Domain.Messages;
using Nop.Core.Domain.Orders;
using Nop.Core.Events;
using Nop.Services.Events;
using Nop.Services.Messages;
using Nop.Web.Framework;
using Nop.Web.Framework.Events;
using Nop.Web.Framework.Models;
using Nop.Web.Models.Catalog;
namespace Nop.Plugin.Misc.AuctionPlugin;
/// <summary>
/// Represents plugin event consumer
/// </summary>
public class EventConsumer :
IConsumer<EntityUpdatedEvent<Product>>
//IConsumer<CustomerRegisteredEvent>,
//IConsumer<EntityInsertedEvent<ShoppingCartItem>>,
//IConsumer<MessageTokensAddedEvent<Token>>,
//IConsumer<ModelPreparedEvent<BaseNopModel>>,
//IConsumer<OrderPlacedEvent>,
//IConsumer<PageRenderingEvent>,
//IConsumer<ProductSearchEvent>
{
#region Fields
//protected readonly FacebookPixelService _facebookPixelService;
protected readonly IHttpContextAccessor _httpContextAccessor;
#endregion
#region Ctor
//public EventConsumer(FacebookPixelService facebookPixelService,
public EventConsumer(IHttpContextAccessor httpContextAccessor)
{
//_facebookPixelService = facebookPixelService;
_httpContextAccessor = httpContextAccessor;
}
#endregion
#region Methods
/// <summary>
/// Handle shopping cart item inserted event
/// </summary>
/// <param name="eventMessage">Event message</param>
/// <returns>A task that represents the asynchronous operation</returns>
//public async Task HandleEventAsync(EntityInsertedEvent<ShoppingCartItem> eventMessage)
//{
// if (eventMessage?.Entity != null)
// {
// //notify clients through SignalR
// }
//}
/// <summary>
/// Handle order placed event
/// </summary>
/// <param name="eventMessage">Event message</param>
/// <returns>A task that represents the asynchronous operation</returns>
//public async Task HandleEventAsync(OrderPlacedEvent eventMessage)
//{
// if (eventMessage?.Order != null)
// {
// //
// }
//}
/// <summary>
/// Handle product details model prepared event
/// </summary>
/// <param name="eventMessage">Event message</param>
/// <returns>A task that represents the asynchronous operation</returns>
//public async Task HandleEventAsync(ModelPreparedEvent<BaseNopModel> eventMessage)
//{
// if (eventMessage?.Model is ProductDetailsModel productDetailsModel)
// {
// //
// }
//}
/// <summary>
/// Handle page rendering event
/// </summary>
/// <param name="eventMessage">Event message</param>
/// <returns>A task that represents the asynchronous operation</returns>
//public async Task HandleEventAsync(PageRenderingEvent eventMessage)
//{
// var routeName = eventMessage.GetRouteName() ?? string.Empty;
// if (routeName == FacebookPixelDefaults.CheckoutRouteName || routeName == FacebookPixelDefaults.CheckoutOnePageRouteName)
// await _facebookPixelService.SendInitiateCheckoutEventAsync();
// if (_httpContextAccessor.HttpContext.GetRouteValue("area") is not string area || area != AreaNames.ADMIN)
// await _facebookPixelService.SendPageViewEventAsync();
//}
/// <summary>
/// Handle product search event
/// </summary>
/// <param name="eventMessage">Event message</param>
/// <returns>A task that represents the asynchronous operation</returns>
//public async Task HandleEventAsync(ProductSearchEvent eventMessage)
//{
// if (eventMessage?.SearchTerm != null)
// await _facebookPixelService.SendSearchEventAsync(eventMessage.SearchTerm);
//}
/// <summary>
/// Handle message token added event
/// </summary>
/// <param name="eventMessage">Event message</param>
/// <returns>A task that represents the asynchronous operation</returns>
//public async Task HandleEventAsync(MessageTokensAddedEvent<Token> eventMessage)
//{
// if (eventMessage?.Message?.Name == MessageTemplateSystemNames.CONTACT_US_MESSAGE)
// await _facebookPixelService.SendContactEventAsync();
//}
/// <summary>
/// Handle customer registered event
/// </summary>
/// <param name="eventMessage">Event message</param>
/// <returns>A task that represents the asynchronous operation</returns>
//public async Task HandleEventAsync(CustomerRegisteredEvent eventMessage)
//{
// if (eventMessage?.Customer != null)
// await _facebookPixelService.SendCompleteRegistrationEventAsync();
//}
public async Task HandleEventAsync(EntityUpdatedEvent<Product> eventMessage)
{
//send notification on SignalR
}
#endregion
}