public async Task <Chat> SendMessage(Guid id, MessageModel message)
        {
            var newMessage = new Message()
            {
                Id        = Guid.NewGuid(),
                SenderId  = message.SenderId,
                Text      = message.Text,
                TimeStamp = DateTime.Now,
                Read      = false
            };

            var chatWithNewMessage = await _repository.GetChat(id);

            if (chatWithNewMessage == null)
            {
                throw new ChatNotFoundException(id);
            }
            chatWithNewMessage.Messages.Add(newMessage);
            var result = await _repository.Update(id, chatWithNewMessage);

            var liveMessage = new LiveMessageModel()
            {
                ChatId  = id,
                Message = newMessage,
            };

            _liveChatService.SendPrivateMessage(liveMessage,
                                                chatWithNewMessage.Buyer.Id != message.SenderId ?
                                                chatWithNewMessage.Buyer.Id : chatWithNewMessage.Seller.Id);

            return(result);
        }
Ejemplo n.º 2
0
 public async void SendPrivateMessage(LiveMessageModel model, Guid user)
 {
     await _hubContext.Clients.User(user.ToString()).SendAsync("ReceiveMessage", model);
 }