Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }