public ActionResult Registrar(Material material)
        {
            if (!LoginController.validaUsuario(Session))
                return RedirectToAction("Index", "Home");
            if (!LoginController.validaRol(Session))
                return RedirectToAction("Index", "Home");

            try
            {
                ViewBag.CatMaterial = new SelectList((from s in db.CategoriaMat
                                                      where s.Estado == 1
                                                      select new
                                                      {
                                                          s.IdCategoria,
                                                          s.Nombre
                                                      }
                                                     ), "IdCategoria", "Nombre");
                ViewBag.Proveedor = new SelectList((from s in db.Proveedor
                                                    where s.Estado == 1
                                                    select new
                                                    {
                                                        s.IdProveedor,
                                                        s.Nombre
                                                    }
                                                     ), "IdProveedor", "Nombre");
                ViewBag.IdTipoMaterial = new SelectList((from s in db.TipoMaterial
                                                         where s.IdCatMat == material.IdCatMat && s.Estado == 1
                                                         select new
                                                         {
                                                             s.IdTipoMaterial,
                                                             s.Nombre
                                                         }
                                                     ), "IdTipoMaterial", "Nombre");
                ModelState.Remove("Usuario");
                material.Usuario = Session["UsuarioActual"].ToString();

                if (ModelState.IsValid)
                {

                    if (material.IdCatMat != 1)
                    {
                        if (TempData["ListaColores"] != null)
                        {
                            db.Material.Add(material);
                            db.SaveChanges();
                            foreach (ColorMaterial item in (List<ColorMaterial>)TempData["ListaColores"])
                            {
                                item.IdMaterial = material.IdMaterial;
                                db.ColorMaterial.Add(item);
                            }
                            db.SaveChanges();
                            TempData["ListaColores"] = null;
                        }
                        else
                        {
                            ModelState.AddModelError("ColorMaterial", "Debe registrar al menos un Color.");
                            return View(material);
                        }

                    }
                    else
                    {
                        db.Material.Add(material);
                        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(material);
        }
        public ActionResult Editar(int? id, Material material)
        {
            if (!LoginController.validaUsuario(Session))
                return RedirectToAction("Index", "Home");
            if (!LoginController.validaRol(Session))
                return RedirectToAction("Index", "Home");

            ViewBag.CatMaterial = new SelectList((from s in db.CategoriaMat
                                                  where s.Estado == 1
                                                  select new
                                                  {
                                                      s.IdCategoria,
                                                      s.Nombre
                                                  }
                                                          ), "IdCategoria", "Nombre");
            ViewBag.Proveedor = new SelectList((from s in db.Proveedor
                                                where s.Estado == 1
                                                select new
                                                {
                                                    s.IdProveedor,
                                                    s.Nombre
                                                }
                                                 ), "IdProveedor", "Nombre");
            ViewBag.ColorMaterial = new SelectList((from s in db.ColorMat
                                                    where s.IdCatMaterial == material.IdCatMat && s.Estado == 1
                                                    select new
                                                    {
                                                        IdColor = s.IdColor,
                                                        Nombre = s.Nombre
                                                    }), "IdColor", "Nombre");
            ViewBag.SubCatMaterial = new SelectList((from s in db.SubCategoria
                                                     where s.IdCatMat == material.IdCatMat && s.Estado == 1
                                                     select new
                                                     {
                                                         IdSubCatMat = s.IdSubCatMat,
                                                         Nombre = s.Nombre
                                                     }), "IdSubCatMat", "Nombre");
            ViewBag.TipoMateriales = new SelectList((from s in db.TipoMaterial
                                                     where s.IdCatMat == material.IdCatMat && s.Estado == 1
                                                     select new
                                                     {
                                                         s.IdTipoMaterial,
                                                         s.Nombre
                                                     }
                                                    ), "IdTipoMaterial", "Nombre");
            try
            {
                ModelState.Remove("Usuario");
                material.Usuario = Session["UsuarioActual"].ToString();

                if (ModelState.IsValid)
                {
                    material.IdMaterial = id.Value;
                    db.Entry(material).State = EntityState.Modified;
                    db.SaveChanges();
                    if (material.IdCatMat != 1)
                    {
                        var colores = from s in db.ColorMaterial
                                      select s;
                        colores = colores.Where(s => s.IdMaterial == id
                                                            );
                        Listacolores = colores.ToList();
                        foreach (ColorMaterial item in Listacolores)
                        {
                            db.ColorMaterial.Attach(item);
                            db.ColorMaterial.Remove(item);
                            db.SaveChanges();
                        }
                        if (TempData["ListaColores"] != null)
                        {
                            foreach (ColorMaterial item in (List<ColorMaterial>)TempData["ListaColores"])
                            {
                                item.IdMaterial = material.IdMaterial;
                                db.ColorMaterial.Add(item);
                            }
                            db.SaveChanges();
                            TempData["ListaColores"] = null;
                        }
                        else
                        {
                            ModelState.AddModelError("ColorMaterial", "Debe registrar al menos un Color.");
                            return PartialView(material);
                        }
                    }

                    return RedirectToAction("Index");
                }

            }
            catch (RetryLimitExceededException /* dex */)
            {
                ModelState.AddModelError("", "Imposible guardar los cambios. Intentelo de nuevo, si el problema persiste, contacte el administrador del sistema.");
            }
            return PartialView(material);
        }