using System.Globalization;
using System.Linq;

namespace InABox.Core
{
    public abstract class DisabledSecurityDescriptor<TLicense> : BaseSecurityDescriptor<TLicense> where TLicense : LicenseToken
    {
        public override bool Value => false;
    }

    public abstract class DisabledSecurityDescriptor<TLicense, TEntity> : DisabledSecurityDescriptor<TLicense>
        where TLicense : LicenseToken where TEntity : Entity, new()
    {
        public override string Category => new Inflector.Inflector(new CultureInfo("en"))
            .Pluralize(
                typeof(TEntity).EntityName().Split('.').Last().SplitCamelCase()
            );
    }

    public abstract class DisabledSecurityDescriptor<TLicense, TEntity1, TEntity2> : DisabledSecurityDescriptor<TLicense, TEntity1>
        where TLicense : LicenseToken where TEntity1 : Entity, new() where TEntity2 : Entity, new()
    {
    }
}