public List <Models.Response.FilmeAtorResponse> ListarFilmes()
        {
            Models.apidbContext ctx = new Models.apidbContext();

            List <Models.TbFilme> filmes =
                ctx.TbFilme
                .Include(x => x.TbFilmeAtor)
                .ThenInclude(x => x.IdAtorNavigation)
                .ToList();


            List <Models.Response.FilmeAtorResponse> response =
                filmes.Select(x => new Models.Response.FilmeAtorResponse()
            {
                Filme = new Models.Response.FilmeAtorItemFilmeResponse()
                {
                    Id         = x.IdFilme,
                    Filme      = x.NmFilme,
                    Genero     = x.DsGenero,
                    Avaliacao  = x.VlAvaliacao,
                    Duracao    = x.NrDuracao,
                    Disponivel = x.BtDisponivel,
                    Lancamento = x.DtLancamento
                },
                Atores = x.TbFilmeAtor.Select(f => new Models.Response.FilmeAtorItemAtorResponse()
                {
                    IdAtor      = f.IdAtorNavigation.IdAtor,
                    IdFilmeAtor = f.IdFilmeAtor,
                    Ator        = f.IdAtorNavigation.NmAtor,
                    Personagem  = f.NmPersonagem
                }).ToList()
            }).ToList();

            return(response);
        }
        public void SalvarJuntos(Models.Request.FilmeAtorJuntosRequest req)
        {
            Models.TbFilme filme = new Models.TbFilme();
            filme.NmFilme      = req.NmFilme;
            filme.DsGenero     = req.DsGenero;
            filme.NrDuracao    = req.NrDuracao;
            filme.VlAvaliacao  = req.VlAvaliacao;
            filme.BtDisponivel = req.BtDisponivel;
            filme.DtLancamento = req.DtLancamento;

            filme.TbFilmeAtor =
                req.Atores.Select(x => new Models.TbFilmeAtor()
            {
                NmPersonagem     = x.Personagem,
                IdAtorNavigation = new Models.TbAtor()
                {
                    NmAtor       = x.Ator,
                    DtNascimento = x.Nascimento,
                    VlAltura     = x.Altura
                }
            }).ToList();



            Models.apidbContext ctx = new Models.apidbContext();
            ctx.TbFilme.Add(filme);
            ctx.SaveChanges();
        }
        public Models.TbAtor Salvar(Models.TbAtor ator)
        {
            Models.apidbContext ctx = new Models.apidbContext();

            ctx.TbAtor.Add(ator);
            ctx.SaveChanges();

            return(ator);
        }
        public void Remover(Models.TbFilmeAtor filmeAtor)
        {
            Models.apidbContext ctx = new Models.apidbContext();

            Models.TbFilmeAtor atual = ctx.TbFilmeAtor.First(x => x.IdFilmeAtor == filmeAtor.IdFilmeAtor);

            ctx.TbFilmeAtor.Remove(atual);
            ctx.SaveChanges();
        }
        public void Alterar(Models.TbFilmeAtor filmeAtor)
        {
            Models.apidbContext ctx = new Models.apidbContext();

            Models.TbFilmeAtor atual = ctx.TbFilmeAtor.First(x => x.IdFilmeAtor == filmeAtor.IdFilmeAtor);
            atual.NmPersonagem = filmeAtor.NmPersonagem;

            ctx.SaveChanges();
        }
        public Models.TbFilme SalvarEncadeado(Models.TbFilme filme)
        {
            Models.apidbContext ctx = new Models.apidbContext();

            ctx.TbFilme.Add(filme);
            ctx.SaveChanges();

            return(filme);
        }
        public void Deletar(Models.TbDiretor diretor)
        {
            Models.apidbContext ctx = new Models.apidbContext();

            Models.TbDiretor atual = ctx.TbDiretor.First(x => x.IdDiretor == diretor.IdDiretor);

            ctx.Remove(atual);
            ctx.SaveChanges();
        }
        public void Alterar(Models.TbDiretor diretor)
        {
            Models.apidbContext ctx = new Models.apidbContext();

            Models.TbDiretor atual = ctx.TbDiretor.First(x => x.IdDiretor == diretor.IdDiretor);
            atual.NmDiretor    = diretor.NmDiretor;
            atual.DtNascimento = diretor.DtNascimento;
            atual.IdFilme      = diretor.IdFilme;

            ctx.SaveChanges();
        }
        public List <Models.TbFilme> ConsultarFilmes(string genero, string diretor)
        {
            Models.apidbContext ctx = new Models.apidbContext();

            List <Models.TbFilme> filmes =
                ctx.TbFilme
                .Include(x => x.TbDiretor)
                .Where(x => x.DsGenero == genero &&
                       x.TbDiretor.All(d => d.NmDiretor.StartsWith(diretor)))
                .ToList();

            return(filmes);
        }
        public List <Models.TbDiretor> Consultar(string diretor, string genero)
        {
            Models.apidbContext ctx = new Models.apidbContext();

            List <Models.TbDiretor> diretores =
                ctx.TbDiretor
                // .Include(x => x.IdFilmeNavigation)
                .Where(x => x.NmDiretor.Contains(diretor) &&
                       x.IdFilmeNavigation.DsGenero == genero)
                .ToList();

            return(diretores);
        }
        public Models.Request.FilmeDiretorRequest Salvar(Models.Request.FilmeDiretorRequest request)
        {
            Models.apidbContext ctx = new Models.apidbContext();

            ctx.TbFilme.Add(request.Filme);
            ctx.SaveChanges();

            request.Diretor.IdFilme = request.Filme.IdFilme;

            ctx.TbDiretor.Add(request.Diretor);
            ctx.SaveChanges();

            return(request);
        }
        public List <Models.Response.DiretorResponse> Listar()
        {
            Models.apidbContext ctx = new Models.apidbContext();

            List <Models.TbDiretor> diretores =
                ctx.TbDiretor
                .Include(x => x.IdFilmeNavigation)
                .ToList();

            List <Models.Response.DiretorResponse> response =
                diretores.Select(x => new Models.Response.DiretorResponse {
                IdDiretor  = x.IdDiretor,
                IdFilme    = x.IdFilme,
                Diretor    = x.NmDiretor,
                Filme      = x.IdFilmeNavigation.NmFilme,
                Genero     = x.IdFilmeNavigation.DsGenero,
                Avaliacao  = x.IdFilmeNavigation.VlAvaliacao,
                Disponivel = x.IdFilmeNavigation.BtDisponivel
            }).ToList();

            return(response);
        }
        public Models.Response.DiretorPorFilmeNomeResponse SalvarPorFilmeNome(Models.Request.DiretorPorFilmeNomeRequest diretorReq)
        {
            Models.apidbContext ctx   = new Models.apidbContext();
            Models.TbFilme      filme = ctx.TbFilme.First(x => x.NmFilme == diretorReq.NmFilme);

            Models.TbDiretor diretor = new Models.TbDiretor();
            diretor.NmDiretor    = diretorReq.NmDiretor;
            diretor.DtNascimento = diretorReq.DtNascimento;
            diretor.IdFilme      = filme.IdFilme;

            ctx.TbDiretor.Add(diretor);
            ctx.SaveChanges();

            Models.Response.DiretorPorFilmeNomeResponse resp = new Models.Response.DiretorPorFilmeNomeResponse();
            resp.IdDiretor    = diretor.IdDiretor;
            resp.NmDiretor    = diretor.NmDiretor;
            resp.DtNascimento = diretor.DtNascimento;
            resp.IdFilme      = filme.IdFilme;
            resp.NmFilme      = filme.NmFilme;

            return(resp);
        }
        public void Mix(Models.Request.FilmeAtorRequest request)
        {
            List <Models.TbAtor> atores =
                request.Atores.Select(x => new Models.TbAtor()
            {
                NmAtor       = x.Ator,
                VlAltura     = x.Altura,
                DtNascimento = x.Nascimento,
                TbFilmeAtor  = new List <Models.TbFilmeAtor>()
                {
                    new Models.TbFilmeAtor()
                    {
                        NmPersonagem = x.Personagem,
                        IdFilme      = request.IdFilme
                    }
                }
            }).ToList();


            Models.apidbContext ctx = new Models.apidbContext();
            ctx.TbAtor.AddRange(atores);
            ctx.SaveChanges();
        }
        public void Salvar(Models.Request.FilmeAtorRequest request)
        {
            Models.apidbContext ctx = new Models.apidbContext();

            foreach (Models.Request.FilmeAtorItemRequest item in request.Atores)
            {
                Models.TbAtor ator = new Models.TbAtor();
                ator.NmAtor       = item.Ator;
                ator.VlAltura     = item.Altura;
                ator.DtNascimento = item.Nascimento;

                ctx.TbAtor.Add(ator);
                ctx.SaveChanges();

                Models.TbFilmeAtor fa = new Models.TbFilmeAtor();
                fa.IdFilme      = request.IdFilme;
                fa.IdAtor       = ator.IdAtor;
                fa.NmPersonagem = item.Personagem;

                ctx.TbFilmeAtor.Add(fa);
                ctx.SaveChanges();
            }
        }
 public void SalvarEncadeado(List <Models.TbAtor> atores)
 {
     Models.apidbContext ctx = new Models.apidbContext();
     ctx.TbAtor.AddRange(atores);
     ctx.SaveChanges();
 }