예제 #1
0
        // GET: Agentes/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                //return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                return(RedirectToAction("Index"));
            }
            Agentes agentes = db.Agentes.Find(id);

            if (agentes == null)
            {
                //return HttpNotFound();
                return(RedirectToAction("Index"));
            }
            return(View(agentes));
        }
예제 #2
0
        // GET: Agentes/Edit/5
        /// <summary>
        /// apresentar na View os dados de um agente,
        /// para eventual edição
        /// </summary>
        /// <param name="id"> identifica o agente a editar</param>
        /// <returns>view</returns>
        public ActionResult Edit(int?id)
        {
            // se se escrever 'int?' é possível
            // não fornecer o valor para o ID e não há erro

            // proteção para o caso de não ter sido fornecido um ID válido
            if (id == null)
            {
                // instrução original
                // devolve um erro qd não há ID
                // logo, não é possível pesquisar por um Agente
                // return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

                // redirecionar para uma página que nós controlamos
                return(RedirectToAction("Index"));
            }

            // procura na BD, o Agente cujo ID foi fornecido
            Agentes agente = db.Agentes.Find(id);

            // proteção para o caso de não ter sido encontrado qq Agente
            // que tenha o ID fornecido
            if (agente == null)
            {
                // o agente não foi encontrado
                // logo, gera-se uma msg de erro
                // return HttpNotFound();

                // redirecionar para uma página que nós controlamos
                return(RedirectToAction("Index"));
            }

            // existe Agente
            // contudo, será que posso editá-lo?
            if (User.IsInRole("GestaoDePessoal") ||
                User.Identity.Name.Equals(agente.UserName))
            {
                // entrega à View os dados do Agente encontrado
                return(View(agente));
            }
            else
            {
                // não há permissão para editar o Agente
                return(RedirectToAction("Index"));
            }
        }
예제 #3
0
        public ActionResult DeleteNewMethod(int id)
        {
            Agentes agente = db.Agentes.Find(id);

            try
            {
                db.Agentes.Remove(agente);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            catch (Exception)
            {
                ModelState.AddModelError("", string.Format("aconteceu um erro com a eliminação do Agente '{0}', porque há multas associadas a ele.", agente.Nome));
            }
            // se aqui chego, é pq alguma coisa correu mal
            return(View(agente));
        }
예제 #4
0
        public ActionResult DeleteConfirmed(int id)
        {
            Agentes agente = db.Agentes.Find(id);

            try
            {
                db.Agentes.Remove(agente);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            catch (Exception)
            {
                ModelState.AddModelError("", string.Format("A coisa correu mal na eliminação do Agente '{0}', existem multas associadas a ele", agente.Nome));
            }
            //Se o fluxo passar por aqui é porque alguma coisa correu mal
            return(View(agente));
        }
        public IHttpActionResult GetAgentes(int id)
        {
            Agentes agentes = db.Agentes.Find(id);

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

            // Nota: Cuidado que aqui também pode ocorrer o problema das referências
            // circulares! Fica como exercício para casa...
            // Não precisam do Select aqui (Linq é só para listas),
            // por isso seria algo como
            // var resultado = new { ??? };

            return(Ok(agentes));
        }
예제 #6
0
        // GET: Agentes/Delete/5
        /// <summary>
        /// mostra na view os dados de um agente para porterior, eventual, remoção
        /// </summary>
        /// <param name="id">identificador do agente a remover</param>
        /// <returns></returns>
        public ActionResult Delete(int?id)
        {
            // o ID do agente não foi fornecido
            // não é possível procurar o Agente
            // o que devo fazer?
            if (id == null)
            {
                ///  opção por defeito do 'template'
                ///  return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

                /// e não há ID do Agente, uma de duas coisas aconteceu:
                ///   - há um erro nos links da aplicação
                ///   - há um 'chico experto' a fazer asneiras no URL

                /// redireciono o utilzador para o ecrã incial
                return(RedirectToAction("Index"));
            }


            // procura os dados do Agentes, cujo ID é fornecido
            Agentes agente = db.Agentes.Find(id);

            /// se o agente não fôr encontrado
            if (agente == null)
            {
                // ou há um erro,
                // ou há um 'chico experto'...
                //   return HttpNotFound();

                /// redireciono o utilzador para o ecrã incial
                return(RedirectToAction("Index"));
            }

            /// para o caso do utilizador alterar, de forma fraudulenta,
            /// os dados do Agente, vamos guardá-los internamente
            /// Para isso, vou guardar o valor do ID do Agente
            /// - guardar o ID do Agente num cookie cifrado
            /// - guardar o ID numa var. de sessão
            ///      (quem estiver a usar o Asp .Net Core já não tem esta ferramenta...)
            /// - outras opções...
            Session["IdAgente"] = agente.ID;
            Session["Metodo"]   = "Agentes/Delete";

            // envia para a View os dados do Agente encontrado
            return(View(agente));
        }
예제 #7
0
        // GET: Agentes/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction("Index"));
            }
            Agentes agente = db.Agentes.Find(id);

            if (agente == null)
            {
                return(RedirectToAction("Index"));
            }

            Session["Metodo"] = "";

            return(View(agente));
        }
