示例#1
0
        public async Task <IActionResult> RuptureFriend([FromBody] RuptureFriend.Request req)
        {
            var requester = new evosequencing.ProtocolModels.Friend.RuptureFriend();

            requester.request.playerIdSrc = SelfHost.playerInfo.playerId;
            requester.request.playerIdDst = req.playerId;

            var response = await requester.PostAsyncXXX(SequencingServerInfo.Uri);

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

            if (response.Payload.resultCode == evosequencing.ProtocolModels.Friend.RuptureFriend.Response.ResultCode.Ok)
            {
                Logger.Logging(
                    new LogObj().AddChild(new LogModels.RuptureFriend
                {
                    PlayerIdSrc = SelfHost.playerInfo.playerId,
                    PlayerIdDst = req.playerId.Value,
                    Date        = DateTime.UtcNow,
                })
                    );
            }

            switch (response.Payload.resultCode)
            {
            case evosequencing.ProtocolModels.Friend.RuptureFriend.Response.ResultCode.Ok:
            case evosequencing.ProtocolModels.Friend.RuptureFriend.Response.ResultCode.NotFriend:
                var res = new RuptureFriend.Response();
                await GetFriendsResponse(res);

                return(Ok(res));

            default:
                return(BuildErrorResponse(Error.LowCode.Others));
            }
        }
        public async Task <IActionResult> RuptureFriend([FromBody] RuptureFriend.Request req)
        {
            var res = new RuptureFriend.Response();

            res.resultCode = ProtocolModels.Friend.RuptureFriend.Response.ResultCode.Unknown;

            await DependJobManager.Enqueue(req.playerIdSrc.Value, req.playerIdDst.Value, async() =>
            {
                var friend = Friend.Create(req.playerIdSrc.Value, req.playerIdDst.Value);
                friend     = await Common2DB.Friends.FindAsync(friend.playerIdL, friend.playerIdR);
                if (null == friend)
                {
                    res.resultCode = ProtocolModels.Friend.RuptureFriend.Response.ResultCode.NotFriend;
                    return;
                }

                Common2DB.Friends.Remove(friend);

                await Common2DB.SaveChangesAsync();

                res.resultCode = ProtocolModels.Friend.RuptureFriend.Response.ResultCode.Ok;


                //{
                //	var r = new FavoriteFriend
                //	{
                //		playerId = req.playerIdSrc.Value,
                //		favoritePlayerId = req.playerIdDst.Value,
                //	};

                //	var db = pdbsm.PersonalDBContext(req.playerIdSrc.Value);
                //	db.FavoriteFriends.Attach(r);
                //	db.FavoriteFriends.Remove(r);
                //	await db.SaveChangesAsync();
                //}
                //{
                //	var r = new FavoriteFriend
                //	{
                //		playerId = req.playerIdDst.Value,
                //		favoritePlayerId = req.playerIdSrc.Value,
                //	};

                //	var db = pdbsm.PersonalDBContext(req.playerIdDst.Value);
                //	db.FavoriteFriends.Attach(r);
                //	db.FavoriteFriends.Remove(r);
                //	await db.SaveChangesAsync();
                //}



                //PUSH
                var player = new Player(req.playerIdDst.Value);
                await player.FetchAsync();
                if (await new Session(player.Model.sessionId).ExistsAsync())
                {
                    await new ConnectionQueue(player.Model.sessionId).EnqueueAsync(new UpdateFriends());
                }
            });

            return(Ok(res));
        }