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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }