36 lines
No EOL
1.6 KiB
C#
36 lines
No EOL
1.6 KiB
C#
using EllieBot.Db.Models;
|
|
using OneOf;
|
|
|
|
namespace EllieBot.Modules.Xp.Services;
|
|
|
|
public interface IClubService
|
|
{
|
|
Task<ClubCreateResult> CreateClubAsync(IUser user, string clubName);
|
|
OneOf<ClubInfo,ClubTransferError> TransferClub(IUser from, IUser newOwner);
|
|
Task<ToggleAdminResult> ToggleAdminAsync(IUser owner, IUser toAdmin);
|
|
ClubInfo? GetClubByMember(IUser user);
|
|
Task<SetClubIconResult> SetClubIconAsync(ulong ownerUserId, string? url);
|
|
Task<SetClubIconResult> SetClubBannerAsync(ulong ownerUserId, string? url);
|
|
bool GetClubByName(string clubName, out ClubInfo club);
|
|
ClubApplyResult ApplyToClub(IUser user, ClubInfo club);
|
|
ClubAcceptResult AcceptApplication(ulong clubOwnerUserId, string userName, out DiscordUser? discordUser);
|
|
ClubDenyResult RejectApplication(ulong clubOwnerUserId, string userName, out DiscordUser? discordUser);
|
|
ClubInfo? GetClubWithBansAndApplications(ulong ownerUserId);
|
|
ClubLeaveResult LeaveClub(IUser user);
|
|
bool SetDescription(ulong userId, string? desc);
|
|
bool Disband(ulong userId, out ClubInfo club);
|
|
ClubBanResult Ban(ulong bannerId, string userName, out ClubInfo club);
|
|
ClubUnbanResult UnBan(ulong ownerUserId, string userName, out ClubInfo club);
|
|
ClubKickResult Kick(ulong kickerId, string userName, out ClubInfo club);
|
|
List<ClubInfo> GetClubLeaderboardPage(int page);
|
|
Task<ClubRenameResult> RenameClubAsync(ulong userId, string clubName);
|
|
Task<int> GetClubRankAsync(int clubId);
|
|
}
|
|
|
|
public enum ClubApplyResult
|
|
{
|
|
Success,
|
|
AlreadyInAClub,
|
|
Banned,
|
|
AlreadyApplied
|
|
} |