public async Task <IActionResult> SendMessage([FromBody] SendFirstMessageViewModel sendMessageViewModel) { try { UserIds receiver, caller; FindCallerReceiverByIds(sendMessageViewModel.ReceiverId, out caller, out receiver); bool chatExist = await chatService.ExistChat(caller.userId, sendMessageViewModel.ReceiverId); if (chatExist) { var chat = await chatService.GetDialog(caller.userId, sendMessageViewModel.ReceiverId); var newMessage = chatService.AddChatMessage(caller.userId, sendMessageViewModel.Message, chat.ChatID); await chatHub.Clients.Client(receiver.connId).SendAsync("Send", sendMessageViewModel.Message, caller.userId); } else { var chat = chatService.AddChat(sendMessageViewModel.ReceiverId, caller.userId); var newMessage = chatService.AddChatMessage(caller.userId, sendMessageViewModel.Message, chat.ChatID); await chatHub.Clients.Client(receiver.connId).SendAsync("Send", sendMessageViewModel.Message, caller.userId); } return(Ok()); } catch (Exception e) { throw e; } }