66 lines
2.8 KiB
C#
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;
|
|
}
|
|
}
|