public async Task <IActionResult> SendMessage( [FromRoute] int chatId, [FromBody] CreateMessageDto createMessageDto) { var message = new Message { Text = createMessageDto.Text, Timestamp = DateTime.UtcNow, UserName = User.FindFirst("username")?.Value, ChatId = chatId }; await _messagesRepository.CreateAsync(message); //SignalR stuff for realtime functionality here: await _chat.Clients .Group(chatId.ToString()) .SendAsync("ReceiveMessage", new { message.Text, message.Timestamp, message.UserName }); return(Ok(new { Message = "Message was sent to chat successfully." })); }
public async Task <IActionResult> Create(Message message) { if (ModelState.IsValid) { string commandFilter = "/stock="; if (message.Text.Length >= commandFilter.Length && message.Text.Substring(0, commandFilter.Length) == commandFilter) { // The (decoupled) Bot API retrieves the stock information and put the formated message in the MQ. if (await SendToBotAPIAsync(message.Text.Substring(commandFilter.Length))) { await ConsumeMQAsync(); } } else { if (_userManager != null) { var sender = await _userManager.GetUserAsync(User); message.UserId = sender.Id; } message.Timestamp = DateTime.Now; await _repo.CreateAsync(message); } return(Ok()); } return(Error()); }
public Task SaveMessages(ChatMessage[] msgs) { return(_db .CreateAsync(msgs .Select(Convert) .ToArray())); }
public async Task <int> CreateAsync(MessageModel messageModel) { await _messageModelValidator.ValidateAndThrowAsync(messageModel); var messageEntity = MessageModel.FillUp(messageModel); messageEntity.State = EntityStatus.ExistsValue; await _messagesRepository.CreateAsync(messageEntity); return(messageEntity.Id); }