public ActionResult Editar([Bind(Include = "AtributoPiezaID,Valor,Status,PiezaID,AtributoID,ListaValorID")] AtributoPieza atributoPieza) { Guid renderID = atributoPieza.AtributoPiezaID; string texto = ""; bool guardar = false; var attPiezaAnterior = db.AtributoPiezas.Find(atributoPieza.AtributoPiezaID); if (attPiezaAnterior == null) { guardar = false; //alerta no existe el atributo } else { if (attPiezaAnterior.Atributo.TipoAtributo.EsLista) { string valor = Request.Form["id_" + atributoPieza.AtributoID].ToString(); atributoPieza.ListaValorID = new Guid(valor); //no existe el ListaValorID entonces actualizar el AtributoPiezaID con el ListaValorID if (db.AtributoPiezas.Where(a => a.AtributoID == atributoPieza.AtributoID && a.PiezaID == atributoPieza.PiezaID && a.ListaValorID == atributoPieza.ListaValorID).Count() == 0) { guardar = true; var listaValor = db.ListaValores.FirstOrDefault(a => a.ListaValorID == atributoPieza.ListaValorID); texto = listaValor.Valor; AlertaSuccess(string.Format("{0}: <b>{1}</b> se actualizo a <b>{2}</b>.", attPiezaAnterior.Atributo.NombreAlterno, attPiezaAnterior.ListaValor.Valor, listaValor.Valor), true); attPiezaAnterior.ListaValorID = listaValor.ListaValorID; } else { guardar = false; //Alerta ya existe } } else { //campo texto //tratar el atributoPieza.Valor , quitar espacios extras atributoPieza.Valor = Regex.Replace(atributoPieza.Valor.Trim(), @"\s+", " "); if (db.AtributoPiezas.Where(a => a.AtributoID == atributoPieza.AtributoID && a.PiezaID == atributoPieza.PiezaID && a.Valor == atributoPieza.Valor).Count() == 0) { guardar = true; texto = atributoPieza.Valor; AlertaSuccess(string.Format("{0}: <b>{1}</b> se actualizo a <b>{2}</b>.", attPiezaAnterior.Atributo.NombreAlterno, atributoPieza.Valor, attPiezaAnterior.Valor), true); attPiezaAnterior.Valor = atributoPieza.Valor; } else { guardar = false; //alerta ya existe } } } if (guardar) { db.Entry(attPiezaAnterior).State = EntityState.Modified; db.SaveChanges(); renderID = attPiezaAnterior.AtributoPiezaID; } return(Json(new { success = true, renderID = "valor_" + renderID, texto = texto, guardar = guardar })); }
public ActionResult Editar(Guid?id, Guid?AtributoID, Guid?LLaveID) { //id PiezaID //atributoID //AtributoPiezaID || TablaID Pieza pieza = db.Piezas.Find(id); PartialViewResult _vista = null; if (id == null || AtributoID == null || LLaveID == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Atributo att = db.Atributos.Find(AtributoID); if (att == null) { return(HttpNotFound()); } if (att.TipoAtributo.EsGenerico) { AtributoPieza attPieza = db.AtributoPiezas.Find(LLaveID); if (att.TipoAtributo.EsLista) { List <ListaValor> lista = new List <ListaValor>(); lista.Add(attPieza.ListaValor); //agregar valor por si no viene en los primeros 500 lista.AddRange(att.TipoAtributo.ListaValores.Where(a => a.Status && !String.IsNullOrWhiteSpace(a.Valor)).OrderBy(a => a.Valor).Take(100).ToList()); ViewBag.ListaValorID = new SelectList(lista, "ListaValorID", "Valor", attPieza.ListaValorID); _vista = PartialView("_EditarGenericoLista", attPieza); } else { _vista = PartialView("_EditarGenericoCampo", attPieza); } } else { switch (att.TipoAtributo.TablaSQL) { case "Autor": List <Autor> listaAutores = new List <Autor>(); var piezaAutor = db.AutorPiezas.Find(id, LLaveID); listaAutores.Add(piezaAutor.Autor); listaAutores.AddRange(db.Autores.Where(a => a.Status).OrderBy(a => a.Nombre).Take(100).ToList()); ViewBag.AutorID = new SelectList(listaAutores.Select(a => new { Nombre = a.Nombre + " " + a.Apellido, a.AutorID }), "AutorID", "Nombre", piezaAutor.Autor.AutorID); _vista = PartialView("~/Views/AutorPieza/_Editar.cshtml", piezaAutor); break; case "Ubicacion": List <Ubicacion> listaUbicaciones = new List <Ubicacion>(); listaUbicaciones.Add(pieza.Ubicacion); listaUbicaciones.AddRange(db.Ubicaciones.Where(a => a.Status).OrderBy(a => a.Nombre).Take(100).ToList()); ViewBag.UbicacionID = new SelectList(listaUbicaciones, "UbicacionID", "Nombre", pieza.UbicacionID); _vista = PartialView("~/Views/Pieza/_EditarUbicacion.cshtml", pieza); break; case "TipoTecnica": List <Tecnica> listaTecnicas = new List <Tecnica>(); var piezaTecnica = db.TecnicaPiezas.Find(id, LLaveID); //Select TipoTecnica var listaTipoTecnicas = db.TipoTecnicas.Where(a => a.TipoTecnicaID == piezaTecnica.TipoTecnicaID).OrderBy(a => a.Nombre).Select(a => new { Nombre = a.Nombre, a.TipoTecnicaID }).ToList(); ViewBag.TipoTecnicaID = new SelectList(listaTipoTecnicas, "TipoTecnicaID", "Nombre", piezaTecnica.TipoTecnicaID); //Select Tecnica listaTecnicas.Add(piezaTecnica.Tecnica); listaTecnicas.AddRange(db.Tecnicas.Where(a => a.Status && a.TipoTecnicaID == piezaTecnica.TipoTecnicaID).OrderBy(a => a.Descripcion).Take(100).ToList()); ViewBag.TecnicaID = new SelectList(listaTecnicas.Select(a => new { Nombre = a.Descripcion, a.TecnicaID }), "TecnicaID", "Nombre", piezaTecnica.TecnicaID); _vista = PartialView("~/Views/TecnicaPieza/_Editar.cshtml", piezaTecnica); break; case "TipoMedida": var medidaPieza = db.MedidaPiezas.Find(id, LLaveID); ViewBag.NombreMedida = medidaPieza.TipoMedida.Nombre; _vista = PartialView("~/Views/MedidaPieza/_Editar.cshtml", medidaPieza); break; default: //_vista = PartialView("_ErrorCampo"); break; } } ViewBag.EsMultipleValor = att.TipoAtributo.EsMultipleValor; ViewBag.ParametrosHTML = att.TipoAtributo.HTMLParametros; ViewBag.TipoAtributoID = att.TipoAtributo.TipoAtributoID; ViewBag.NombreAtt = att.TipoAtributo.Nombre; ViewBag.id = id; ViewBag.AtributoID = AtributoID; ViewBag.LLaveID = LLaveID; switch (att.TipoAtributo.DatoCS) { case "double": case "Double": case "int": case "float": case "int32": case "int64": case "decimal": ViewBag.TipoInput = "number"; break; case "date": ViewBag.TipoInput = "date"; break; case "time": ViewBag.TipoInput = "time"; break; case "datetime": ViewBag.TipoInput = "datetime"; break; case "datetime-local": ViewBag.TipoInput = "datetime-local"; break; case "month": ViewBag.TipoInput = "month"; break; case "week": ViewBag.TipoInput = "week"; break; case "color": ViewBag.TipoInput = "color"; break; case "email": ViewBag.TipoInput = "email"; break; case "url": ViewBag.TipoInput = "url"; break; case "tel": ViewBag.TipoInput = "tel"; break; case "range": ViewBag.TipoInput = "range"; break; default: ViewBag.TipoInput = "text"; break; } return(_vista); }