Files
Library/OwnChar/Manager/Modules/GroupsManager.cs
Schedel Pascal 9e77090bd4 completely rework IDataProvider
- make it more dynamic
- prevent incremental method count increase
2024-07-09 10:13:38 +02:00

66 lines
2.8 KiB
C#

using OwnChar.Api;
using OwnChar.Data;
using OwnChar.Model;
namespace OwnChar.Manager.Modules;
public class GroupsManager(OwnCharManager manager) : OwnCharManagerModule(manager), IGroupsManager
{
public UserProfile? GetOwner(Group? group)
{
ArgumentNullException.ThrowIfNull(group, nameof(group));
Manager.CheckLogin();
return Manager.DataManager.ExecuteAction(DataManagerActions.Association.Owner, DataManagerActionType.Get, Manager.CurrentUser, group).Result as UserProfile;
}
public IQueryable<Group>? GetGroups(UserProfile? profile)
{
ArgumentNullException.ThrowIfNull(profile, nameof(profile));
Manager.CheckLogin();
return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.Group, DataManagerActionType.Get, Manager.CurrentUser, profile) as IQueryable<Group>;
}
public IQueryable<Group>? GetGroups()
{
Manager.CheckLogin();
return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.Group, DataManagerActionType.Get, Manager.CurrentUser, null) as IQueryable<Group>;
}
public IQueryable<UserProfile>? GetMembers(Group? group)
{
ArgumentNullException.ThrowIfNull(group, nameof(group));
Manager.CheckLogin();
return Manager.DataManager.ExecuteAction(DataManagerActions.Association.Members, DataManagerActionType.Get, Manager.CurrentUser, group).Result as IQueryable<UserProfile>;
}
public bool AddMember(UserProfile? profile, Group? group)
{
ArgumentNullException.ThrowIfNull(profile, nameof(profile));
ArgumentNullException.ThrowIfNull(group, nameof(group));
Manager.CheckLogin();
return Manager.DataManager.ExecuteAction(DataManagerActions.Association.Members, DataManagerActionType.Set, Manager.CurrentUser, group, profile).HasSuccess;
}
public bool RemoveMember(UserProfile? profile, Group? group)
{
ArgumentNullException.ThrowIfNull(profile, nameof(profile));
ArgumentNullException.ThrowIfNull(group, nameof(group));
Manager.CheckLogin();
return Manager.DataManager.ExecuteAction(DataManagerActions.Association.Members, DataManagerActionType.Delete, Manager.CurrentUser, group, profile).HasSuccess;
}
public Group? CreateGroup(string? name)
{
ArgumentException.ThrowIfNullOrWhiteSpace(name, nameof(name));
Manager.CheckLogin();
return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.Group, DataManagerActionType.Set, Manager.CurrentUser, null, name).Result as Group;
}
public bool DeleteGroup(Group? group)
{
ArgumentNullException.ThrowIfNull(group, nameof(group));
Manager.CheckLogin();
return Manager.DataManager.ExecuteAction(DataManagerActions.Delete, DataManagerActionType.Default, Manager.CurrentUser, group).HasSuccess;
}
}