public async Task <IActionResult> Actualizar([FromBody] ActualizarArticuloViewModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (model.idArticulo < 0) { return(BadRequest()); } var articulo = await _context.Articulos.FirstOrDefaultAsync(a => a.idArticulo == model.idArticulo); if (articulo == null) { return(NotFound()); } articulo.idArticulo = model.idArticulo; articulo.descripcion = model.descripcion; articulo.modelo = model.modelo; articulo.precio = model.precio; articulo.existencia = model.existencia; articulo.activo = model.activo; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { //Guardar Excepcion return(BadRequest()); } return(Ok()); }
public ActionResult ActualizarArticulo(ActualizarArticuloViewModel model) { Retorno retorno = new Retorno() { Success = true, Message = "Articulo actualizado correctamente" }; var user = db.Users.Find(User.Identity.GetUserId()); var usuarioHayny = db.Usuarios.Find(user.Usuario.IdUsuario); Articulo articulo = db.Articulos.Find(model.IdArticulo); List <Etiqueta> etiquetas = JsonConvert.DeserializeObject <List <Etiqueta> >(model.Etiquetas); Imagen imagenArticulo = articulo.Imagen; using (var dbTransaction = db.Database.BeginTransaction()) { try { if (Request.Files.Count > 0) { if (articulo.Imagen != null) { string path = Path.Combine(Server.MapPath("~/ImagenesSubidas/"), articulo.Imagen.IdImagen + articulo.Imagen.Formato); try { if (System.IO.File.Exists(path)) { System.IO.File.Delete(path); db.Imagenes.Remove(articulo.Imagen); } } catch (Exception e) { LogFileCreator LogError = new LogFileCreator(); LogError.ErrorLog(Server.MapPath("/Logs"), e.Message); retorno = new Retorno() { Success = false, Message = "Ocurrió un error al subir el archivo" }; return(Json(retorno, JsonRequestBehavior.AllowGet)); } } var file = Request.Files[0]; var fileName = Path.GetFileName(file.FileName); var fileExtension = Path.GetExtension(file.FileName); if (HttpPostedFileBaseExtensions.IsImage(file)) { try { Stream stream = file.InputStream; System.Drawing.Image image = System.Drawing.Image.FromStream(stream); imagenArticulo = new Imagen() { Usuario = usuarioHayny, FechaSubida = DateTime.Now, Height = image.Height, Width = image.Width, Formato = fileExtension, Title = fileName }; db.Imagenes.Add(imagenArticulo); db.SaveChanges(); string path = Path.Combine(Server.MapPath("~/ImagenesSubidas/"), imagenArticulo.IdImagen + fileExtension); file.SaveAs(path); } catch (Exception e) { LogFileCreator LogError = new LogFileCreator(); LogError.ErrorLog(Server.MapPath("/Logs"), e.Message); retorno = new Retorno() { Success = false, Message = "Ocurrió un error al subir el archivo" }; return(Json(retorno, JsonRequestBehavior.AllowGet)); } } else { retorno = new Retorno() { Success = false, Message = "El archivo subido no es una imagen válida" }; return(Json(retorno, JsonRequestBehavior.AllowGet)); } } articulo.Titulo = model.Titulo; articulo.Contenido = model.Contenido; articulo.Imagen = imagenArticulo; db.SaveChanges(); foreach (EtiquetaArticulo e in articulo.EtiquetaArticulo.ToList()) { db.EtiquetaArticulo.Remove(e); } db.SaveChanges(); foreach (Etiqueta etiq in etiquetas) { etiq.Nombre = etiq.Nombre.ToLowerInvariant(); db.Etiquetas.Add(etiq); EtiquetaArticulo etar = new EtiquetaArticulo() { Articulo = articulo, Etiqueta = etiq }; db.EtiquetaArticulo.Add(etar); } db.SaveChanges(); dbTransaction.Commit(); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { LogFileCreator LogError = new LogFileCreator(); foreach (var ve in eve.ValidationErrors) { var mensaje = String.Format(" \"{0}\" , {1} , {2}", eve.Entry.Entity.GetType().Name, ve.PropertyName, ve.ErrorMessage); LogError.ErrorLog(Server.MapPath("/Logs"), mensaje); } } } catch (Exception e) { LogFileCreator LogError = new LogFileCreator(); LogError.ErrorLog(Server.MapPath("/Logs"), e.Message); dbTransaction.Rollback(); } } return(Json(retorno, JsonRequestBehavior.AllowGet)); }