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));
        }