public ActionResult Crear(ImagenPieza imagenPieza, HttpPostedFileBase FileImagen) { var FileImageForm = FileImagen; if (ModelState.IsValid) { //guardar la imagen en carpeta string extension = Path.GetExtension(FileImageForm.FileName); imagenPieza.ImagenPiezaID = Guid.NewGuid(); imagenPieza.NombreImagen = Guid.NewGuid().ToString() + extension; imagenPieza.RutaParcial = "/Content/img/pieza/"; var rutaGuardar_Original = Server.MapPath(imagenPieza.Ruta); FileImageForm.SaveAs(rutaGuardar_Original); FileImageForm.InputStream.Dispose(); FileImageForm.InputStream.Close(); GC.Collect(); ////Generar la mini Thumbnail mini = new Thumbnail() { OrigenSrc = rutaGuardar_Original, DestinoSrc = Server.MapPath(imagenPieza.RutaMini), LimiteAnchoAlto = 250 }; mini.GuardarThumbnail(); //add a la lista de imagenes //guardar en db db.ImagenPiezas.Add(imagenPieza); db.SaveChanges(); AlertaSuccess(string.Format("Se guardo imagen <b>{0}</b>", imagenPieza.Titulo), true); string url = Url.Action("Carrusel", "ImagenPieza", new { id = imagenPieza.PiezaID, status = false, tipo = "thumb" }); return Json(new { success = true, url = url, modelo = "ImagenPieza", lista = "lista", idPieza = imagenPieza.PiezaID }); } return PartialView("_Crear", imagenPieza); }
public ActionResult Editar(ImagenPieza imagenPieza, HttpPostedFileBase FileImagen) { if (ModelState.IsValid) { if (FileImagen != null) { FileInfo infoThumb = new FileInfo(Server.MapPath("~" + imagenPieza.RutaMini)); if (infoThumb.Exists) infoThumb.Delete(); FileInfo infoOriginal = new FileInfo(Server.MapPath("~" + imagenPieza.Ruta)); if (infoOriginal.Exists) infoOriginal.Delete(); infoOriginal = null; infoThumb = null; string extension = Path.GetExtension(FileImagen.FileName); imagenPieza.RutaParcial = "/Content/img/pieza/"; imagenPieza.NombreImagen = Guid.NewGuid().ToString() + extension; imagenPieza.Ruta = imagenPieza.RutaParcial + imagenPieza.NombreImagen; imagenPieza.RutaMini = imagenPieza.RutaParcial + "thumb/" + imagenPieza.NombreImagen; var rutaGuardar_Original = Server.MapPath(imagenPieza.Ruta); FileImagen.SaveAs(rutaGuardar_Original); //Generar la mini Thumbnail mini = new Thumbnail() { OrigenSrc = rutaGuardar_Original, DestinoSrc = Server.MapPath(imagenPieza.RutaMini), LimiteAnchoAlto = 250 }; mini.GuardarThumbnail(); } db.Entry(imagenPieza).State = EntityState.Modified; db.SaveChanges(); AlertaInfo(string.Format("Se edito imagen <b>{0}</b>", imagenPieza.Titulo), true); string url = Url.Action("Carrusel", "ImagenPieza", new { id = imagenPieza.PiezaID, status = false, tipo = "thumb" }); return Json(new { success = true, url = url, modelo = "ImagenPieza", lista = "lista", idPieza = imagenPieza.PiezaID }); } return PartialView("_Editar", imagenPieza); }
public ActionResult Crear(ArchivoPieza archivoPieza, HttpPostedFileBase FileArchivo) { #region Inicio de crear //mostrar los archivos no se guardara en el historial, por que su implementacion es muy costosa var listaMostrarArchivos = new List<MostrarArchivo>(); foreach (var item in db.TipoMostrarArchivos.Where(a => a.Status).ToList()) { string keyStatus = Request.Form["mosArc_" + item.TipoMostrarArchivoID + "_Status"]; bool valorStatus = keyStatus == "true,false" ? true : false; var tempMostrarArchivo = new MostrarArchivo() { Status = valorStatus, TipoMostrarArchivo = item, TipoMostrarArchivoID = item.TipoMostrarArchivoID }; listaMostrarArchivos.Add(tempMostrarArchivo); } #endregion try { #region Validaciones previas //comprobar las extensiones validas var tipoArchivo = db.TipoArchivos.Find(archivoPieza.TipoArchivoID); archivoPieza.Extension = Path.GetExtension(FileArchivo.FileName); if (!tipoArchivo.ExtensionesAceptadas.Replace(" ", "").Split(',').Any(a => "." + a == archivoPieza.Extension)) ModelState.AddModelError("", "Archivo no compatible."); if (FileArchivo == null) ModelState.AddModelError("", "Seleccione un archivo"); #endregion if (ModelState.IsValid) { //Crear la entidad #region pre-creacion de la entidad //validar que la carpeta del tipo de archivo exista if (!Directory.Exists(Server.MapPath(tipoArchivo.Ruta))) Directory.CreateDirectory(Server.MapPath(tipoArchivo.Ruta)); if (!Directory.Exists(Server.MapPath(tipoArchivo.Ruta + "thumb/"))) Directory.CreateDirectory(Server.MapPath(tipoArchivo.Ruta + "thumb/")); //Agregando valores que faltan archivoPieza.ArchivoPiezaID = Guid.NewGuid(); archivoPieza.NombreArchivo = Guid.NewGuid().ToString(); archivoPieza.Orden = db.ArchivoPiezas.Where(a => a.TipoArchivoID == archivoPieza.TipoArchivoID && a.PiezaID == archivoPieza.PiezaID).Count() + 1; archivoPieza.TipoArchivo = tipoArchivo; string rutaGuardar = Server.MapPath(archivoPieza.Ruta); FileArchivo.SaveAs(rutaGuardar); FileArchivo.InputStream.Dispose(); FileArchivo.InputStream.Close(); GC.Collect(); #region Creacion de la miniatura //generar la mini switch (archivoPieza.Extension) { //imagenes case ".jpg": case ".png": case ".tiff": Thumbnail mini = new Thumbnail() { OrigenSrc = rutaGuardar, DestinoSrc = Server.MapPath(archivoPieza.RutaThumb), LimiteAnchoAlto = 220 }; mini.GuardarThumbnail(); break; //videos case ".mp4": case ".avi": break; } #endregion #endregion db.ArchivoPiezas.Add(archivoPieza); db.SaveChanges(); //------ Logica HISTORIAL #region Generar el historial // Generar el historial var historialLog = HistorialLogica.CrearEntidad( archivoPieza, archivoPieza.GetType().Name, archivoPieza.ArchivoPiezaID.ToString(), User.UsuarioID, db); #endregion #region Guardar el historial //Guardar cambios si todo salio correcto if (historialLog != null) { //Guardar la entidad db.SaveChanges(); //Guardar el historial db.HistorialLogs.Add(historialLog); db.SaveChanges(); } else { throw new Exception(); } #endregion //------ foreach (var item in listaMostrarArchivos) { item.ArchivoPiezaID = archivoPieza.ArchivoPiezaID; db.MostrarArchivos.Add(item); db.SaveChanges(); } //Logica para terminar la instruccion #region logica finalizar AlertaSuccess(string.Format("Se guardo archivo {0} <b>{1}</b>", tipoArchivo.Nombre, archivoPieza.Titulo), true); string url = ""; bool esImagen = tipoArchivo.Temp == "imagen_clave" ? true : false; var tipoMostrarArchivo = db.TipoMostrarArchivos.FirstOrDefault(a => a.Nombre == "Completos"); if (esImagen) url = Url.Action("ContenedorImagen", "ArchivoPieza", new { id = archivoPieza.PiezaID, tipoMostrarArchivoID = tipoMostrarArchivo.TipoMostrarArchivoID, esCompleta = true }); else url = Url.Action("Lista", "ArchivoPieza", new { id = archivoPieza.PiezaID, TipoArchivoID = tipoArchivo.TipoArchivoID, esCompleta = true }); #endregion return Json(new { success = true, url = url, idPieza = archivoPieza.PiezaID, esImagen = esImagen }); } } catch (Exception) { ModelState.AddModelError("", "Error desconocido."); } archivoPieza.MostrarArchivos = listaMostrarArchivos; return PartialView("_Crear", archivoPieza); }
public ActionResult Editar(ArchivoPieza archivoPieza, HttpPostedFileBase FileArchivo, string Motivo) { #region inicio de editar var listaMostrarArchivos = new List<MostrarArchivo>(); //comprobar las extensiones validas var tipoArchivo = db.TipoArchivos.Find(archivoPieza.TipoArchivoID); archivoPieza.TipoArchivo = tipoArchivo; bool esImagen = tipoArchivo.Temp == "imagen_clave" ? true : false; ViewBag.esImagen = esImagen; foreach (var item in db.TipoMostrarArchivos.Where(a => a.Status).ToList()) { string keyStatus = Request.Form["mosArc_" + item.TipoMostrarArchivoID + "_Status"]; bool valorStatus = keyStatus == "true,false" ? true : false; var tempMostrarArchivo = db.MostrarArchivos.Find(item.TipoMostrarArchivoID, archivoPieza.ArchivoPiezaID); tempMostrarArchivo.Status = valorStatus; db.Entry(tempMostrarArchivo).State = EntityState.Modified; } #endregion try { #region Validaciones previas bool eliminarArchivo = false; string rutaThumb = ""; string rutaOriginal = ""; if (FileArchivo != null) { eliminarArchivo = true; archivoPieza.Extension = Path.GetExtension(FileArchivo.FileName); if (!tipoArchivo.ExtensionesAceptadas.Replace(" ", "").Split(',').Any(a => "." + a == archivoPieza.Extension)) { ModelState.AddModelError("", "Archivo no compatible."); eliminarArchivo = false; } rutaThumb = "~" + archivoPieza.RutaThumb; rutaOriginal = "~" + archivoPieza.Ruta; } if (string.IsNullOrWhiteSpace(Motivo)) ModelState.AddModelError("Motivo", "Motivo vacio."); #endregion if (ModelState.IsValid) { //Guardar el mostrar archivo db.SaveChanges(); #region preparar la eliminacion if (eliminarArchivo) { if (!Directory.Exists(Server.MapPath(tipoArchivo.Ruta))) Directory.CreateDirectory(Server.MapPath(tipoArchivo.Ruta)); if (!Directory.Exists(Server.MapPath(tipoArchivo.Ruta + "thumb/"))) Directory.CreateDirectory(Server.MapPath(tipoArchivo.Ruta + "thumb/")); archivoPieza.NombreArchivo = Guid.NewGuid().ToString(); string rutaGuardar = Server.MapPath(archivoPieza.Ruta); FileArchivo.SaveAs(rutaGuardar); FileArchivo.InputStream.Dispose(); FileArchivo.InputStream.Close(); GC.Collect(); //generar la mini switch (archivoPieza.Extension) { //imagenes case ".jpg": case ".png": case ".tiff": Thumbnail mini = new Thumbnail() { OrigenSrc = rutaGuardar, DestinoSrc = Server.MapPath(archivoPieza.RutaThumb), LimiteAnchoAlto = 220 }; mini.GuardarThumbnail(); break; //videos case ".mp4": case ".avi": break; } //Eliminar los archivos FileInfo infoThumb = new FileInfo(Server.MapPath(rutaThumb)); if (infoThumb.Exists) infoThumb.Delete(); FileInfo infoOriginal = new FileInfo(Server.MapPath(rutaOriginal)); if (infoOriginal.Exists) infoOriginal.Delete(); } #endregion //------ Logica HISTORIAL #region Generar el historial //objeto del formulario var objeto = archivoPieza; //Objeto de la base de datos var objetoDB = db.ArchivoPiezas.Find(archivoPieza.ArchivoPiezaID); //tabla o clase a la que pertenece var tablaNombre = objeto.GetType().Name; //llave primaria del objeto var llavePrimaria = objetoDB.ArchivoPiezaID.ToString(); //generar el historial var historialLog = HistorialLogica.EditarEntidad( objeto, objetoDB, tablaNombre, llavePrimaria, User.UsuarioID, db, Motivo ); #endregion #region Guardar el historial if (historialLog != null) { //Cambiar el estado a la entidad a modificada db.Entry(objetoDB).State = EntityState.Modified; //Guardamos la entidad modificada db.SaveChanges(); //Guardar el historial db.HistorialLogs.Add(historialLog); db.SaveChanges(); } #endregion //------ //Logica para terminar la instruccion #region logica finalizar AlertaInfo(string.Format("Se edito archivo {0} <b>{1}</b>", tipoArchivo.Nombre, archivoPieza.Titulo), true); string url = ""; var tipoMostrarArchivo = db.TipoMostrarArchivos.FirstOrDefault(a => a.Nombre == "Completos"); if (esImagen) url = Url.Action("ContenedorImagen", "ArchivoPieza", new { id = archivoPieza.PiezaID, tipoMostrarArchivoID = tipoMostrarArchivo.TipoMostrarArchivoID, esCompleta = true }); else url = Url.Action("Lista", "ArchivoPieza", new { id = archivoPieza.PiezaID, TipoArchivoID = tipoArchivo.TipoArchivoID, esCompleta = true }); #endregion return Json(new { success = true, url = url, idPieza = archivoPieza.PiezaID, esImagen = esImagen }); } } catch (Exception) { ModelState.AddModelError("", "Error desconocido."); } return PartialView("_Editar", archivoPieza); }
public ActionResult Registrar(Guid? TipoObraID, int? LetraFolioID, Guid? TipoPiezaID) { var Formulario = Request.Form; int InicioFolio = 1; if (TipoObraID == null || LetraFolioID == null || TipoPiezaID == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); var letra = db.LetraFolios.Find(LetraFolioID); var tipoObra = db.TipoObras.Find(TipoObraID); var tipoPieza = tipoObra.TipoPiezas.FirstOrDefault(a => a.TipoPiezaID == TipoPiezaID); if (tipoObra == null || letra == null || tipoPieza == null) return HttpNotFound(); //buscar el ultimo numero del folio subido InicioFolio = db.Obras.Where(a => a.LetraFolioID == letra.LetraFolioID).Select(a=> a.NumeroFolio).OrderByDescending(a=> a).FirstOrDefault(); var obra = new Obra() { FechaRegistro = DateTime.Now, TipoObraID = tipoObra.TipoObraID, LetraFolioID = letra.LetraFolioID, Status = false, NumeroFolio = InicioFolio }; obra.ObraID = Guid.NewGuid(); //Crear pieza Pieza pieza = new Pieza() { PiezaID = Guid.NewGuid(), FechaRegistro = obra.FechaRegistro, ObraID = obra.ObraID, Status = false, PiezaPadreID = null, // null = Principal o Maestra TipoPiezaID = tipoPieza.TipoPiezaID, SubFolio = tipoPieza.Prefijo }; //lista de atributos de registro var listaAttRegistro = tipoPieza.Atributos.Where(a => a.Status && a.MostrarAtributos.Any(b => b.TipoMostrar.Nombre == "Registro" && b.Status) && a.TipoAtributo.Status).OrderBy(a => a.Orden).ToList(); List<AtributoPieza> listaAdd_AttGen = new List<AtributoPieza>(); List<AutorPieza> listaAdd_AttAutor = new List<AutorPieza>(); List<ImagenPieza> listaAdd_AttImg = new List<ImagenPieza>(); List<TecnicaPieza> listaAdd_AttTec = new List<TecnicaPieza>(); List<MedidaPieza> listaAdd_AttMed = new List<MedidaPieza>(); Ubicacion ubicacionAdd = null; List<string> listaKey; /* * Extraer los registros del formulario dependiendo el tipo de Atributo * * IMAGEN * SIMPLE * id_####################_File (File) * id_####################_Titulo (Input) * id_####################_Descripcion (Input) * * */ foreach (var att in listaAttRegistro) { var tipoAtt = att.TipoAtributo; if (tipoAtt.EsGenerico) { /* * GENERICO * LISTA * SIMPLE * id_#################### (Select) * MULTI * id_####################_#################### (Input) */ if (tipoAtt.EsLista) { if (tipoAtt.EsMultipleValor) listaKey = Formulario.AllKeys.Where(k => k.StartsWith("id_" + att.AtributoID + "_")).ToList(); else listaKey = Formulario.AllKeys.Where(k => k.StartsWith("id_" + att.AtributoID)).ToList(); //buscar en form todas las llaves que correspondan al id_xxxxxxxxxxxxxx_xxxxxxxxxxxxxx foreach (string key in listaKey) { var addOk = true; string valor = Formulario[key]; addOk = String.IsNullOrWhiteSpace(valor) ? false : true; //validar el valorID, buscar el valor Guid valorID = addOk ? new Guid(valor) : new Guid(new Byte[16]); addOk = !addOk ? addOk : listaAdd_AttGen.Where(a => a.AtributoID == att.AtributoID && a.ListaValorID == valorID).FirstOrDefault() == null ? true : false; addOk = !addOk ? addOk : db.ListaValores.Where(a => a.TipoAtributoID == tipoAtt.TipoAtributoID && a.Status && a.ListaValorID == valorID).FirstOrDefault() == null ? false : true; if (addOk) listaAdd_AttGen.Add(new AtributoPieza() { AtributoPiezaID = Guid.NewGuid(), AtributoID = att.AtributoID, PiezaID = pieza.PiezaID, Status = true, ListaValorID = valorID }); } } else { /* * GENERICO * CAMPO * SIMPLE * id_#################### (Input) * MULTI * id_####################_##### (Input) */ if (tipoAtt.EsMultipleValor) listaKey = Formulario.AllKeys.Where(k => k.StartsWith("id_" + att.AtributoID + "_")).ToList(); else listaKey = Formulario.AllKeys.Where(k => k.StartsWith("id_" + att.AtributoID)).ToList(); //buscar en form todas las llaves que correspondan al id_xxxxxxxxxxxxxx foreach (string key in listaKey) { var addOk = true; string valor = Formulario[key]; //validar el campo, quitar espacios en blanco, bla bla bla valor = valor.Trim(); // quitar espacios en inicio y fin valor = Regex.Replace(valor, @"\s+", " "); //quitar espacios de sobra addOk = String.IsNullOrWhiteSpace(valor) ? false : true; addOk = !addOk ? addOk : listaAdd_AttGen.Where(a => a.AtributoID == att.AtributoID && a.Valor == valor).FirstOrDefault() == null ? true : false; if (addOk) listaAdd_AttGen.Add(new AtributoPieza() { AtributoPiezaID = Guid.NewGuid(), AtributoID = att.AtributoID, PiezaID = pieza.PiezaID, Status = true, Valor = valor }); } } } else { switch (tipoAtt.TablaSQL) { case "Autor": /* * AUTOR * MULTIPLE * id_####################_#################### (Input) * id_####################_####################_prefijo (Input) */ //filtrar id_####### listaKey = Formulario.AllKeys.Where(k => k.StartsWith("id_" + att.AtributoID + "_")).ToList(); ///filtrar: ignorar los _prefijo listaKey = listaKey.Where(k => !k.EndsWith("_prefijo")).ToList(); //buscar en form todas las llaves que correspondan al id_xxxxxxxxxxxxxx_xxxxxxxxxxxxxx foreach (string key in listaKey) { var addOk = true; string text_autorID = Formulario[key]; string text_prefijo = Formulario[key + "_prefijo"]; addOk = String.IsNullOrWhiteSpace(text_autorID) ? false : true; //validar el valorID, buscar el valor Guid autorID = addOk ? new Guid(text_autorID) : new Guid(new Byte[16]); addOk = !addOk ? addOk : listaAdd_AttAutor.Where(a => a.AutorID == autorID).FirstOrDefault() == null ? true : false; addOk = !addOk ? addOk : db.Autores.Where(a => a.Status && a.AutorID == autorID).FirstOrDefault() == null ? false : true; if (addOk) { var autorPieza = new AutorPieza() { AutorID = autorID, PiezaID = pieza.PiezaID, esPrincipal = false, Prefijo = text_prefijo, Status = true }; //validar si es principal if (autorPieza.Prefijo.ToLower() == "principal") autorPieza.esPrincipal = listaAdd_AttAutor.Where(a => a.esPrincipal).Count() == 0 ? true : false; listaAdd_AttAutor.Add(autorPieza); } } break; case "Ubicacion": /* * UBICACION * SIMPLE * id_#################### (select) */ listaKey = Formulario.AllKeys.Where(k => k.StartsWith("id_" + att.AtributoID)).ToList(); //buscar en form todas las llaves que correspondan al id_xxxxxxxxxxxxxx_xxxxxxxxxxxxxx foreach (string key in listaKey) { var addOk = true; string texto_ubicacionID = Formulario[key]; addOk = String.IsNullOrWhiteSpace(texto_ubicacionID) ? false : true; //validar el valorID, buscar el valor Guid ubicacionID = addOk ? new Guid(texto_ubicacionID) : new Guid(new Byte[16]); addOk = !addOk ? addOk : ubicacionAdd == null ? true : false; addOk = !addOk ? addOk : db.Ubicaciones.Where(a => a.Status && a.UbicacionID == ubicacionID).FirstOrDefault() == null ? false : true; if (addOk) pieza.UbicacionID = ubicacionID; } break; case "TipoTecnica": /* * TECNICA * SIMPLE * id_#################### (Select) */ listaKey = Formulario.AllKeys.Where(k => k.StartsWith("id_" + att.AtributoID)).ToList(); //buscar en form todas las llaves que correspondan al id_xxxxxxxxxxxxxx_xxxxxxxxxxxxxx foreach (string key in listaKey) { var addOk = true; string texto_TecnicaID = Formulario[key]; addOk = String.IsNullOrWhiteSpace(texto_TecnicaID) ? false : true; //validar el valorID, buscar el valor Guid tecnicaID = addOk ? new Guid(texto_TecnicaID) : new Guid(new Byte[16]); addOk = !addOk ? addOk : listaAdd_AttTec.Where(a => a.TecnicaID == tecnicaID).FirstOrDefault() == null ? true : false; addOk = !addOk ? addOk : db.Tecnicas.Where(a => a.TecnicaID == tecnicaID && a.Status).FirstOrDefault() == null ? false : true; if (addOk) { var tecnica = db.Tecnicas.Where(a => a.TecnicaID == tecnicaID && a.Status).FirstOrDefault(); listaAdd_AttTec.Add(new TecnicaPieza() { PiezaID = pieza.PiezaID, Status = true, TecnicaID = tecnica.TecnicaID, TipoTecnicaID = tecnica.TipoTecnicaID }); } } break; case "TipoMedida": /* * TIPO MEDIDA * SIMPLE * id_#################### (Select)(TipoMedida) * id_####################_UML (Select) * id_####################_Altura (input) * id_####################_Anchura (input) * id_####################_Profundidad (input) * id_####################_Diametro (input) * id_####################_Diametro2 (input) */ listaKey = Formulario.AllKeys.Where(k => k == "TipoMedidaID").ToList(); //buscar en form todas las llaves que correspondan al id_xxxxxxxxxxxxxx_xxxxxxxxxxxxxx foreach (string key in listaKey) { var addOk = true; string texto_TipoMedidaID = Formulario[key]; addOk = String.IsNullOrWhiteSpace(texto_TipoMedidaID) ? false : true; //validar el valorID, buscar el valor Guid tipoMedidaID = addOk ? new Guid(texto_TipoMedidaID) : new Guid(new Byte[16]); addOk = !addOk ? addOk : listaAdd_AttMed.Where(a => a.TipoMedidaID == tipoMedidaID).FirstOrDefault() == null ? true : false; addOk = !addOk ? addOk : db.TipoMedidas.Where(a => a.TipoMedidaID == tipoMedidaID && a.Status).FirstOrDefault() == null ? false : true; if (addOk) { var medidaPieza = new MedidaPieza() { PiezaID = pieza.PiezaID, Status = true, TipoMedidaID = tipoMedidaID }; string text_UML = String.IsNullOrWhiteSpace(Formulario["id_" + att.AtributoID + "_UML"]) ? "cm" : Formulario["id_" + att.AtributoID + "_UML"]; string text_Altura = String.IsNullOrWhiteSpace(Formulario["id_" + att.AtributoID + "_Altura"]) ? "0" : Formulario["id_" + att.AtributoID + "_Altura"]; string text_Anchura = String.IsNullOrWhiteSpace(Formulario["id_" + att.AtributoID + "_Anchura"]) ? "0" : Formulario["id_" + att.AtributoID + "_Anchura"]; string text_Profundidad = String.IsNullOrWhiteSpace(Formulario["id_" + att.AtributoID + "_Profundidad"]) ? "0" : Formulario["id_" + att.AtributoID + "_Profundidad"]; string text_Diametro = String.IsNullOrWhiteSpace(Formulario["id_" + att.AtributoID + "_Diametro"]) ? "0" : Formulario["id_" + att.AtributoID + "_Diametro"]; string text_Diametro2 = String.IsNullOrWhiteSpace(Formulario["id_" + att.AtributoID + "_Diametro2"]) ? "0" : Formulario["id_" + att.AtributoID + "_Diametro2"]; if (text_Altura == "0") medidaPieza.Altura = Convert.ToDouble("text_Altura"); if (text_Anchura == "0") medidaPieza.Anchura = Convert.ToDouble("text_Anchura"); if (text_Altura == "0") medidaPieza.Profundidad = Convert.ToDouble("text_Profundidad"); if (text_Altura == "0") medidaPieza.Diametro = Convert.ToDouble("text_Diametro"); if (text_Altura == "0") medidaPieza.Diametro2 = Convert.ToDouble("text_Diametro2"); switch (text_UML) { case "pulgada": medidaPieza.UMLongitud = UMLongitud.pulgada; break; case "dc": medidaPieza.UMLongitud = UMLongitud.dc; break; case "m": medidaPieza.UMLongitud = UMLongitud.m; break; case "dam": medidaPieza.UMLongitud = UMLongitud.dam; break; case "mm": medidaPieza.UMLongitud = UMLongitud.mm; break; case "hm": medidaPieza.UMLongitud = UMLongitud.hm; break; case "km": medidaPieza.UMLongitud = UMLongitud.km; break; default: medidaPieza.UMLongitud = UMLongitud.cm; break; } listaAdd_AttMed.Add(medidaPieza); } } break; case "ImagenPieza": listaKey = Request.Files.AllKeys.Where(k => k == "id_" + att.AtributoID + "_File").ToList(); //buscar en form todas las llaves que correspondan al id_xxxxxxxxxxxxxx_xxxxxxxxxxxxxx foreach (string key in listaKey) { HttpPostedFileBase FileImageForm = Request.Files[key]; string texto_Titulo = Formulario["id_" + att.AtributoID + "_Titulo"]; string texto_Descripcion = Formulario["id_" + att.AtributoID + "_Descripcion"]; string extension = Path.GetExtension(FileImageForm.FileName); var imgGuid = Guid.NewGuid(); ImagenPieza imagenPieza = new ImagenPieza() { PiezaID = pieza.PiezaID, ImagenPiezaID = imgGuid, Titulo = texto_Titulo, Descripcion = texto_Descripcion, EsPrincipal = true, Orden = 1, Status = true, RutaParcial = "/Content/img/pieza/", NombreImagen = imgGuid.ToString() + extension, }; var rutaGuardar_Original = Server.MapPath(imagenPieza.Ruta); FileImageForm.SaveAs(rutaGuardar_Original); FileImageForm.InputStream.Dispose(); FileImageForm.InputStream.Close(); GC.Collect(); //Generar la mini Thumbnail mini = new Thumbnail() { OrigenSrc = rutaGuardar_Original, DestinoSrc = Server.MapPath(imagenPieza.RutaMini), LimiteAnchoAlto = 250 }; mini.GuardarThumbnail(); //add a la lista de imagenes listaAdd_AttImg.Add(imagenPieza); } break; default: AlertaDanger(String.Format("No se pudo guardar el campo, {0}.", att.NombreAlterno)); break; } } } if (ModelState.IsValid) { //validar el numero de folio obra.NumeroFolio = DarFolioValido(obra.LetraFolioID, obra.NumeroFolio); //Guardar la obra db.Obras.Add(obra); db.SaveChanges(); //Guardar la pieza db.Piezas.Add(pieza); db.SaveChanges(); //Guardar sus atributos db.AtributoPiezas.AddRange(listaAdd_AttGen); db.AutorPiezas.AddRange(listaAdd_AttAutor); db.ImagenPiezas.AddRange(listaAdd_AttImg); db.TecnicaPiezas.AddRange(listaAdd_AttTec); db.MedidaPiezas.AddRange(listaAdd_AttMed); db.SaveChanges(); return RedirectToAction("Detalles", "Obra", new { id = obra.ObraID }); } return Json(new { success = false }); }