public async Task <IActionResult> PostMessage([FromBody] MessageDTO message) { if (!ModelState.IsValid || message == null) { return(BadRequest("Bad Request")); } if (!DateTime.TryParse(message.Date, out DateTime messageDate)) { return(BadRequest("Provided datetime is not valid.")); } Chat chat; User user; if (int.TryParse(message.SenderId, out int senderId) && int.TryParse(message.ChatId, out int chatid)) { (chat, user) = await _repository.GetMessageCointainer(senderId, chatid).ConfigureAwait(true); } else { return(BadRequest("SenderId or receiverId has a wrong format.")); } if (chat == null || user == null) { return(BadRequest("Cannot find chat or user.")); } await _repository.SendMessage(new Message { Sender = user, SenderName = user.Email, Chat = chat, Date = messageDate, Content = message.Content }).ConfigureAwait(true); var messageChartModel = new MessageChartModel { ChatId = chat.Id, SenderName = user.Email, Content = message.Content, Date = messageDate }; object[] param = { messageChartModel }; IEnumerable <int> userIds = chat.ChatMemberships.Select(x => x.User.Id); foreach (int userId in userIds) { string connectionId = _service.GetConnectionId(userId); if (connectionId != null && connectionId.Trim().Length != 0) { _ = _hub.Clients.Client(connectionId).SendAsync("transferchartdata", param).ConfigureAwait(true); } } return(Ok(new { V = "received message" })); }