예제 #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 gang = _gangManager.GetGangByMember(character);
                if (gang == null)
                {
                    throw new PerpetuumException(ErrorCodes.CharacterNotInGang);
                }

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

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

                _gangManager.RemoveMember(gang, member, true);

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

                scope.Complete();
            }
        }
예제 #2
0
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var character = request.Session.Character;

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

                _gangManager.RemoveMember(gang, character, false);

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

                scope.Complete();
            }
        }
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var account   = _accountManager.Repository.Get(request.Session.AccountId).ThrowIfNull(ErrorCodes.AccountNotFound);
                var character = Character.Get(request.Data.GetOrDefault <int>(k.characterID));

                account.Id.ThrowIfNotEqual(character.AccountId, ErrorCodes.AccessDenied);

                Corporation.GetRoleFromSql(character).ThrowIfNotEqual(CorporationRole.NotDefined, ErrorCodes.MemberHasRolesError);

                //temporary ep penalty

                _accountManager.InsertPenaltyPoint(account, AccountExtensionPenaltyType.CharacterDelete, CHARACTER_DELETE_EP_PENALTY, false);

                character.IsActive = false;
                character.SetActiveRobot(null);

                var gang = _gangManager.GetGangByMember(character);
                _gangManager.RemoveMember(gang, character, false);

                // clean up channels
                _channelManager.LeaveAllChannels(character);

                //clean corp and know character data
                character.CleanGameRelatedData();

                var oldCorporation = character.GetCorporation();

                //if he was in private corp -> move the member to his default corp
                if (oldCorporation is PrivateCorporation)
                {
                    character.GetDefaultCorporation().AddMember(character, CorporationRole.NotDefined, oldCorporation);
                    oldCorporation.RemoveMember(character);
                }

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

                scope.Complete();
            }
        }
예제 #4
0
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var character = request.Session.Character;
                var gangName  = request.Data.GetOrDefault <string>(k.name);
                var memberId  = request.Data.GetOrDefault <int>(k.characterID);

                var currentGang = _gangManager.GetGangByMember(character);
                _gangManager.RemoveMember(currentGang, character, false);

                var newGang = _gangManager.CreateGang(gangName, character);

                Transaction.Current.OnCommited(() =>
                {
                    var result = newGang.ToDictionary();
                    result.Add(k.characterID, memberId);
                    Message.Builder.FromRequest(request).WithData(result).Send();
                });

                scope.Complete();
            }
        }