public async Task <IActionResult> Kick([FromBody] Kick.Request req)
        {
            var requester = new evomatching.ProtocolModels.PremadeGroup.Kick();

            requester.request.playerIdSrc = SelfHost.playerInfo.playerId;
            requester.request.playerIdDst = req.playerId;
            var response = await requester.PostAsyncXXX(MatchingServerInfo.AreaUri(SelfHost.matchingArea));

            if (response.StatusCode != System.Net.HttpStatusCode.OK)
            {
                return(BuildErrorResponse(Error.LowCode.ServerInternalError));
            }

            switch (response.Payload.resultCode)
            {
            case evomatching.ProtocolModels.PremadeGroup.Kick.Response.ResultCode.Ok:
                return(Ok(new Kick.Response()));

            default:
                return(BuildErrorResponse(Error.LowCode.BadRequest));
            }
        }
        public async Task <IActionResult> Kick(
            [FromBody] Kick.Request req, [FromServices] GeneralManager gm)
        {
            var res = new Kick.Response();

            await gm.EnqueueJob(async() =>
            {
                if (gm.BattleEntryManager.Entried(req.playerIdSrc.Value))
                {
                    res.resultCode = ProtocolModels.PremadeGroup.Kick.Response.ResultCode.AlreadyEntry;
                    return;
                }

                if (null != gm.MatchManager.GetAssignedMatch(req.playerIdSrc.Value))
                {
                    res.resultCode = ProtocolModels.PremadeGroup.Kick.Response.ResultCode.AlreadyBattle;
                    return;
                }

                var group = gm.PremadeGroupManager.GetBelongs(req.playerIdSrc.Value);
                if (group == null)
                {
                    res.resultCode = ProtocolModels.PremadeGroup.Kick.Response.ResultCode.NotGroup;
                    return;
                }

                if (group.LeaderPlayerId != req.playerIdSrc)
                {
                    res.resultCode = ProtocolModels.PremadeGroup.Kick.Response.ResultCode.NotLeader;
                    return;
                }

                List <long> playerIds = new List <long>();
                for (int i = 0; i < group.Players.Count; i++)
                {
                    var member = group.Players[i];
                    if (member.PlayerId == req.playerIdDst.Value)
                    {
                        continue;
                    }
                    playerIds.Add(member.PlayerId);
                }
                Logger.Logging(
                    new LogObj().AddChild(new LogModels.UpdateParty
                {
                    GroupId   = group.GroupId,
                    PlayerId  = req.playerIdDst.Value,
                    Date      = DateTime.UtcNow,
                    Type      = evolib.PremadeGroup.Type.Kick,
                    PlayerIds = playerIds,
                })
                    );

                var members = gm.PremadeGroupManager.Kick(req.playerIdSrc.Value, req.playerIdDst.Value);
                for (int i = 0; i < members.Count; i++)
                {
                    var player = members[i];
                    await new ConnectionQueue(player.SessionId).EnqueueAsync(
                        gm.CreatePremadeGroupQueueData(player.PlayerId)
                        );
                }

                res.resultCode = ProtocolModels.PremadeGroup.Kick.Response.ResultCode.Ok;
            });

            return(Ok(res));
        }