using Microsoft.Extensions.Localization;
using System.Reflection;
using ZeroFramework.DeviceCenter.Application.Services.Permissions;

namespace ZeroFramework.DeviceCenter.Application.PermissionProviders
{
    public class TenantPermissionDefinitionProvider(IStringLocalizerFactory factory) : IPermissionDefinitionProvider
    {
        private readonly IStringLocalizer _localizer = factory.Create("Permissions.MyPermissions", Assembly.GetExecutingAssembly().FullName ?? string.Empty);

        public void Define(PermissionDefinitionContext context)
        {
            var productGroup = context.AddGroup(TenantPermissions.GroupName, _localizer["Permission:TenantManager"]);

            var productManagement = productGroup.AddPermission(TenantPermissions.Tenants.Default, _localizer["Permission:TenantManager.Tenants"]);

            productManagement.AddChild(TenantPermissions.Tenants.Create, _localizer["Permission:TenantManager.Tenants.Creeate"]);
            productManagement.AddChild(TenantPermissions.Tenants.Edit, _localizer["Permission:TenantManager.Tenants.Edit"]);
            productManagement.AddChild(TenantPermissions.Tenants.Delete, _localizer["Permission:TenantManager.Tenants.Delete"]);

            productManagement.AddChild(TenantPermissions.Tenants.ConnectionString, _localizer["Permission:TenantManager.Tenants.ConnectionString"]);

        }
    }
}