#nullable enable using BTCPayServer.Abstractions.Models; using BTCPayServer.Data; using BTCPayServer.Plugins.Emails; using BTCPayServer.Services; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; namespace BTCPayServer.Plugins.Monetization; public class MonetizationPlugin : BaseBTCPayServerPlugin { public const string Area = "Monetization"; public override string Identifier => "BTCPayServer.Plugins.Monetization"; public override string Name => "Monetization"; public override string Description => "Manage monetization of your server."; public override void Execute(IServiceCollection services) { services.AddUIExtension("server-nav", "/Plugins/Monetization/Views/NavExtension.cshtml"); services.AddUIExtension("user-nav", "/Plugins/Monetization/Views/UserNavExtension.cshtml"); services.AddSingleton(); services.AddSingleton(o => o.GetRequiredService()); services.AddSettingsAccessor(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddDefaultTranslations(MonetizationEmailTriggerTransformer.TranslatedStrings); services.AddMigration("20260106_cleanupappidentities", """ WITH orphan AS ( SELECT value FROM customers_identities ci LEFT JOIN "AspNetUsers" u ON u."Id" = value WHERE ci.type = 'ApplicationUserId' AND u."Id" IS NULL ) DELETE FROM customers_identities ci USING orphan u WHERE ci.type = 'ApplicationUserId' AND u.value = ci.value; """); } }