public ActionResult Registrar([Bind(Include = "IdProducto,Nombre,IdTipoProducto,Forma,Imagen,Estado,Usuario")] Producto producto, HttpPostedFileBase ImageFile) { if (!LoginController.validaUsuario(Session)) return RedirectToAction("Index", "Home"); if (!LoginController.validaRol(Session)) return RedirectToAction("Index", "Home"); try { ViewBag.IdTipoProducto = new SelectList((from s in db.TipoProducto where s.Estado == 1 select new { s.IdTipoProducto, s.Nombre } ), "IdTipoProducto", "Nombre"); ViewBag.Categorias = new SelectList((from s in db.CategoriaMat where s.Estado == 1 select new { s.IdCategoria, s.Nombre } ), "IdCategoria", "Nombre"); ModelState.Remove("Usuario"); producto.Usuario = Session["UsuarioActual"].ToString(); if (ModelState.IsValid) { if (ImageFile != null) { byte[] array; using (MemoryStream ms = new MemoryStream()) { ImageFile.InputStream.CopyTo(ms); array = ms.GetBuffer(); } if (HttpPostedFileBaseExtensions.GetImageFormat(array) != HttpPostedFileBaseExtensions.ImageFormat.Desconocido) { producto.Imagen = array; } else { ModelState.AddModelError("Imagen", "La imagen debe de ser de un formato correcto(jpg,png,gif,jpeg,tiff,bmp)."); return View(); } } if (TempData["ListaMateriales"] != null) { db.Producto.Add(producto); db.SaveChanges(); foreach (ListaMaterialesEsperProducto item in (List<ListaMaterialesEsperProducto>)TempData["ListaMateriales"]) { ListaMatProducto LM = new ListaMatProducto(); LM.IdProducto= producto.IdProducto; LM.IdMaterial = item.IdMaterial; db.ListaMatProducto.Add(LM); } db.SaveChanges(); TempData["ListaMateriales"] = null; } else { db.Producto.Add(producto); db.SaveChanges(); } return RedirectToAction("Index"); } } catch (RetryLimitExceededException /* dex */) { ModelState.AddModelError("", "Imposible guardar cambios. Intentelo de nuevo, y si el problema persiste contacte el administrador del sistema."); } return View(producto); }
public ActionResult Editar([Bind(Include = "IdProducto,Nombre,IdTipoProducto,Forma,Imagen,Estado,Usuario")] Producto producto, HttpPostedFileBase ImageFile) { if (!LoginController.validaUsuario(Session)) return RedirectToAction("Index", "Home"); if (!LoginController.validaRol(Session)) return RedirectToAction("Index", "Home"); ViewBag.IdTipoProducto = new SelectList((from s in db.TipoProducto where s.Estado == 1 select new { s.IdTipoProducto, s.Nombre } ), "IdTipoProducto", "Nombre"); ViewBag.Categorias = new SelectList((from s in db.CategoriaMat where s.Estado == 1 select new { s.IdCategoria, s.Nombre } ), "IdCategoria", "Nombre"); ModelState.Remove("Usuario"); if (ModelState.IsValid) { Producto productoToUpdate = db.Producto.Find(producto.IdProducto); if (TryUpdateModel(productoToUpdate, "", new string[] { "Nombre", "IdTipoProducto","Forma", "Imagen", "Estado", "Usuario" })) { productoToUpdate.Usuario = Session["UsuarioActual"].ToString(); if (ImageFile != null) { byte[] array; using (MemoryStream ms = new MemoryStream()) { ImageFile.InputStream.CopyTo(ms); array = ms.GetBuffer(); } if (HttpPostedFileBaseExtensions.GetImageFormat(array)!= HttpPostedFileBaseExtensions.ImageFormat.Desconocido) { productoToUpdate.Imagen = array; } else { ModelState.AddModelError("Imagen", "La imagen debe de ser de un formato correcto(jpg,png,gif,jpeg,tiff,bmp)."); return View(productoToUpdate); } } db.Entry(productoToUpdate).State = EntityState.Modified; db.SaveChanges(); } if (TempData["ListaMateriales"] != null) { var materiales = (from s in db.ListaMatProducto where s.IdProducto == producto.IdProducto select s).ToList(); foreach (ListaMatProducto item in materiales) { db.ListaMatProducto.Attach(item); db.ListaMatProducto.Remove(item); db.SaveChanges(); } foreach (var item in (List<ListaMaterialesEsperProducto>)TempData["ListaMateriales"]) { if (item.Estado == 1) { ListaMatProducto LM = new ListaMatProducto(); LM.IdProducto = producto.IdProducto; LM.IdMaterial = item.IdMaterial; db.ListaMatProducto.Add(LM); } } db.SaveChanges(); TempData["ListaMateriales"] = null; } return RedirectToAction("Index"); } return View(producto); }