//---------------------------- Connection Handlings ------------------------ public async Task <List <HandlerResult> > OnConnected(string userEmail, WebSocket socket) { var resList = new List <HandlerResult>(); var user = await _unitOfWork.UserManager.FindByEmailAsync(userEmail); _connectionManager.AddSocket(user, socket); var statusMessage = _sendFormatFactory.ConnectionStatus(user); var friends = await _unitOfWork.Friends.GetFriends(user); var potentialFriends = await _unitOfWork.Friends.GetPotentialFriends(user); var chatRooms = await _unitOfWork.ChatRoomUsers.GetChatRoomsByUser(user); var roomsList = chatRooms.Select(roomUser => roomUser.ChatRoom).ToList(); var confirmedRoomsList = chatRooms.Where(roomUser => roomUser.Confirmed).Select(roomUser => roomUser.ChatRoom).ToList(); var potentialRoomsList = chatRooms.Where(roomUser => !roomUser.Confirmed).Select(roomUser => roomUser.ChatRoom).ToList(); var chatRoomsUsers = await _unitOfWork.ChatRoomUsers.GetChatUsersList(roomsList); var unreadPrivateMessages = await _unitOfWork.PrivateMessages.GetNotSeen(user.Id); var unreadChatMessages = await _unitOfWork.ChatMessages.GetNotSeen(user.Id); var initialMessage = _sendFormatFactory.InitialInfo(user, friends, potentialFriends, confirmedRoomsList , chatRoomsUsers , unreadPrivateMessages , unreadChatMessages , potentialRoomsList); var friendsSockets = _connectionManager.GetSockets(friends); resList.Add(CreateResult(socket, initialMessage)); resList.Add(CreateResult(friendsSockets, statusMessage)); return(resList); }