public async Task <IActionResult> Edit(PrestadorViewModel prestadorView, int PrestadorId, int CEPBD)
        {
            if (ModelState.IsValid)
            {
                _logger.LogInformation("Procurando Prestador");
                var prestador = await _prestadorRepositorio.PegarPeloId(prestadorView.PrestadorId);

                prestador.Nome            = prestadorView.Nome;
                prestador.DataNascimento  = prestadorView.DataNascimento;
                prestador.CPF             = prestadorView.CPF;
                prestador.ConselhoId      = prestadorView.ConselhoId;
                prestador.NumeroCrm       = prestadorView.NumeroCrm;
                prestador.TipoPrestadorId = prestadorView.TipoPrestadorId;
                prestador.Telefone        = prestadorView.Telefone;
                prestador.Email           = prestadorView.Email;
                prestador.Status          = prestadorView.Status;
                prestador.Numero          = prestadorView.Numero;
                _logger.LogInformation("Atualizando registros do prestador");
                await _prestadorRepositorio.Atualizar(prestador);

                _logger.LogInformation("Prestador Atualizado");

                if (CEPBD == 0)
                {
                    Cep cep = new Cep();
                    cep.CEP         = prestadorView.CEP;
                    cep.Logradouro  = prestadorView.Logradouro;
                    cep.Bairro      = prestadorView.Bairro;
                    cep.Cidade      = prestadorView.Cidade;
                    cep.UF          = prestadorView.UF;
                    cep.Complemento = prestadorView.Complemento;
                    _context.Add(cep);
                    await _context.SaveChangesAsync();

                    prestador.CepId = cep.CepId;
                    await _prestadorRepositorio.Atualizar(prestador);
                }
                else
                {
                    prestador.CepId = CEPBD;
                }
                await _prestadorRepositorio.Atualizar(prestador);

                TempData["Mensagem"] = "Atualizado com sucesso";
                return(RedirectToAction("Index", "Prestadores"));
            }

            ViewData["ConselhoId"]      = new SelectList(_context.Conselhos, "ConselhoId", "Descricao");
            ViewData["TipoPrestadorId"] = new SelectList(_context.TipoPrestadores, "TipoPrestadorId", "Descricao");
            _logger.LogError("Erro Ao atualizar");
            ViewData["PrestadorId"] = PrestadorId;
            return(View("Prestador", prestadorView));
        }
        public async Task <IActionResult> Create(PrestadorViewModel prestadorView, int?CEPBD)
        {
            if (ModelState.IsValid)
            {
                _logger.LogInformation("Adicionando Prestador");

                Prestador prestador = new Prestador();

                if (CEPBD == 0)
                {
                    Cep cep = new Cep();
                    cep.CEP         = prestadorView.CEP;
                    cep.Logradouro  = prestadorView.Logradouro;
                    cep.Bairro      = prestadorView.Bairro;
                    cep.Cidade      = prestadorView.Cidade;
                    cep.UF          = prestadorView.UF;
                    cep.Complemento = prestadorView.Complemento;
                    _logger.LogInformation("Adicionando novo CEP");
                    _context.Cep.Add(cep);
                    await _context.SaveChangesAsync();

                    _logger.LogInformation("Associando cep ao paciente");
                    prestador.CepId = cep.CepId;
                }
                else
                {
                    prestador.CepId = CEPBD;
                }
                prestador.Status          = true;
                prestador.Nome            = prestadorView.Nome;
                prestador.DataNascimento  = prestadorView.DataNascimento;
                prestador.CPF             = prestadorView.CPF;
                prestador.Sexo            = prestadorView.Sexo;
                prestador.Telefone        = prestadorView.Telefone;
                prestador.ConselhoId      = prestadorView.ConselhoId;
                prestador.NumeroCrm       = prestadorView.NumeroCrm;
                prestador.TipoPrestadorId = prestadorView.TipoPrestadorId;
                prestador.Numero          = prestadorView.Numero;
                await _prestadorRepositorio.Inserir(prestador);

                _logger.LogInformation("Prestador Adicionado");
                TempData["Mensagem"] = "Adicionado com sucesso";
                return(RedirectToAction("Index", "Prestadores"));
            }
            ViewData["ConselhoId"]      = new SelectList(_context.Conselhos, "ConselhoId", "Descricao", prestadorView.ConselhoId);
            ViewData["TipoPrestadorId"] = new SelectList(_context.TipoPrestadores, "TipoPrestadorId", "Descricao", prestadorView.TipoPrestadorId);
            ViewData["SexoId"]          = new SelectList(new[] {
                new { Name = "Masculino", ID = "Masculino" },
                new { Name = "Feminino", ID = "Feminino" },
                new { Name = "Indefinido", ID = "Indefinido" },
            }, "Name", "ID");
            return(View(prestadorView));
        }
        public async Task <IViewComponentResult> InvokeAsync(int PrestadorId)
        {
            var prestador = await _contexto.Prestadores.Include(a => a.Cep).FirstOrDefaultAsync(a => a.PrestadorId == PrestadorId);

            PrestadorViewModel prestadorView = new PrestadorViewModel();

            prestadorView.Nome            = prestador.Nome;
            prestadorView.PrestadorId     = prestador.PrestadorId;
            prestadorView.DataNascimento  = prestador.DataNascimento;
            prestadorView.CPF             = prestador.CPF;
            prestadorView.ConselhoId      = prestador.ConselhoId;
            prestadorView.NumeroCrm       = prestador.NumeroCrm;
            prestadorView.TipoPrestadorId = prestador.TipoPrestadorId;
            prestadorView.Telefone        = prestador.Telefone;
            prestadorView.Email           = prestador.Email;
            prestadorView.Status          = prestador.Status;
            prestadorView.Sexo            = prestador.Sexo;
            prestadorView.Numero          = prestador.Numero;
            if (prestador.CepId != null)
            {
                var cep = await _contexto.Cep.FirstOrDefaultAsync(a => a.CepId == prestador.CepId);

                prestadorView.CepId       = cep.CepId;
                prestadorView.CEP         = cep.CEP;
                prestadorView.Logradouro  = cep.Logradouro;
                prestadorView.Bairro      = cep.Bairro;
                prestadorView.Cidade      = cep.Cidade;
                prestadorView.UF          = cep.UF;
                prestadorView.Complemento = cep.Complemento;
            }

            ViewData["ConselhoId"]      = new SelectList(_contexto.Conselhos, "ConselhoId", "Descricao");
            ViewData["TipoPrestadorId"] = new SelectList(_contexto.TipoPrestadores, "TipoPrestadorId", "Descricao");
            ViewData["PrestadorId"]     = PrestadorId;
            ViewData["StatusId"]        = new SelectList(new[] {
                new { Name = "true", ID = "Ativo" },
                new { Name = "false", ID = "Inativo" },
            }, "Name", "ID");
            ViewData["SexoId"] = new SelectList(new[] {
                new { Name = "Masculino", ID = "Masculino" },
                new { Name = "Feminino", ID = "Feminino" },
                new { Name = "Indefinido", ID = "Indefinido" },
            }, "Name", "ID", prestador.Sexo);

            return(View(prestadorView));
        }