using Grand.Business.Core.Interfaces.Cms;
using Grand.Business.Core.Interfaces.Common.Localization;

namespace Widgets.FacebookPixel;

public class FacebookPixelProvider : IWidgetProvider
{
    private readonly FacebookPixelSettings _facebookPixelSettings;
    private readonly ITranslationService _translationService;

    public FacebookPixelProvider(
        FacebookPixelSettings facebookPixelSettings,
        ITranslationService translationService)
    {
        _facebookPixelSettings = facebookPixelSettings;
        _translationService = translationService;
    }

    public string ConfigurationUrl => FacebookPixelDefaults.ConfigurationUrl;

    public string SystemName => FacebookPixelDefaults.ProviderSystemName;

    public string FriendlyName => _translationService.GetResource(FacebookPixelDefaults.FriendlyName);

    public int Priority => _facebookPixelSettings.DisplayOrder;

    public IList<string> LimitedToStores => new List<string>();

    public IList<string> LimitedToGroups => new List<string>();

    /// <summary>
    ///     Gets widget zones where this widget should be rendered
    /// </summary>
    /// <returns>Widget zones</returns>
    public async Task<IList<string>> GetWidgetZones()
    {
        return await Task.FromResult(new List<string> {
            FacebookPixelDefaults.Page, FacebookPixelDefaults.AddToCart, FacebookPixelDefaults.OrderDetails
        });
    }

    public Task<string> GetPublicViewComponentName(string widgetZone)
    {
        return Task.FromResult("WidgetsFacebookPixel");
    }
}