예제 #8
0
        public ActionResult Create([Bind(Include = "ID,Nome,Esquadra,Fotografia")] Agentes agentes)
        {
            //escrever os dados de um novo Agente na BD;

            // ModelState.IsValid -> Confronta od dados fornecidos da View com as exigências do Modelo
            if (ModelState.IsValid)
            {
                // adiciona o novo Agente à BD
                db.Agentes.Add(agentes);
                // faz 'Commit' às Alterações
                db.SaveChanges();
                // se tudo correr bem, redireciona para a página do Index;
                return(RedirectToAction("Index"));
            }
            // se houver erro, reapresenta os dados do Agente na View;
            return(View(agentes));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            Agentes agente = db.Agentes.Find(id);

            try
            {
                db.Agentes.Remove(agente);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            catch (Exception)
            {
                //gerar uma mensagem de erro, a ser apresentada ao utilizador
                ModelState.AddModelError("", string.Format("Não foi possivel remover o agente '{0}', porque existem {1} multas associadas a ele", agente.Nome, agente.ListaDeMultas.Count));
            }
            //reenviar os dados para a View
            return(View(agente));
        }
예제 #10
0
        // GET: Agentes/Delete/5
        /// <summary>
        /// apresenta na view os dados de um agente
        /// com vista a sua eventual eliminacao
        /// </summary>
        /// <param name="id">identificador do agente</param>
        /// <returns></returns>
        public ActionResult Delete(int?id)
        {
            //verifica se o ID fornecido é válido
            if (id == null)
            {
                return(RedirectToAction("Index"));
            }
            //pesquisa pelo agente cujo ID foi fornecido
            Agentes agente = db.Agentes.Find(id);

            // verifica se o agente foi encontrado
            if (agente == null)
            {
                // agente nao existe redirecciona para a pagina inicial
                return(RedirectToAction("Index"));
            }
            return(View(agente));
        }
예제 #11
0
        // GET: Agentes/Delete/5
        /// <summary>
        /// apresenta na view os dados de um agente, com vista à sua, eventual, eliminação
        /// </summary>
        /// <param name="id">identificador do agente</param>
        /// <returns></returns>
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction("Index"));
            }
            //pesquisar pelo agentente, cujo ID foi fornecido
            Agentes agente = db.Agentes.Find(id);

            //verificar se o agente foi encontrado
            if (agente == null)
            {
                //o agente nao existe
                // redirecionar para a pagina tual
                return(RedirectToAction("Index"));
            }
            return(View(agente));
        }
예제 #12
0
        public ActionResult DeleteConfirmed(int?id)
        {
            if (id == null)
            {
                // há um xico esperto a darm-me a volta ao codigo
                return(RedirectToAction("Index"));
            }

            // será que o ID é o que eu espero?
            // vamos validar se o ID está correto
            if ((int)Session["Agente"] != id)
            {
                // o ID é diferente do esperado
                return(RedirectToAction("Index"));
            }

            // procura o agente a remover
            Agentes agente = db.Agentes.Find(id);

            if (agente == null)
            {
                return(RedirectToAction("Index"));
            }

            try
            {
                // dá a ordem de remoção do agente
                db.Agentes.Remove(agente);
                // consolida a remoção
                db.SaveChanges();
            }
            catch (Exception)
            {
                // deve aqui ser escritas todas as instruções que são consideradas necessárias

                //informa que houve um erro
                ModelState.AddModelError("", "Não é possível remover o agente " + agente.Nome + ". Ele tem multas associadas");

                //redirecionar para a pagina onde o erro foi gerado
                return(View(agente));
            }

            return(RedirectToAction("Index"));
        }
