public IHttpActionResult PutAgentes([FromUri] int id, [FromBody] Agentes agentes)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != agentes.ID)
            {
                return(BadRequest());
            }

            db.Entry(agentes).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!AgentesExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
예제 #2
0
        public ActionResult Edit([Bind(Include = "ID,Nome,Esquadra")] Agentes agente, HttpPostedFileBase fileUploadFotografia)
        {
            // falta tratar das imagens, como feito no CREATE
            int    fotoID                = agente.ID;
            string nomeFotografia        = "Agente_" + fotoID + ".jpg";
            string caminhoParaFotografia = Path.Combine(Server.MapPath("~/imagens/"), nomeFotografia); // indica onde a imagem será guardada

            agente.Fotografia = nomeFotografia;

            if (ModelState.IsValid)
            {
                // atualiza os dados do Agente, na estrutura de dados em memória
                db.Entry(agente).State = EntityState.Modified;
                // Commit
                db.SaveChanges();

                // guardar a imagem no disco rígido
                if (fileUploadFotografia != null)
                {
                    fileUploadFotografia.SaveAs(caminhoParaFotografia);
                }

                // redireciona o utilizador para a página de início
                return(RedirectToAction("Index"));
            }
            return(View(agente));
        }
예제 #3
0
        public ActionResult Edit([Bind(Include = "ID,Nome,Fotografia,Esquadra")] Agentes agente, HttpPostedFileBase carregaFotografia)
        {
            string filename  = "";
            string imagePath = "";
            string oldName   = "";

            //Verificar se existe uma fotografia
            if (carregaFotografia != null)//Existe um ficheiro
            {
                filename          = "agente_" + agente.ID + DateTime.Now.ToString("_yyyyMMdd_hhmmss") + ".jpg";
                imagePath         = Path.Combine(Server.MapPath("~/imagens/"), filename);
                oldName           = agente.Fotografia;
                agente.Fotografia = filename;
            }

            if (ModelState.IsValid)
            {
                try
                {
                    db.Entry(agente).State = EntityState.Modified;
                    db.SaveChanges();
                    if (carregaFotografia != null)//Existe um ficheiro
                    {
                        System.IO.File.Delete(Path.Combine(Server.MapPath("~/imagens/"), oldName));
                        carregaFotografia.SaveAs(imagePath);
                    }
                    return(RedirectToAction("Index"));
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", "erro");
                }
            }
            return(View(agente));
        }
예제 #4
0
 public ActionResult Edit([Bind(Include = "ID,Nome,Esquadra,Fotografia")] Agentes agentes)
 {
     if (ModelState.IsValid)
     {
         db.Entry(agentes).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(agentes));
 }
예제 #5
0
 public ActionResult Edit([Bind(Include = "ID,Nome,Esquadra,Fotografia")] Agentes agentes)
 {
     if (ModelState.IsValid)
     {
         // atualiza os dados do Agente, na estrutura de dados em memória
         db.Entry(agentes).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(agentes));
 }
예제 #6
0
 public ActionResult Edit([Bind(Include = "ID,Nome,Esquadra,Fotografia")] Agentes agentes)
 {
     if (ModelState.IsValid)
     {
         //neste caso ja existe um agente apenas quero Editar os seus dados
         db.Entry(agentes).State = EntityState.Modified;
         //efetua commit
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(agentes));
 }
예제 #7
0
        public ActionResult Edit([Bind(Include = "ID,Nome,Fotografia,Esquadra")] Agentes agente)
        {
            // falta tratar das imagens, como feito no CREATE

            if (ModelState.IsValid)
            {
                // atualiza os dados do Agente, na estrutura de dados em memória
                db.Entry(agente).State = EntityState.Modified;
                // Commit
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(agente));
        }
