예제 #1
0
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var character = request.Session.Character;
                var member    = Character.Get(request.Data.GetOrDefault <int>(k.memberID));
                var newRole   = (GangRole)request.Data.GetOrDefault <int>(k.role);

                var gang = _gangManager.GetGangByMember(character);
                if (gang == null)
                {
                    throw new PerpetuumException(ErrorCodes.CharacterNotInGang);
                }

                if (member == gang.Leader)
                {
                    return;
                }

                if (!gang.CanSetRole(character))
                {
                    throw new PerpetuumException(ErrorCodes.OnlyGangLeaderOrAssistantCanDoThis);
                }

                _gangManager.SetRole(gang, member, newRole);

                Message.Builder.FromRequest(request).WithOk().Send();

                scope.Complete();
            }
        }