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

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

        public void Define(PermissionDefinitionContext context)
        {
            var measurementGroup = context.AddGroup(MeasurementPermissions.GroupName, _localizer["Permission:MeasurementManager"]);

            var measurementManagement = measurementGroup.AddPermission(MeasurementPermissions.Measurements.Default, _localizer["Permission:MeasurementManager.Measurements"]);
            measurementManagement.AddChild(MeasurementPermissions.Measurements.DevicePropertyValues, _localizer["Permission:MeasurementManager.Measurements.DevicePropertyValues"]);
            measurementManagement.AddChild(MeasurementPermissions.Measurements.DevicePropertyHistoryValues, _localizer["Permission:MeasurementManager.Measurements.DevicePropertyHistoryValues"]);
            measurementManagement.AddChild(MeasurementPermissions.Measurements.DevicePropertyReports, _localizer["Permission:MeasurementManager.Measurements.DevicePropertyReports"]);
            measurementManagement.AddChild(MeasurementPermissions.Measurements.SetDevicePropertyValues, _localizer["Permission:MeasurementManager.Measurements.SetDevicePropertyValues"]);
        }
    }
}