using AyCode.Core.Extensions; using AyCode.Utils.Extensions; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.SignalR; using Nop.Core; using Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos; using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums; using Nop.Plugin.Misc.AuctionPlugin.Hubs; using Nop.Plugin.Misc.AuctionPlugin.Hubs.Messages; using Nop.Plugin.Misc.AuctionPlugin.Models; using Nop.Plugin.Misc.AuctionPlugin.Services; using Nop.Services.Cms; using Nop.Services.Customers; using Nop.Services.Logging; using Nop.Web.Framework.Components; using Nop.Web.Framework.Infrastructure; namespace Nop.Plugin.Misc.AuctionPlugin.Components { [ViewComponent(Name = "LiveAnnouncement")] public class LiveAnnouncementViewComponent(ILogger logger, ILockService lockService, IWorkContext workContext, IWidgetPluginManager widgetPluginManager, AuctionService auctionService, IHubContext auctionHubContext, ICustomerService customerService) : NopViewComponent { public async Task InvokeAsync(string widgetZone, object additionalData) { var customer = await workContext.GetCurrentCustomerAsync(); var currency = await workContext.GetWorkingCurrencyAsync(); await logger.InformationAsync($"LiveAnnouncementViewComponent.InvokeAsync(); widgetZone: {widgetZone}, customer: {customer.Email}", null, customer); if (!await widgetPluginManager.IsPluginActiveAsync(AuctionDefaults.SystemName, customer)) return Content(string.Empty); await logger.InformationAsync("LiveAnnouncementViewComponent.InvokeAsync(); SignalR Widget: widget active"); if (!widgetZone.Equals(PublicWidgetZones.BodyStartHtmlTagAfter)) return Content(string.Empty); LiveAnnouncementViewModel myModel = new LiveAnnouncementViewModel(); myModel.CustomerId = customer.Id; myModel.StoreId = customer.RegisteredInStoreId; //Temporary - A. myModel.WorkingCurrency = currency; myModel.IsAdmin = await customerService.IsAdminAsync(customer); myModel.IsGuest = await customerService.IsGuestAsync(customer); return View("~/Plugins/Misc.AuctionPlugin/Views/LiveAnnouncement.cshtml", myModel); } } }