Ejemplo n.º 1
0
        public void InviteFriendRequest(string UserName)
        {
            Wait();
            Room room = Rooms.FirstOrDefault(r => r.ContainUserHasUserName(UserName));

            if (room != null)
            {
                Common_Library.User user   = room.GetUserByUserName(UserName);
                OnlineUser          sender = OnlineUsers.FirstOrDefault(o => o.HasConnectionId(Context.ConnectionId));
                Clients.Client(user.ConnectionId).InviteFriendRequest(sender.Account.UserName, Context.ConnectionId);
            }
            else
            {
                OnlineUser onlineUser = OnlineUsers.FirstOrDefault(o => o.HasAccount(UserName));
                if (onlineUser == null)
                {
                    Clients.Client(Context.ConnectionId).FriendIsOffline();
                }
                else
                {
                    OnlineUser sender = OnlineUsers.FirstOrDefault(o => o.HasConnectionId(Context.ConnectionId));
                    Clients.Clients(onlineUser.ConnectionIds).InviteFriendRequest(sender.Account.UserName, Context.ConnectionId);
                }
            }
            Signal();
        }
Ejemplo n.º 2
0
        public void Response(string ConnectionId, bool result)
        {
            Wait();
            Room room = Rooms.FirstOrDefault(r => r.ContainUser(ConnectionId) && r.ContainUser(Context.ConnectionId));

            Common_Library.User user = room.GetUserById(Context.ConnectionId);
            if (result)
            {
                Common_Library.User user2 = room.GetUserById(ConnectionId);
                room.RemoveUser(user, false);
                room.RemoveUser(user2);
                if (room.Users.Count > 0)
                {
                    List <string> list = room.Users.Select(u => u.ConnectionId).ToList();
                    Clients.Clients(list).MemberExit(user.ChatName);
                    Clients.Clients(list).MemberExit(user2.ChatName);
                }
                else
                {
                    Rooms.Remove(room);
                }
                room = Room.CreateNewPrivateRoom(user, user2);
                Rooms.Add(room);
            }
            Clients.Client(ConnectionId).Response(user, result);
            Clients.Client(Context.ConnectionId).Response(user, result);
            Signal();
        }
Ejemplo n.º 3
0
        public void Send(string message)
        {
            Wait();
            Room room = Rooms.FirstOrDefault(r => r.ContainUser(Context.ConnectionId));

            Common_Library.User user = room.GetUserById(Context.ConnectionId);
            Clients.Clients(room.Users.Select(u => u.ConnectionId).ToList()).NewMessage(user, message);
            Signal();
        }
Ejemplo n.º 4
0
        public void Privatechatrequest(string ConnectionId)
        {
            Wait();
            Room room = Rooms.FirstOrDefault(r => r.ContainUser(Context.ConnectionId) && r.ContainUser(ConnectionId));

            Common_Library.User user = room.GetUserById(Context.ConnectionId);
            Clients.Client(ConnectionId).Privatechatrequest(user);
            Signal();
        }
Ejemplo n.º 5
0
        public void PrivateSend(string message, string ConnectionId)
        {
            Wait();
            Room room = Rooms.FirstOrDefault(r => r.ContainUser(Context.ConnectionId) && r.ContainUser(ConnectionId));

            Common_Library.User sender   = room.GetUserById(Context.ConnectionId);
            Common_Library.User receiver = room.GetUserById(ConnectionId);
            Clients.Client(sender.ConnectionId).NewPrivateMessage(message, sender, receiver);
            Clients.Client(receiver.ConnectionId).NewPrivateMessage(message, sender, receiver);
            Signal();
        }