예제 #13
0
        public ActionResult DeleteConfirmed(int?id)
        {
            if (id == null)
            {
                // há um 'xico esperto' a tentar dar-me a volta ao código
                return(RedirectToAction("Index"));
            }

            // o ID não é null
            // será o ID o que eu espero?
            // vamos validar se o ID está correto
            if (id != (int)Session["Agente"])
            {
                // há aqui outro 'xico esperto'...
                return(RedirectToAction("Index"));
            }

            // procura o agente a remover
            Agentes agente = db.Agentes.Find(id);

            if (agente == null)
            {
                // não foi encontrado o Agente
                return(RedirectToAction("Index"));
            }
            try {
                // dá ordem de remoção do Agente
                db.Agentes.Remove(agente);

                // consolida a remoção
                db.SaveChanges();
            }
            catch (Exception) {
                // devem aqui ser escritas todas as instruções que são consideradas necessárias

                //informar que houve um erro
                ModelState.AddModelError("", "Não é possível remover o Agente." +
                                         "Provavelmente, ele tem multas associadas a ele...");

                // redirecionar para a página onde o erro foi gerado
                return(View(agente));
            }
            return(RedirectToAction("Index"));
        }
예제 #14
0
        public ActionResult Delete(int?id)
        {
            //verificar se foi fornecido um ID válido
            if (id == null)
            {
                return(RedirectToAction("Index"));
            }
            //pesquisar pelo Agente, cujo ID foi fornecido
            Agentes agente = db.Agentes.Find(id);

            //verificar se o Agente foi verificado
            if (agente == null)
            {
                //o Agente não existe
                //redireciona para a página inicial
                return(RedirectToAction("Index"));
            }
            return(View(agente));
        }
예제 #15
0
        // GET: Agentes/Details/5
        //quando tem ? significa que pode ser preenchimento facultativo
        public ActionResult Details(int?id)
        {
            //proteção para o caso de não ter sido fornecido um id
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            //procura na BD, o agente cujo ID foi fornecido

            Agentes agentes = db.Agentes.Find(id);

            //proteção para o caso de não ter sido encontrado qualquer agente
            //que tenha o ID fornecido
            if (agentes == null)
            {
                return(HttpNotFound());
            }
            return(View(agentes));
        }
예제 #16
0
 public ActionResult DeleteConfirmed(int id)
 {
     try
     {
         Agentes agente = db.Agentes.Find(id);
         //remove o Agente da DB
         db.Agentes.Remove(agente);
         //Commit
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     catch (Exception ex) {
         ModelState.AddModelError("", string.Format("Não é possível apagar o Agente nº {0}-{1}, porque há multas associadas a ele", id, agente.Nome)
                                  );
         //se cheguei aqui é porque houve um problema
         //devolvo os dados do agente á view
         return(View(agente));
     }
 }
예제 #17
0
        public ActionResult DeleteConfirmed(int id)
        {
            Agentes agentes = db.Agentes.Find(id);

            try
            {
                //remove o agente
                db.Agentes.Remove(agentes);
                //commit
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", string.Format("houve um erro nº {0}-{1}", id, agentes.Nome));
            }
            //se cheguei aqui é pqhouve um prob
            return(View(agentes));
        }
예제 #18
0
        public ActionResult Create([Bind(Include = "Nome,Esquadra")] Agentes agente, HttpPostedFileBase fileUploadFotografia)
        {
            int novoID = 0;

            if (db.Agentes.Count() == 0)
            {
                novoID = 1;
            }
            else
            {
                novoID = db.Agentes.Max(a => a.ID) + 1;
            }

            agente.ID = novoID;

            string nomeFotografia        = "Agente_" + novoID + ".jpg";
            string caminhoParaFotografia = Path.Combine(Server.MapPath("~/imagens/"), nomeFotografia);

            if (fileUploadFotografia != null)
            {
                agente.Fotografia = nomeFotografia;
            }
            else
            {
                ModelState.AddModelError("", "Nao foi fornecida uma imagem...");
                return(View(agente));
            }

            if (ModelState.IsValid)
            {
                try{
                    db.Agentes.Add(agente);
                    db.SaveChanges();
                    fileUploadFotografia.SaveAs(caminhoParaFotografia);
                    return(RedirectToAction("Index"));
                }
                catch (Exception) {
                    ModelState.AddModelError("", "Ocorreu um erro nao determinado na criacao do novo agente");
                }
            }

            return(View(agente));
        }
예제 #19
0
        // GET: Agentes/Details/5
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Details(int?id)
        {
            // se se escrever 'int?' é possível
            // não fornecer o valor para o ID e não há erro

            // proteção para o caso de não ter sido fornecido um ID válido
            if (id == null)
            {
                // instrução original
                // devolve um erro qd não há ID
                // logo, não é possível pesquisar por um Agente
                // return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

                // redirecionar para uma página que nós controlamos
                return(RedirectToAction("Index"));
            }

            // procura na BD, o Agente cujo ID foi fornecido
            Agentes agente = db.Agentes.Find(id);

            // proteção para o caso de não ter sido encontrado qq Agente
            // que tenha o ID fornecido
            if (agente == null)
            {
                // o agente não foi encontrado
                // logo, gera-se uma msg de erro
                // return HttpNotFound();

                // redirecionar para uma página que nós controlamos
                return(RedirectToAction("Index"));
            }



            /// falta, aqui, fazer a mesma proteção
            /// que foi feita no GET do método Edit



            // entrega à View os dados do Agente encontrado
            return(View(agente));
        }
예제 #20
0
        // GET: Agentes/Details/5
        /// <summary>
        /// Mostra os dados de um Agente
        /// </summary>
        /// <param name="id">identifica o Agente</param>
        /// <returns>devolve a View com os dados</returns>
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                // vamos alterar esta resposta por defeito
                // return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                //
                // este erro ocorre porque o utilizador anda a fazer asneiras
                return(RedirectToAction("Index"));
            }

            // SELECT * FROM Agentes WHERE Id=id
            Agentes agente = db.Agentes.Find(id);

            // o Agente foi encontrado?
            if (agente == null)
            {
                // o Agente não foi encontrado, porque o utilizador está 'à pesca'
                // return HttpNotFound();
                return(RedirectToAction("Index"));
            }

            /// o Agente foi encontrado.
            /// posso mostrar os seus dados a quem os solicitou?
            /// sim, se
            ///    - o utilizador pertence ao role 'recursos humanos' ou
            ///    - o utilizador pertence ao role 'gestão multas' ou
            ///    - é o utilizador autenticado
            if (User.IsInRole("RecursosHumanos") ||
                User.IsInRole("GestorMultas") ||
                agente.UserNameId == User.Identity.Name
                )
            {
                // enviar para a View os dados do Agente que foi procurado e encontrado
                return(View(agente));
            }
            else
            {
                // não pode ver os dados
                return(RedirectToAction("Index"));
            }
        }
        public IHttpActionResult PostAgentes(PostAgenteViewModel model)
        {
            if (!ModelState.IsValid)
            {
                // O BadRequest permite usar o ModelState
                // para informar o cliente dos erros de validação
                // tal como no MVC.
                return(BadRequest(ModelState));
            }

            var agentes = new Agentes
            {
                ID       = db.GetIdAgente(),
                Nome     = model.Nome,
                Esquadra = model.Esquadra
            };

            db.Agentes.Add(agentes);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                // Seria muito provável que o método
                // db.Agentes.Max(agente => agente.ID) + 1
                // fizesse com que este if resultasse no Conflict (HTTP 409).
                if (AgentesExists(agentes.ID))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            // Num create, é boa prática devolver uma representação
            // do resultado da criação do objeto na base de dados.
            return(CreatedAtRoute("DefaultApi", new { id = agentes.ID }, agentes));
        }
