public async Task <HttpResponseMessage> Send([FromBody] MessageSendRequestDto messageSendRequestDto)
        {
            var processedMessage = messageProcessor.Process(new InputMessageDto
            {
                Content = messageSendRequestDto.Content
            });

            notifySubscriber.NotifyAll(processedMessage);
            return(Request.CreateResponse(HttpStatusCode.OK));
        }
Exemplo n.º 2
0
        public MessageSendResponseDto Send(MessageSendRequestDto request)
        {
            int chatId;

            if (request.ChatId == null)
            {
                var receiver = UserManager.GetUserById(request.UserId.Value);
                chatId = ChatManager.GetOrCreateChatWithUser(request.User, receiver).ChatId;
            }
            else
            {
                chatId = request.ChatId.Value;
            }

            var chat    = ChatManager.GetChatById(chatId);
            var message = new Message
            {
                Author = request.User,
                Chat   = chat,
                Text   = request.Text
            };

            MessageProvider.Add(message);
            MessageProvider.SaveChanges();

            var chatDto    = Mapper.Map <Chat, ChatDto>(chat);
            var messageDto = Mapper.Map <Message, MessageDto>(message);
            var userDto    = Mapper.Map <User, UserDto>(request.User);

            MessageHub.Publish(new NotificationDto
            {
                Type         = NotificationType.CreateMessage,
                TargetChatId = chatId,
                TargetUserId = request.UserId
            }
                               .AddEntity(messageDto)
                               .AddEntity(chatDto)
                               .AddEntity(userDto)
                               );

            return(new MessageSendResponseDto()
                   .AddEntity(messageDto)
                   .AddEntity(chatDto));
        }
Exemplo n.º 3
0
 public MessageSendResponseDto Send([FromBody] MessageSendRequestDto request) => MessageService.Send(request);