Exemplo n.º 1
0
        public async Task Join(HubRequest <MessengerConnection> request)
        {
            // Set connection Id
            request.Data.ConnectionId = Context.ConnectionId;
            request.Data.DeviceId     = request.Data.DeviceId ?? defaultDevice;
            // Mapping connecting user to db  models
            var user = new Messenger.ViewModels.MixMessengerUsers.ConnectViewModel(request.Data);

            user.CreatedDate = DateTime.UtcNow;
            // Save user and current device to db
            var result = await user.Join();

            //  save success
            if (result.IsSucceed)
            {
                //  Send success msg to caller
                var getAvailableUsers = Messenger.ViewModels.MixMessengerUsers.DefaultViewModel.Repository.GetModelListBy(u => u.Status == (int)MixChatEnums.OnlineStatus.Connected);
                SendToCaller(getAvailableUsers.Data, MessageReponseKey.ConnectSuccess);
                // Announce every one there's new member
                SendToAll(user, MessageReponseKey.NewMember, false);
            }
            else
            {
                //  Send failed msg to caller
                SendToConnection(result, MessageReponseKey.ConnectFailed, Context.ConnectionId, false);
            }
        }
Exemplo n.º 2
0
        private Task JoinGroup(HubRequest <JObject> request)
        {
            var groupMembers = GetGroupMembers(request);
            var connection   = request.Data.ToObject <MessengerConnection>();

            // Set connection Id
            connection.ConnectionId = Context.ConnectionId;
            connection.DeviceId     = connection.DeviceId ?? MixConstants.ServiceHub.DefaultDevice;
            // Mapping connecting user to db  models
            var user = new Messenger.ViewModels.MixMessengerUsers.ConnectViewModel(connection)
            {
                CreatedDate = DateTime.UtcNow
            };

            // Save user and current device to db
            return(user.Join().ContinueWith((task) =>
            {
                //  save success
                if (task.Result.IsSucceed)
                {
                    // Get Online users
                    var getAvailableUsers = Messenger.ViewModels.MixMessengerUsers.DefaultViewModel.Repository.GetModelListBy(u => u.Status == (int)Messenger.MixChatEnums.OnlineStatus.Connected);
                    var hubMsg = new RepositoryResponse <MessengerConnection>()
                    {
                        Status = 200,
                        Data = connection
                    };
                    return Task.WhenAll(new Task[]
                    {
                        Groups.AddToGroupAsync(Context.ConnectionId, request.Room),
                        SendToCaller(getAvailableUsers.Data, MessageReponseKey.ConnectSuccess),
                        SendToGroup(connection, MessageReponseKey.NewMember, request.Room),
                        // Announce every one there's new member
                        SendToAll(user, MessageReponseKey.NewMember, false)
                    });
                }
                else
                {
                    //  Send failed msg to caller
                    return SendToConnection(task.Result, MessageReponseKey.ConnectFailed, Context.ConnectionId, false);
                }
            }));
        }