QrRapido/Services/Ads/ConfigurationAdSlotProvider.cs
Ricardo Carneiro 8b3da7cb0a
All checks were successful
Deploy QR Rapido / test (push) Successful in 3m59s
Deploy QR Rapido / build-and-push (push) Successful in 12m31s
Deploy QR Rapido / deploy-staging (push) Has been skipped
Deploy QR Rapido / deploy-production (push) Successful in 2m17s
feat: Criação de tutoriais e remoçaõ de anuncios.
2025-10-18 23:18:12 -03:00

50 lines
1.5 KiB
C#

using System;
using System.Globalization;
using Microsoft.Extensions.Options;
using QRRapidoApp.Models.Ads;
namespace QRRapidoApp.Services.Ads
{
public class ConfigurationAdSlotProvider : IAdSlotConfigurationProvider
{
private readonly IOptionsSnapshot<AdsConfigurationOptions> _options;
public ConfigurationAdSlotProvider(IOptionsSnapshot<AdsConfigurationOptions> options)
{
_options = options;
}
public AdSlotConfiguration GetSlot(string slotKey, string? cultureName = null)
{
var resolvedCulture = cultureName;
if (string.IsNullOrWhiteSpace(resolvedCulture))
{
resolvedCulture = CultureInfo.CurrentUICulture?.Name;
}
var slot = _options.Value.GetSlot(slotKey, resolvedCulture);
if (string.Equals(slot.Provider, "Affiliate", StringComparison.OrdinalIgnoreCase))
{
if (slot.Affiliate == null || slot.Affiliate.IsEmpty())
{
// Fallback gracefully to AdSense if affiliate content is not properly configured.
return new AdSlotConfiguration
{
Provider = "AdSense",
AdSenseSlotId = slot.AdSenseSlotId
};
}
slot.Provider = "Affiliate"; // normalize casing
}
else
{
slot.Provider = "AdSense";
}
return slot;
}
}
}