예제 #8
0
        public ActionResult Edit(MultaFormModel model)
        {
            if (ModelState.IsValid)
            {
                var multas = db.Multas.Find(model.ID);

                // TODO: Preencher campos da multa...
                //       Ver como se faz no controller dos Agentes, método Edit.

                db.Entry(multas).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            PreencherDropDownsComDadosBd(model);

            return(View(model));
        }
예제 #9
0
        public ActionResult Edit([Bind(Include = "ID,Nome,Esquadra,Fotografia")] Agentes agente, HttpPostedFileBase uploadFotografiaEdit)
        {
            string nomeImagem = "Agente_" + agente.ID + ".jpg";

            string path = "";

            if (uploadFotografiaEdit != null)
            {
                if (uploadFotografiaEdit.FileName.EndsWith("jpg") || uploadFotografiaEdit.FileName.EndsWith("png"))
                {
                    path = Path.Combine(Server.MapPath("~/imagens/"), nomeImagem);
                }
                else
                {
                    ModelState.AddModelError("", "Ficheiro não é uma imagem");
                }
                //guardar o nome do ficheiro
                agente.Fotografia = nomeImagem;
            }
            if (ModelState.IsValid)
            {
                // neste caso já existe um Agente
                // apenas quero EDITAR os seus dados
                db.Entry(agente).State = EntityState.Modified;
                //efetuar 'Commit'
                db.SaveChanges();

                if (uploadFotografiaEdit != null)
                {
                    //escrever o ficheiro com a fotografia no disco rígido na pasta
                    uploadFotografiaEdit.SaveAs(path);
                }

                return(RedirectToAction("Index"));
            }
            return(View(agente));
        }
        public ActionResult Edit(EditAgenteViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // Obter o agente a editar, e produzir um erro se não existir.
            var agente = db.Agentes.Find(model.ID);

            if (agente == null)
            {
                ModelState.AddModelError("", "O agente não existe.");

                return(View(model));
            }

            /// como se pretende editar os dados de um Agente,
            /// tem de haver a hipótese de se editar a fotografia dele.
            /// Por esse motivo, é necessário adicionar aos parâmetros de entrada do método
            /// uma variável do tipo HttpPostedFileBase para receber o ficheiro da imagem.
            /// É igualmente necessário adicionar, na View, um objeto do tipo <input type="file" />
            /// para possibilitar a escolha da imagem a efetuar upload.
            /// O nome da variável no método do controller e na view tem de ser o mesmo.
            ///
            /// De igual forma, é necessário alterar a forma como se configura o objeto do tipo <form />,
            /// responsável por enviar os dados do browser para o servidor,
            /// adicionando-lhe o parâmetro 'enctype = "multipart/form-data" '

            /// quando se faz uma simples substituição de uma fotografia por outra,
            /// mantendo o nome original, nem sempre os browsers atualizam, no ecrã,
            /// a nova imagem, pela forma como fazem a gestão da 'cache'.
            /// Por isso, é frequente alterar-se o nome da nova imagem, adicionando-lhe um termo
            /// associado à data+hora da alteração.

            // vars. auxiliares
            string novoNome   = "";
            string nomeAntigo = "";

            if (ModelState.IsValid)
            {
                try
                {              /// se foi fornecida uma nova imagem,
                               /// preparam-se os dados para efetuar a alteração
                    if (model.Fotografia != null)
                    {
                        /// antes de se fazer alguma coisa, preserva-se o nome antigo da imagem,
                        /// para depois a remover do disco rígido do servidor
                        nomeAntigo = agente.Fotografia;
                        /// para o novo nome do ficheiro, vamos adicionar o termo gerado pelo timestamp
                        /// devidamente formatado, mais
                        /// A extensão do ficheiro é obtida automaticamente em vez de ser escrita de forma explícita
                        novoNome = "Agente_" + agente.ID + DateTime.Now.ToString("_yyyyMMdd_hhmmss") + Path.GetExtension(model.Fotografia.FileName).ToLower();;
                        /// atualizar os dados do Agente com o novo nome
                        agente.Fotografia = novoNome;
                        /// guardar a nova imagem no disco rígido
                        model.Fotografia.SaveAs(Path.Combine(Server.MapPath("~/imagens/"), novoNome));
                    }

                    // Passar os dados do modelo para o agente
                    agente.Esquadra = model.Esquadra;

                    // guardar os dados do Agente
                    db.Entry(agente).State = EntityState.Modified;
                    // Commit
                    db.SaveChanges();

                    /// caso tenha sido fornecida uma nova imagem há necessidade de remover
                    /// a antiga
                    if (model.Fotografia != null)
                    {
                        System.IO.File.Delete(Path.Combine(Server.MapPath("~/imagens/"), nomeAntigo));
                    }

                    // enviar os dados para a página inicial
                    return(RedirectToAction("Index"));
                }
                catch (Exception)
                {
                    // caso haja um erro deve ser enviada uma mensagem para o utilizador
                    ModelState.AddModelError("", string.Format("Ocorreu um erro com a edição dos dados do agente {0}", agente.Nome));
                }
            }

            // Preencher novamente os campos que se possam ter perdido...
            model.FotografiaAtual = agente.Fotografia;

            return(View(model));
        }