.clubtransfer added, transfer ownership of your club

This commit is contained in:
Master Kwoth
2017-11-18 04:42:44 +01:00
parent 44d78ffcfe
commit 2be7774f11
4 changed files with 48 additions and 5 deletions

View File

@ -51,6 +51,27 @@ namespace NadekoBot.Modules.Xp.Services
return true;
}
public ClubInfo TransferClub(IUser from, IUser newOwner)
{
ClubInfo club;
using (var uow = _db.UnitOfWork)
{
club = uow.Clubs.GetByOwner(from.Id);
var newOwnerUser = uow.DiscordUsers.GetOrCreate(newOwner);
if (club == null ||
club.Owner.UserId != from.Id ||
!club.Users.Contains(newOwnerUser))
return null;
club.Owner.IsClubAdmin = true; // old owner will stay as admin
newOwnerUser.IsClubAdmin = true;
club.Owner = newOwnerUser;
uow.Complete();
}
return club;
}
public bool ToggleAdmin(IUser owner, IUser toAdmin)
{
bool newState;
@ -58,14 +79,14 @@ namespace NadekoBot.Modules.Xp.Services
{
var club = uow.Clubs.GetByOwner(owner.Id);
var adminUser = uow.DiscordUsers.GetOrCreate(toAdmin);
if (club.OwnerId == adminUser.Id)
return true;
if (club == null || club.Owner.UserId != owner.Id ||
!club.Users.Contains(adminUser))
throw new InvalidOperationException();
if (club.OwnerId == adminUser.Id)
return true;
newState = adminUser.IsClubAdmin = !adminUser.IsClubAdmin;
uow.Complete();
}