using Microsoft.AspNetCore.Html; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.ViewComponents; using Nop.Core; using Nop.Plugin.Payments.PayPalCommerce.Services; using Nop.Services.Payments; using Nop.Web.Framework.Components; using Nop.Web.Framework.Infrastructure; namespace Nop.Plugin.Payments.PayPalCommerce.Components; /// /// Represents the view component to display logo /// public class LogoViewComponent : NopViewComponent { #region Fields protected readonly IPaymentPluginManager _paymentPluginManager; protected readonly IStoreContext _storeContext; protected readonly IWorkContext _workContext; protected readonly PayPalCommerceSettings _settings; #endregion #region Ctor public LogoViewComponent(IPaymentPluginManager paymentPluginManager, IStoreContext storeContext, IWorkContext workContext, PayPalCommerceSettings settings) { _paymentPluginManager = paymentPluginManager; _storeContext = storeContext; _workContext = workContext; _settings = settings; } #endregion #region Methods /// /// Invoke view component /// /// Widget zone name /// Additional data /// /// A task that represents the asynchronous operation /// The task result contains the view component result /// public async Task InvokeAsync(string widgetZone, object additionalData) { var customer = await _workContext.GetCurrentCustomerAsync(); var store = await _storeContext.GetCurrentStoreAsync(); if (!await _paymentPluginManager.IsPluginActiveAsync(PayPalCommerceDefaults.SystemName, customer, store?.Id ?? 0)) return Content(string.Empty); if (!ServiceManager.IsConfigured(_settings)) return Content(string.Empty); var script = widgetZone.Equals(PublicWidgetZones.HeaderLinksBefore) && _settings.DisplayLogoInHeaderLinks ? _settings.LogoInHeaderLinks : (widgetZone.Equals(PublicWidgetZones.Footer) && _settings.DisplayLogoInFooter ? _settings.LogoInFooter : null); return new HtmlContentViewComponentResult(new HtmlString(script ?? string.Empty)); } #endregion }