public async Task CheckMaster() { if (Players.Any(x => x.Value.Rank == ClubRank.Master)) { return; } var nextMaster = Players.Values.OrderBy(x => x.Rank).FirstOrDefault(x => x.Rank <= ClubRank.Regular); if (nextMaster != null) { nextMaster.Rank = ClubRank.Master; using (var db = GameDatabase.Open()) { var nextMasterDto = new ClubPlayerDto { PlayerId = nextMaster.Account.Id, ClubId = Id, Rank = (byte)ClubRank.Master, State = (int)ClubState.Joined }; await DbUtil.UpdateAsync(db, nextMasterDto); } Logger.Information("Passing Master to next Staff"); Logger.Information("Auto MasterChange in Clan {0} to player {1}", ClanName, nextMaster.Account.Nickname); } }
public async Task <bool> ChangeMaster(Player plr, ulong target) { if (Players.TryGetValue(plr.Account.Id, out var clubMaster)) { if (Players.TryGetValue(target, out var clubPlr)) { if (clubMaster.Rank == ClubRank.Master) { clubPlr.Rank = ClubRank.Master; clubMaster.Rank = ClubRank.Regular; var plrDto = new ClubPlayerDto { PlayerId = clubPlr.Account.Id, ClubId = Id, Rank = (byte)ClubRank.Master, State = (int)ClubState.Joined }; var oldMasterDto = new ClubPlayerDto { PlayerId = clubMaster.Account.Id, ClubId = Id, Rank = (byte)ClubRank.Regular, State = (int)ClubState.Joined }; using (var db = GameDatabase.Open()) { await DbUtil.UpdateAsync(db, plrDto); await DbUtil.UpdateAsync(db, oldMasterDto); } return(true); } } } return(false); }
public async Task <bool> ForceChangeMaster(ulong target) { if (!Players.TryGetValue(target, out var clubPlr)) { return(false); } var clubMaster = Players.FirstOrDefault(x => x.Value.Rank == ClubRank.Master).Value; if (clubMaster != null) { clubMaster.Rank = ClubRank.Regular; using (var db = GameDatabase.Open()) { var oldMasterDto = new ClubPlayerDto { PlayerId = clubMaster.Account.Id, ClubId = Id, Rank = (byte)ClubRank.Regular, State = (int)ClubState.Joined }; await DbUtil.UpdateAsync(db, oldMasterDto); } } clubPlr.Rank = ClubRank.Master; var plrDto = new ClubPlayerDto { PlayerId = clubPlr.Account.Id, ClubId = Id, Rank = (byte)ClubRank.Master, State = (int)ClubState.Joined }; using (var db = GameDatabase.Open()) { await DbUtil.UpdateAsync(db, plrDto); } return(true); }
public async Task <bool> ChangeStaffStatus(ulong target, bool isStaff) { if (!Players.TryGetValue(target, out var clubPlr)) { return(false); } clubPlr.Rank = isStaff ? ClubRank.Staff : ClubRank.Regular; var plrDto = new ClubPlayerDto { PlayerId = clubPlr.Account.Id, ClubId = Id, Rank = (byte)(isStaff ? ClubRank.Staff : ClubRank.Regular), State = (int)ClubState.Joined }; using (var db = GameDatabase.Open()) { await DbUtil.UpdateAsync(db, plrDto); } return(true); }