예제 #22
0
 public ActionResult Edit([Bind(Include = "ID,Nome,Esquadra,Fotografia, UserName")] Agentes agentes)
 {
     ///se o utilizador pertence á role 'GestaoDePessoa', pode efetuar a edição sem qualquer restrição
     ///se o utilizador não pertence á role acima referida  e não é o dono, nada se pode fazer
     ///se o utilizador nãp pertence á role e é o dono dos dados, apenas pode alterar o 'nome' e a 'fotografia'
     ///tarefas:
     ///     1- pesquisar os dados antigos do agente na BD
     ///     2-substituir nos dados novos, o valor da 'esquadra' pelos dados antigos da 'esquadra'
     ///     3-guardar dados na BD
     ///     nota: claro que a validação do Nome e da Fotografia também tem de acontecer
     if (ModelState.IsValid)
     {
         //neste caso já existe um Agente
         //apenas edita os dados
         db.Entry(agentes).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(agentes));
 }
예제 #23
0
        // GET: Agentes/Details/5
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                //return new HttpStatusCodeResult(HttpStatusCode.BadRequest); instrução original predefenida por defeito, pois o sistema nao sabe o detalhe do agente quer ver

                //redirecionar para uma pagina que nos controlamos
                return(RedirectToAction("Index"));
            }
            Agentes agente = db.Agentes.Find(id);

            if (agente == null)
            {
                //o agente nao foi encontrado logo, gera-se uma msg de erro
                //return HttpNotFound();
                //redirecionar para uma pagina que nos controlamos
                return(RedirectToAction("Index"));
            }
            return(View(agente));
        }