Ejemplo n.º 6
0
        public void ChatWithFriendResponse(string ConnectionId, string UserName, bool result, string senderchatname, string receiverchatname)
        {
            Wait();
            Common_Library.User user;
            Room currentroom = Rooms.FirstOrDefault(r => r.ContainUser(Context.ConnectionId));

            if (currentroom != null)
            {
                user = currentroom.GetUserById(Context.ConnectionId);
            }
            else
            {
                OnlineUser onlineUser = OnlineUsers.FirstOrDefault(o => o.HasConnectionId(Context.ConnectionId));
                user = new Common_Library.User()
                {
                    ChatName = receiverchatname, ConnectionId = Context.ConnectionId, Account = new Common_Library.AccountBase()
                    {
                        UserName = onlineUser.Account.UserName
                    }
                };
            }
            if (result)
            {
                if (currentroom != null)
                {
                    currentroom.RemoveUser(user);
                    if (currentroom.Users.Count > 0)
                    {
                        Clients.Clients(currentroom.Users.Select(u => u.ConnectionId).ToList()).MemberExit(user.ChatName);
                    }
                    else
                    {
                        Rooms.Remove(currentroom);
                    }
                }
                OnlineUser          onlineUser2 = OnlineUsers.FirstOrDefault(o => o.HasAccount(UserName));
                Common_Library.User user2       = new Common_Library.User()
                {
                    ChatName = senderchatname, ConnectionId = ConnectionId, Account = new Common_Library.AccountBase()
                    {
                        UserName = onlineUser2.Account.UserName
                    }
                };
                Room room = Room.CreateNewPrivateRoom(user, user2);
                Rooms.Add(room);
            }
            Clients.Client(ConnectionId).ChatWithFriendResponse(Context.ConnectionId, user.Account.UserName, result);
            Clients.Client(Context.ConnectionId).ChatWithFriendResponse(Context.ConnectionId, user.Account.UserName, result);
            Signal();
        }
Ejemplo n.º 7
0
        public void InviteFriendResponse(string ConnectionId, bool result, string chatname)
        {
            Wait();
            Room senderroom = Rooms.FirstOrDefault(r => r.ContainUser(ConnectionId));

            if (senderroom.IsFull())
            {
                Clients.Client(Context.ConnectionId).RoomIsFull();
                return;
            }
            Common_Library.User user;
            Room currentroom = Rooms.FirstOrDefault(r => r.ContainUser(Context.ConnectionId));

            if (currentroom != null)
            {
                user = currentroom.GetUserById(Context.ConnectionId);
            }
            else
            {
                OnlineUser onlineUser = OnlineUsers.FirstOrDefault(o => o.HasConnectionId(Context.ConnectionId));
                user = new Common_Library.User()
                {
                    ChatName = chatname, ConnectionId = Context.ConnectionId, Account = new Common_Library.AccountBase()
                    {
                        UserName = onlineUser.Account.UserName
                    }
                };
            }
            if (result)
            {
                if (currentroom != null)
                {
                    currentroom.RemoveUser(user);
                    if (currentroom.Users.Count > 0)
                    {
                        Clients.Clients(currentroom.Users.Select(u => u.ConnectionId).ToList()).MemberExit(user.ChatName);
                    }
                    else
                    {
                        Rooms.Remove(currentroom);
                    }
                }
                senderroom.AddNewUser(user);
                Clients.Clients(senderroom.Users.Where(u => u.ConnectionId != user.ConnectionId).Select(u => u.ConnectionId).ToList()).NewMember(user.ChatName);
            }
            Clients.Client(ConnectionId).InviteFriendResponse(Context.ConnectionId, user.Account.UserName, result, senderroom.Type);
            Clients.Client(Context.ConnectionId).InviteFriendResponse(Context.ConnectionId, user.Account.UserName, result, senderroom.Type);
            Signal();
        }
Ejemplo n.º 8
0
        public void AddFriendResponse(string ConnectionId, bool result)
        {
            Wait();
            Room room = Rooms.FirstOrDefault(r => r.ContainUser(ConnectionId) && r.ContainUser(Context.ConnectionId));

            Common_Library.User user = room.GetUserById(Context.ConnectionId);
            if (result)
            {
                Common_Library.User user2 = room.GetUserById(ConnectionId);
                DataService.Friend.add(new Friend()
                {
                    FirstMember = user.Account.UserName, SecondMember = user2.Account.UserName
                });
            }
            Clients.Client(ConnectionId).AddFriendResponse(user, result);
            Clients.Client(Context.ConnectionId).AddFriendResponse(user, result);
            Signal();
        }
Ejemplo n.º 9
0
        public void LeaveRoom()
        {
            Wait();
            Room room = Rooms.FirstOrDefault(r => r.ContainUser(Context.ConnectionId));

            if (room != null)
            {
                Common_Library.User user = room.GetUserById(Context.ConnectionId);
                room.RemoveUser(user);
                if (room.Users.Count == 0)
                {
                    Rooms.Remove(room);
                }
                else
                {
                    Clients.Clients(room.Users.Select(u => u.ConnectionId).ToList()).MemberExit(user.ChatName);
                }
            }
            Signal();
        }