public async Task <ActionResult <AtualizarFilmeDTO> > PutGet(int id)
        {
            var filmeResult = await GetFilme(id);

            if (filmeResult.Result is NotFoundResult)
            {
                return(NotFound());
            }

            DetalhesFilmeDTO filmeDetail            = filmeResult.Value;
            List <int>       idsGenerosSelecionados = filmeDetail.Generos.Select(x => x.Id).ToList();
            List <int>       idsTiposSelecionados   = filmeDetail.TiposFilme.Select(x => x.Id).ToList();
            List <Genero>    generosNaoSelecionados = await _context.Generos.Where(x => !idsGenerosSelecionados.Contains(x.Id)).ToListAsync();

            List <TipoFilme> tipoFilmeSelecionados = await _context.TipoFilmes.Where(x => !idsTiposSelecionados.Contains(x.Id)).ToListAsync();

            AtualizarFilmeDTO atualizarFilme = new AtualizarFilmeDTO();

            atualizarFilme.Filme = filmeDetail.Filme;
            atualizarFilme.GenerosSelecionados    = filmeDetail.Generos;
            atualizarFilme.GenerosNaoSelecionados = generosNaoSelecionados;
            atualizarFilme.tiposDoFilme           = tipoFilmeSelecionados;

            return(atualizarFilme);
        }
        public async Task <ActionResult <DetalhesFilmeDTO> > GetFilme(int id)
        {
            var filme = await _context.Filme.Where(x => x.Id == id)
                        .Include(x => x.Generos).ThenInclude(x => x.Genero)
                        .Include(x => x.TiposFilme).ThenInclude(x => x.TipoFilme)
                        .FirstOrDefaultAsync();

            if (filme == null)
            {
                return(NotFound());
            }

            DetalhesFilmeDTO DTO = new DetalhesFilmeDTO();

            DTO.Filme      = filme;
            DTO.Generos    = filme.Generos.Select(x => x.Genero).ToList();
            DTO.TiposFilme = filme.TiposFilme.Select(x => x.TipoFilme).ToList();

            return(DTO);
        }