Example #1
0
        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." }));
        }
Example #2
0
        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());
        }
Example #3
0
 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);
        }