public async Task <HandlerResult> RecieveChat(RecieveChatArguments arguments, WebSocket socket) { var chatInfo = arguments.Chat; var userFrom = await _unitOfWork.UserManager.FindByIdAsync(arguments.UserFrom.Id); var usersTo = await _unitOfWork.ChatRoomUsers.GetChatUsersList(chatInfo.Id); usersTo.Remove(usersTo.Find(user => user.Id == userFrom.Id)); var mess = await _unitOfWork.ChatMessages.AddChatMessage(userFrom, chatInfo.Id, arguments.Message.Text, arguments.Message.Date); arguments.Message.Id = mess.ChatMessageID; foreach (var user in usersTo) { if (!_connectionManager.UserIsOnline(user)) { await _unitOfWork.ChatMessageStatuses.AddSentStatus(user.Id, mess.ChatMessageID, arguments.Message.Date.DateTime); } } var sockets = _connectionManager.GetSockets(usersTo); var message = _sendFormatFactory.ChatMessage(chatInfo, arguments.UserFrom, arguments.Message, arguments.IdNew); return(CreateResult(sockets, message)); }
private UserInfo CreateUserInfo(ApplicationUser user, bool potentialFriend = false) { if (user == null) { return(null); } return(new UserInfo { Id = user.Id, Email = user.Email, Online = _connectionManager.UserIsOnline(user), Potential = potentialFriend }); }