Files
mixtape/zero.Core/Configuration/ConfigurationParts/PermissionOptions.cs
T
2021-11-22 14:29:22 +01:00

52 lines
1.1 KiB
C#

namespace zero.Configuration;
public class PermissionOptions : OptionsEnumerable<PermissionCollection>, IOptionsEnumerable
{
public void AddCollection(PermissionCollection collection, int index = -1)
{
if (index > -1 && index < Items.Count)
{
Items.Insert(index, collection);
}
else
{
Items.Add(collection);
}
}
public void AddCollection<T>(int index = -1) where T : PermissionCollection, new()
{
if (index > -1 && index < Items.Count)
{
Items.Insert(index, new T());
}
else
{
Items.Add(new T());
}
}
public void Add(string collectionAlias, Permission permission, int index = -1)
{
PermissionCollection collection = Items.FirstOrDefault(x => x.Alias.Equals(collectionAlias, StringComparison.InvariantCultureIgnoreCase));
if (collection == null)
{
// TODO handle error
return;
}
IList<Permission> items = collection.Items;
if (index > -1 && index < items.Count)
{
items.Insert(index, permission);
}
else
{
items.Add(permission);
}
}
}