public async Task <IActionResult> GetMovieDialogueById(int movieId, int dialogueId)
        {
            _logger.LogInformation("Getting dialogue with id {DialogueID} from movie with Id: {ID} @ {DATE}", dialogueId, movieId, DateTime.UtcNow);

            var movie = await _context.Movies.FindAsync(movieId);

            if (movie == null)
            {
                _logger.LogWarning("Not found movie with Id: {ID} @ {DATE}", movieId, DateTime.UtcNow);
                return(NotFound());
            }

            var dialogue = movie.Dialogues.Where(d => d.Id == dialogueId).SingleOrDefault();

            if (dialogue == null)
            {
                _logger.LogWarning("Not found quote with Id: {ID} @ {DATE}", dialogueId, DateTime.UtcNow);
                return(NotFound());
            }

            var dialogueDTO = new DialogueDTO
            {
                Content = dialogue.Content,
                Id      = dialogue.Id,
                Movie   = dialogue.Movie.Title,
                Year    = dialogue.Movie.Year
            };

            return(Ok(dialogueDTO));
        }
        public async Task <IActionResult> GetMovieRandomDialogue(int id)
        {
            _logger.LogInformation("Getting random dialogue from movie with Id: {ID} @ {DATE}", id, DateTime.UtcNow);

            var movie = await _context.Movies.FindAsync(id);

            if (movie == null)
            {
                _logger.LogWarning("Not found movie with Id: {ID} @ {DATE}", id, DateTime.UtcNow);
                return(NotFound());
            }

            var      random         = new Random(Guid.NewGuid().GetHashCode());
            var      randomIndex    = random.Next(1, movie.Dialogues.Count);
            Dialogue randomDialogue = movie.Dialogues.ElementAt(randomIndex);

            var randomDialogueDTO = new DialogueDTO
            {
                Id      = randomDialogue.Id,
                Content = randomDialogue.Content,
                Year    = movie.Year
            };

            return(Ok(randomDialogueDTO));
        }
        public async Task <IActionResult> GetRandomDialogue()
        {
            _logger.LogInformation("Getting a random dialogue @ {DATE}", DateTime.UtcNow);
            var _random        = new Random(Guid.NewGuid().GetHashCode());
            int randomIndex    = _random.Next(1, _context.Dialogues.Count());
            var randomDialogue = await _context.Dialogues.FindAsync(randomIndex);

            var randomDialogueDTO = new DialogueDTO
            {
                Id      = randomDialogue.Id,
                Content = randomDialogue.Content,
                Movie   = randomDialogue.Movie.Title,
                Year    = randomDialogue.Movie.Year
            };

            return(Ok(randomDialogueDTO));
        }
        public async Task <IActionResult> GetDialogue(int id)
        {
            _logger.LogInformation("Getting dialogue with Id: {ID} @ {DATE}", id, DateTime.UtcNow);

            var dialogue = await _context.Dialogues.FindAsync(id);

            if (dialogue == null)
            {
                _logger.LogWarning("Not found dialogue with Id: {ID} @ {DATE}", id, DateTime.UtcNow);
                return(NotFound());
            }

            var dialogueDTO = new DialogueDTO
            {
                Id      = dialogue.Id,
                Content = dialogue.Content,
                Movie   = dialogue.Movie.Title,
                Year    = dialogue.Movie.Year
            };

            return(Ok(dialogueDTO));
        }