Exemplo n.º 1
0
        public Task <bool> Handle(ChatMessageRequestModel request, CancellationToken cancellationToken)
        {
            ChatMessage chatMessage = request.ChatMessage;

            if (!cancellationToken.IsCancellationRequested)
            {
                if (chatMessage.MessageType == ApplicationCore.Enums.ChatMessageType.TEXT)
                {
                    _chatRoomService
                    .AddChatMessage(Guid.Parse(request.ChatRoomId),
                                    ((ChatMessageText)chatMessage));

                    _logger.LogInformation($"Chat message of type " +
                                           $"{Enum.GetName(typeof(ChatMessageType).GetType(), chatMessage.MessageType)} " +
                                           $"added to room with Id {request.ChatRoomId}");
                }
                else if (chatMessage.MessageType == ApplicationCore.Enums.ChatMessageType.COMMAND)
                {
                    _messageQueue
                    .EnqueueMessage(new ApplicationCore.DTOs.QueueMessageDTO {
                        Command = ((ChatMessageCommand)chatMessage).Command,
                        RoomId  = request.ChatRoomId
                    });
                    _logger.LogInformation($"Chat message of type " +
                                           $"{Enum.GetName(typeof(ChatMessageType).GetType(), chatMessage.MessageType)} " +
                                           $"enqueued.");
                }
                return(Task.FromResult(true));
            }
            return(Task.FromResult(false));
        }