using Microsoft.AspNetCore.Mvc; using Nop.Core; using Nop.Plugin.Misc.AuctionPlugin; using Nop.Plugin.Misc.AuctionPlugin.Models; using Nop.Services.Cms; using Nop.Services.Logging; using Nop.Web.Framework.Components; using Nop.Web.Framework.Infrastructure; using Nop.Web.Models.Catalog; namespace Nop.Plugin.Widgets.AuctionPlugin.Components; public class AuctionViewComponent : NopViewComponent { #region Fields protected readonly ILogger _logger; protected readonly IWidgetPluginManager _widgetPluginManager; protected readonly IWorkContext _workContext; protected readonly AuctionSettings _auctionSettings; #endregion #region Ctor public AuctionViewComponent(ILogger logger, IWidgetPluginManager widgetPluginManager, IWorkContext workContext, AuctionSettings auctionSettings) { _logger = logger; _widgetPluginManager = widgetPluginManager; _workContext = workContext; _auctionSettings = auctionSettings; } #endregion #region Methods /// /// Invoke the widget view component /// /// Widget zone /// Additional parameters /// /// A task that represents the asynchronous operation /// The task result contains the view component result /// public async Task InvokeAsync(string widgetZone, object additionalData) { await _logger.InformationAsync("Auction widget called"); //ensure that a widget is active and enabled var customer = await _workContext.GetCurrentCustomerAsync(); //if (!await _widgetPluginManager.IsPluginActiveAsync(AuctionDefaults.SystemName, customer)) // return Content(string.Empty); //if (!_auctionSettings.Enabled) // return Content(string.Empty); if (string.IsNullOrEmpty(_auctionSettings.SomeText)) { await _logger.ErrorAsync("Message error: message is not set", customer: customer); return Content(string.Empty); } ////display this on the checkout pages only //if (ViewData.TemplateInfo.HtmlFieldPrefix != What3wordsDefaults.BillingAddressPrefix && // ViewData.TemplateInfo.HtmlFieldPrefix != What3wordsDefaults.ShippingAddressPrefix) //{ // return Content(string.Empty); //} var model = new AuctionPublicInfoModel(); if (widgetZone.Equals(PublicWidgetZones.ProductDetailsBottom)) { model.Message = $"Auction plugin is active, setting = {_auctionSettings.SomeText}, productId = {((ProductDetailsModel)additionalData).Name}"; } else { model.Message = _auctionSettings.SomeText; } return View("~/Plugins/Misc.AuctionPlugin/Views/PublicInfo.cshtml", model); } #endregion }