public async Task Should_add_a_message()
        {
            var seededConference = await TestDataManager.SeedConference();

            _newConferenceId = seededConference.Id;

            var participants = seededConference.Participants;
            var from         = participants.First(x => x.UserRole == UserRole.Judge).DisplayName;
            var messageText  = Internet.DomainWord();
            var to           = "VH Officer";

            var command = new AddInstantMessageCommand(_newConferenceId, from, messageText, to);
            await _handler.Handle(command);

            List <InstantMessage> instantMessages;

            using (var db = new VideoApiDbContext(VideoBookingsDbContextOptions))
            {
                instantMessages = await db.InstantMessages
                                  .Where(x => x.ConferenceId == command.ConferenceId).ToListAsync();
            }

            var message = instantMessages.First();

            message.Should().NotBeNull();
            message.From.Should().Be(from);
            message.MessageText.Should().Be(messageText);
            message.TimeStamp.Should().BeBefore(DateTime.UtcNow);
            message.ConferenceId.Should().Be(command.ConferenceId);
            message.To.Should().Be(to);
        }
        public async Task <IActionResult> AddInstantMessageToConferenceAsync(Guid conferenceId, AddInstantMessageRequest request)
        {
            _logger.LogDebug("Saving instant message");

            try
            {
                var command = new AddInstantMessageCommand(conferenceId, request.From, request.MessageText, request.To);
                await _commandHandler.Handle(command);

                return(Ok("InstantMessage saved"));
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Unable to add instant messages");
                return(BadRequest());
            }
        }