public async Task <ActionResult> Edit(Categoria categoria) { if (ModelState.IsValid) { db.Entry(categoria).State = EntityState.Modified; await db.SaveChangesAsync(); // INICIO - Guarda los campos adicionales List <CampoValor> campos = HttpContext.Session.GetComplex <List <CampoValor> >("Campos"); foreach (CampoValor campon in campos) { var valor = HttpContext.Request.Form[campon.Campo.Nombre].ToString(); if (campon.Valor != null) { ValorCampo valoredit = await db.ValorCampo.FindAsync(campon.Valor.Id); valoredit.Texto = valor; // db.Entry(original).State = EntityState.Detached; db.Entry(valoredit).State = EntityState.Modified; await db.SaveChangesAsync(); } else { ValorCampo valoradd = new ValorCampo(); valoradd.IdCampo = campon.Campo.Id; valoradd.CategoriaPadre = categoria; valoradd.Texto = valor; await db.ValorCampo.AddAsync(valoradd); await db.SaveChangesAsync(); } } HttpContext.Session.Remove("Campos"); // FIN - almacenar campos adicionales return(RedirectToAction("Index")); } List <SelectListItem> CategoriaLista = new List <SelectListItem>(); var CategoriaListadb = await db.Categoria.Where(n => n.id != categoria.id).ToListAsync(); foreach (var itemn in CategoriaListadb) { CategoriaLista.Add(new SelectListItem() { Text = itemn.numero + " " + itemn.nombre, Value = itemn.id.ToString() }); } ViewBag.Categorias = new SelectList(CategoriaLista, "Value", "Text", categoria.idCategoria); ViewBag.Responsables = new SelectList(await db.Responsable.ToListAsync(), "Id", "Nombre", categoria.IdResponsable); ViewBag.Niveles = new SelectList(await db.Nivel.ToListAsync(), "id", "nombre", categoria.idNivel); //regenerar campos adicionales en viewbag ViewBag.Campos = HttpContext.Session.GetComplex <List <CampoValor> >("Campos"); return(View(categoria)); }
public void CambioModelo(string Modelo, string Accion, object ContenidoNew, string usuario) { if (1 == 1) { string newModelString = ""; string oldModelString = ""; switch (Modelo) { case "Ejecucion": Ejecucion newModel = (Ejecucion)ContenidoNew; newModelString = new JavaScriptSerializer().Serialize(newModel); if (newModel.id != 0) { Ejecucion oldModel = db.Ejecucion.Where(n => n.id == newModel.id).FirstOrDefault(); oldModelString = new JavaScriptSerializer().Serialize(new { id = oldModel.id, idindicador = oldModel.idindicador, idperiodo = oldModel.idperiodo, planeado = oldModel.planeado, ejecutado = oldModel.ejecutado, cargado = oldModel.cargado, Nota = oldModel.Nota, adjunto = oldModel.adjunto }); } break; case "Indicador": Indicador newModel2 = (Indicador)ContenidoNew; newModelString = new JavaScriptSerializer().Serialize(newModel2); if (newModel2.id != 0) { Indicador oldModel2 = db.Indicador.Find(newModel2.id); oldModelString = new JavaScriptSerializer().Serialize(new { id = oldModel2.id, idCategoria = oldModel2.idCategoria, ponderador = oldModel2.ponderador, tipo = oldModel2.tipo, TipoIndicador = oldModel2.TipoIndicador, codigo = oldModel2.codigo, unidad = oldModel2.unidad, nombre = oldModel2.nombre, nota = oldModel2.Nota, adjunto = oldModel2.adjunto }); } break; case "CampoIndicador": ValorCampo newModel3 = (ValorCampo)ContenidoNew; newModelString = new JavaScriptSerializer().Serialize(newModel3); if (newModel3.Id != 0) { ValorCampo oldModel3 = db.ValorCampo.Find(newModel3.Id); oldModelString = new JavaScriptSerializer().Serialize(new { Id = oldModel3.Id, IdCampo = oldModel3.IdCampo, CampoPadre = oldModel3.CampoPadre.Id, Texto = oldModel3.Texto }); } break; } Log log = new Log(); log.UserId = usuario; log.UserName = usuario; log.UserMail = usuario; log.Tarea = Modelo; log.Accion = Accion; log.ContenidoNew = newModelString; log.ContenidoOld = oldModelString; db.Log.Add(log); db.SaveChanges(); } }