예제 #24
0
        // GET: Agentes/Details/5
        public ActionResult Details(int?id)
        // se se escrever int? é possivel não fornecer o valor de ID e não há erro!;

        //proteção para o caso de não ter sido fornecido um ID vãlido;
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            // procura na BD, o Agente cujo ID foi fornecido
            Agentes agentes = db.Agentes.Find(id);

            //proteção para o caso de não ter sido encontrado um Agente com ID fornecido;
            if (agentes == null)
            {
                return(HttpNotFound());
            }
            // entrega à View os dados do Agente encontrado;
            return(View(agentes));
        }
예제 #25
0
        // GET: Agentes/Details/5
        /// <summary>
        /// Apresenta numa listagem os dados de um agente
        /// </summary>
        /// <param name="id">identifica o número do agente a pesquisar</param>
        /// <returns></returns>
        public ActionResult Details(int?id)
        {
            // int? id ---> o '?' informa que o parâmetro é de preenchimento facultativo
            //caso não haja ID, nada é feito
            if (id == null)
            {
                // return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                return(RedirectToAction("Index"));
            }
            // pesquisa os dados do agente, cujo ID foi fornecido
            Agentes agentes = db.Agentes.Find(id);

            // valida se foi encontrado algum Agente, se não foi encontrado, nada faz
            if (agentes == null)
            {
                // return HttpNotFound();
                return(RedirectToAction("Index"));
            }
            // apresenta na view os dados do agente
            return(View(agentes));
        }
예제 #26
0
        // GET: Agentes/Delete/5 
        /// <summary>
        /// apresenta na view os dados de um Agente,
        /// com vista à sua, eventual, eliminacao
        /// </summary>
        /// <param name="id"> identificador do agente a apagar </param>
        /// <returns></returns>
        public ActionResult Delete(int? id)
        {
            //verificar se foi fornecido um ID valido
            if (id == null)
            {
                return RedirectToAction("Index");
            }

            // pesquisa pelo Agente, cujo ID foi fornecido 
            Agentes agente = db.Agentes.Find(id);

            //verifica se o Agente foi encontrado
            if (agente == null)
            {
                //o Agente nao existe
                //redireciona para a pagina inicial
                return RedirectToAction("Index");
            }
            //apresentar os dados na view
            return View(agente);
        }
예제 #27
0
        // GET: Agentes/Delete/5
        /// <summary>
        /// procura os dados de um agente, e mostra-os no ecran
        /// </summary>
        /// <param name="id">identificador do agente a pesquisar</param>
        /// <returns></returns>
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                //return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

                //ou nao foi introduzido um ID valido, ou foi introduzido um valor completamente errado
                return(RedirectToAction("Index"));
            }

            // vai procurar o Agente cujo ID foi fornecido
            Agentes agente = db.Agentes.Find(id);

            // se o Agente NÃO for encontrado...
            if (agente == null)
            {
                // return HttpNotFound();
                return(RedirectToAction("Index"));
            }
            return(View(agente));
        }
예제 #28
0
        public ActionResult DeleteConfirmed(int id)
        {
            Agentes agente = db.Agentes.Find(id);

            try {
                //Procurar o agente

                //Remover da memória
                db.Agentes.Remove(agente);
                //Commit na BD
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            catch (Exception ex) {
                ModelState.AddModelError("", string.Format("Não é possível apagar o Agente nº {0} - {1}, porque há multas associadas a ele...",
                                                           id, agente.Nome)
                                         );
            }
            //Se cheguei aqui é pq houve um problema
            //Devolvo os dados do Agente à View
            return(View(agente));
        }
예제 #29
0
        // GET: Agentes/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            { // vamos alterar esta resposta por defeito
              // return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
              //
              // este erro ocorre porque o utilizador anda a fazer asneiras
                return(RedirectToAction("Index"));
            }
            // SELECT * FROM Agentes WHERE Id=id
            Agentes agentes = db.Agentes.Find(id);

            //o agente foi encontrado?
            if (agentes == null)
            {
                // o Agente não foi encontrado, porque o utilizador está 'à pesca'
                // return HttpNotFound();
                return(RedirectToAction("Index"));
            }

            return(View(agentes));
        }
예제 #30
0
        // GET: Agentes/Delete/5
        /// <summary>
        /// apresenta na view os dados de um agente,
        /// com vista à sua eventual
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Delete(int?id)
        {
            //Verificar se foi fornecido um ID válido
            if (id == null)
            {
                return(RedirectToAction("Index"));
            }

            //Pesquisar pelo Agente cujo ID foi fornecido
            Agentes agente = db.Agentes.Find(id);

            //Verificar se o Agente foi encontrado
            if (agente == null)
            {
                //O agente não existe
                //Redirecionar para a página atual
                return(RedirectToAction("Index"));
            }

            //Retornar para a view os dados do agente
            return(View(agente));
        }