Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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
            });
        }