private async void ResponseMoveGroup(Req0006 req, Res0006 res)
 {
     await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
     {
         Packet0006Received?.Invoke(this, new Packet0006ReceivedEventArgs(req, res));
     });
 }
示例#2
0
        public void RequestMoveGroup(Req0006 req)
        {
            Res0006 res = null;

            String CurrentLocation = Singleton <DatabaseService> .Instance.GetUserCurrentLocation(req.UserID, out Boolean ex);

            String SendUser = Singleton <DatabaseService> .Instance.GetUserName(req.UserID);

            if (ex)
            {
                res = new Res0006()
                {
                    Request = req, SendFrom = SendUser, NewGroupName = "Exception", OldGroupName = "Exception", Message = CurrentLocation
                };
                Clients.Caller.ResponseMoveGroup(req, res);
            }
            else
            {
                if (CurrentLocation.Equals(req.ExpectedOldGroupName))
                {
                    Boolean Result = Singleton <DatabaseService> .Instance.UpdateUserCurrentLocation(req.UserID, req.NewGroupName);

                    if (Result)
                    {
                        Groups.Remove(this.Context.ConnectionId, CurrentLocation);
                        Groups.Add(this.Context.ConnectionId, req.NewGroupName);
                        res = new Res0006()
                        {
                            Request = req, SendFrom = SendUser, NewGroupName = req.NewGroupName, OldGroupName = CurrentLocation, IsMoved = true, Message = $"{CurrentLocation} => {req.NewGroupName} 이동 성공"
                        };
                        Clients.Caller.ResponseMoveGroup(req, res);
                        if (!String.IsNullOrWhiteSpace(req.ExpectedOldGroupName))
                        {
                            //Clients.OthersInGroup(req.ExpectedOldGroupName).ResponseMoveGroup(req, res);
                            Clients.Others.ResponseMoveGroup(req, res);
                        }
                        //Clients.OthersInGroup(req.NewGroupName).ResponseMoveGroup(req, res); //20190206 그룹내 전송
                        Clients.Others.ResponseMoveGroup(req, res); //나 이외에 전송
                    }
                    else
                    {
                        res = new Res0006()
                        {
                            Request = req, SendFrom = SendUser, NewGroupName = "Exception", OldGroupName = "Exception", Message = "DB갱신에 오류가 있습니다"
                        };
                        Clients.Caller.ResponseMoveGroup(req, res);
                    }
                }
                else
                {
                    //개발용 로직
                    if (req.NewGroupName.Equals(Models.CurrentLocation.Init.ToString()) & req.ExpectedOldGroupName.Equals(Models.CurrentLocation.None.ToString()))
                    {
                        res = new Res0006()
                        {
                            Request = req, SendFrom = SendUser, NewGroupName = req.NewGroupName, OldGroupName = req.ExpectedOldGroupName, IsMoved = true, Message = "초기로그인 입니다"
                        };
                        Clients.Others.ResponseMoveGroup(req, res); //나 이외에 전송
                    }
                    else
                    {
                        res = new Res0006()
                        {
                            Request = req, SendFrom = SendUser, NewGroupName = "Exception", OldGroupName = "Exception", Message = "요청한 현재 그룹이 서버와 일치하지않습니다"
                        }
                    };
                    Clients.Caller.ResponseMoveGroup(req, res);
                }
            }
        }