public ActionResult Registro(Int64 TipoObraID, Int64 TipoPiezaID, string Folio) { db.Dispose(); db = new RecordFCSContext(); ////Validar el Folio //while (db.Obras.Where(a => a.Clave == Folio).Count() > 0) //{ // string[] nuevaClave = Folio.Split('-'); // int numero = Convert.ToInt32(nuevaClave[1]); // numero++; // Folio = nuevaClave[0] + '-' + numero.ToString().PadLeft(4, '0'); //} var obra = new Obra() { Clave = Folio, TipoObraID = TipoObraID, FechaRegistro = DateTime.Now, Status = Status.PreRegistro, }; //lista de atributos var listaAtributos = db.Atributos.Where(a => a.TipoPiezaID == TipoPiezaID).ToList(); // filtrar los atributos que son solo de la OBRA foreach (var item in listaAtributos) { string campo = "req_list_" + item.TipoAtributoID; string id_text = Request.Form[campo]; Int64 id = Convert.ToInt64(id_text); switch (item.TipoAtributo.DatoCS) { case "TipoAdquisicionID": var tipoAdq = db.TipoAdquisiciones.Where(a => a.TipoAdquisicionID == id).Select(a => new { a.TipoAdquisicionID, a.Nombre}).FirstOrDefault(); if (tipoAdq != null) { obra.TipoAdquisicionID = id; } break; case "PropietarioID": var propietario = db.Propietarios.Where(a => a.PropietarioID == id).Select(a => new { a.PropietarioID, a.Nombre}).FirstOrDefault(); if (propietario != null) { obra.PropietarioID = id; } break; case "ColeccionID": var coleccion = db.Colecciones.Where(a => a.ColeccionID == id).Select(a => new { a.ColeccionID, a.Nombre}).FirstOrDefault(); if (coleccion != null) { obra.ColeccionID = id; } break; case "UbicacionID": var ubicacion = db.Ubicaciones.Where(a => a.UbicacionID == id).Select(a => new { a.UbicacionID, a.Nombre}).FirstOrDefault(); if (ubicacion != null) { obra.UbicacionID = id; } break; } } //validar la clave al final //ultimo registro + 1 var ultimo = db.Obras.Select(a => new { a.ObraID, a.TipoObraID, a.Status, a.Clave}).ToList().LastOrDefault(); if (ultimo != null) { var folio = Convert.ToInt32(ultimo.Clave) + 1; obra.Clave = folio.ToString(); } db.Obras.Add(obra); db.SaveChanges(); // crear la pieza var tipoPieza = db.TipoPiezas.Where(a => a.TipoPiezaID == TipoPiezaID).Select(a => new {a.TipoPiezaID, a.TipoObraID, a.Clave }).FirstOrDefault(); var pieza = new Pieza() { ObraID = obra.ObraID, Clave = obra.Clave + "-" + tipoPieza.Clave, // Rdddaaaa-0000-A TipoPiezaID = TipoPiezaID, UbicacionID = obra.UbicacionID, FechaRegistro = obra.FechaRegistro, Status = true }; db.Piezas.Add(pieza); db.SaveChanges(); //llenar los atributoPieza y si son requeridos extraer el valor foreach (var item in listaAtributos) { var atributoPieza = new AtributoPieza() { PiezaID = pieza.PiezaID, AtributoID = item.AtributoID }; //si son NombreID == "Generico" guardar en AtributoPieza if (item.TipoAtributo.NombreID == "Generico") { //y si es Requerido extraer el valor del form if (item.Requerido) { //si es lista lo guarda en ValorListaID y si no en Valor if (item.TipoAtributo.EsLista) { string campo = "req_list_" + item.TipoAtributoID; Int64? id = Convert.ToInt64(Request.Form[campo]); var listaValor = db.ListaValores.Where(a => a.ListaValorID == id).Select(a => new {a.ListaValorID, a.TipoAtributoID}).FirstOrDefault(); if (listaValor != null) { atributoPieza.ListaValorID = id; } } else { string campo = "req_" + item.TipoAtributoID; string valor = Request.Form[campo]; if (!String.IsNullOrEmpty(valor) || !String.IsNullOrWhiteSpace(valor)) { atributoPieza.Valor = valor; } } } } else if (item.TipoAtributo.DatoHTML == "Catalogo") { //Si no es generico pero si es DatoHTML = "Catalogo" // y si es Requerido entonces guardar el valor en la TABLAPieza if (item.Requerido) { string campo = "req_list_" + item.TipoAtributoID; int? id = Convert.ToInt32(Request.Form[campo]); switch (item.TipoAtributo.DatoCS) { case "TecnicaPieza": var tecnica = db.Tecnicas.Where(a => a.TecnicaID == id).Select(a => new { a.TecnicaID, a.Descripcion}).FirstOrDefault(); if (tecnica != null) { TecnicaPieza tecPieza = new TecnicaPieza() { PiezaID = pieza.PiezaID, TecnicaID = tecnica.TecnicaID, Status = true }; db.TecnicaPiezas.Add(tecPieza); //db.SaveChanges(); } break; case "AutorPieza": var autor = db.Autores.Where(a => a.AutorID == id).Select(a => new { a.AutorID, a.Nombre}).FirstOrDefault(); if (autor != null) { AutorPieza autorPieza = new AutorPieza() { PiezaID = pieza.PiezaID, AutorID = autor.AutorID, Status = true }; db.AutorPiezas.Add(autorPieza); //db.SaveChanges(); } break; case "ImagenPieza": //PEndiente por implementar HttpPostedFileBase FileImagen = Request.Files["FileName"]; var extension = Path.GetExtension(FileImagen.FileName); var imagenPieza = new ImagenPieza() { PiezaID = pieza.PiezaID, Status = true, Orden = 1, Titulo = Request.Form["imagen_" + "Titulo"], Descripcion = Request.Form["imagen_" + "Descripcion"], }; imagenPieza.ImgNombre = Guid.NewGuid().ToString() + extension; var rutaOriginal = Server.MapPath("~" + imagenPieza.Ruta); var rutaThumbnail = Server.MapPath("~" + imagenPieza.RutaThumb); FileImagen.SaveAs(rutaOriginal); //GUARDAR THUMBNAIL var thumb = new Thumbnail() { OrigenSrc = rutaOriginal, DestinoSrc = rutaThumbnail, LimiteAnchoAlto = 300 }; thumb.GuardarThumbnail(); //guardar en db db.ImagenPiezas.Add(imagenPieza); //db.SaveChanges(); break; case "Medida": //Pendiente por implementar var tipoMedida = db.TipoMedidas.Where(a => a.TipoMedidaID == id).Select(a => new { a.TipoMedidaID, a.Nombre}).FirstOrDefault(); if (tipoMedida != null) { Medida medida = new Medida() { PiezaID = pieza.PiezaID, TipoMedidaID = tipoMedida.TipoMedidaID, Status = true }; var xlargo = Request.Form["med_" + "Largo"].ToString(); var xancho = Request.Form["med_" + "Ancho"].ToString(); var xprofundidad =Request.Form["med_" + "Profundidad"].ToString(); var xdiametro = Request.Form["med_" + "Diametro"].ToString(); var xdiametro2 = Request.Form["med_" + "Diametro2"].ToString(); var xUMLongitud = Request.Form["med_" + "UMLongitud"].ToString(); if (xlargo != "0" && xlargo != "") medida.Largo = Convert.ToDouble(xlargo); if (xancho != "0" && xancho != "") medida.Ancho = Convert.ToDouble(xancho); if (xprofundidad != "0" && xprofundidad != "") medida.Profundidad = Convert.ToDouble(xprofundidad); if (xdiametro != "0" && xdiametro != "") medida.Diametro = Convert.ToDouble(xdiametro); if (xdiametro2 != "0" && xdiametro2 != "") medida.Diametro2 = Convert.ToDouble(xdiametro2); switch (xUMLongitud) { case "cm": medida.UMLongitud = UMLongitud.cm; break; case "km": medida.UMLongitud = UMLongitud.km; break; case "m": medida.UMLongitud = UMLongitud.m; break; case "mm": medida.UMLongitud = UMLongitud.mm; break; case "pulgadas": medida.UMLongitud = UMLongitud.pulgadas; break; } db.Medidas.Add(medida); //db.SaveChanges(); } break; case "CatalogoPieza": var catalogo = db.Catalogos.Where(a => a.CatalogoID == id).Select(a => new { a.CatalogoID, a.Nombre}).FirstOrDefault(); if (catalogo != null) { CatalogoPieza catPieza = new CatalogoPieza() { PiezaID = pieza.PiezaID, CatalogoID = catalogo.CatalogoID, Status = true }; db.CatalogoPiezas.Add(catPieza); //db.SaveChanges(); } break; case "ExposicionPieza": var exposicion = db.Exposiciones.Where(a => a.ExposicionID == id).Select(a => new {a.ExposicionID, a.Nombre }).FirstOrDefault(); if (exposicion != null) { ExposicionPieza expoPieza = new ExposicionPieza() { PiezaID = pieza.PiezaID, ExposicionID = exposicion.ExposicionID, Status = true }; db.ExposicionPiezas.Add(expoPieza); //db.SaveChanges(); } break; case "MatriculaPieza": var matricula = db.Matriculas.Where(a => a.MatriculaID == id).Select(a => new { a.MatriculaID, a.Descripcion}).FirstOrDefault(); if (matricula != null) { MatriculaPieza matPieza = new MatriculaPieza() { PiezaID = pieza.PiezaID, MatriculaID = matricula.MatriculaID, Status = true }; db.MatriculaPiezas.Add(matPieza); //db.SaveChanges(); } break; case "TecnicaMarcoPieza": var tenicaMarco = db.TecnicaMarcos.Where(a => a.TecnicaMarcoID == id).Select(a => new { a.TecnicaMarcoID, a.Descripcion}).FirstOrDefault(); if (tenicaMarco != null) { TecnicaMarcoPieza tecMarcoPieza = new TecnicaMarcoPieza() { PiezaID = pieza.PiezaID, TecnicaMarcoID = tenicaMarco.TecnicaMarcoID, Status = true }; db.TecnicaMarcoPiezas.Add(tecMarcoPieza); //db.SaveChanges(); } break; } } } db.AtributoPiezas.Add(atributoPieza); } db.SaveChanges(); //redireccionar si se tiene el permiso para ver ficha completa if (User.IsInRole("ObraFichComplet")) { return RedirectToAction("Detalles", "Obra", new { id = obra.ObraID }); } else { AlertaSuccess(string.Format("Se registro la obra: {0}, pero no tiene los permisos para visualizarla.", obra.Clave),true); return RedirectToAction("Registro", "Obra"); } }
//IMPORTAR PIEZA - MATRICULA public ActionResult ImportarPieza_Matricula() { RecordFCSContext dbx = new RecordFCSContext(); ViewBag.NombreTabla = "PIEZA MATRICULA"; var tipoAtt_MatriculaID = dbx.TipoAtributos.Where(a => a.AntNombre == "Matricula_Clave").Select(a => a.TipoAtributoID).FirstOrDefault(); ViewBag.error = ""; try { // mandar mensaje de conexion ViewBag.mensaje = "Conexión establecida"; //definir el sql Int64 limite = 100000; Int64 total = 500; Int64 inicio = 0; //colocar el PIEZAID del cual comenzar se comienza desde actual+1 Int64 fin = inicio + total; var listaMatriculas = dbx.Matriculas.Select(a => new { a.MatriculaID, a.AntID }).ToList(); List<AnonimoPiezaTabla> listaAnt = new List<AnonimoPiezaTabla>(); con1.Open(); string campo0 = "id_pieza"; string campo1 = "Matricula_Clave"; string tabla = "m_pieza"; string textSql1 = string.Format("SELECT [{0}], [{1}] FROM [{2}]", campo0, campo1, tabla); SqlCommand sql1 = new SqlCommand(textSql1, con1); SqlDataReader leer1 = sql1.ExecuteReader(); while (leer1.Read()) { string id = leer1[campo0].ToString(); string clave = leer1[campo1].ToString(); listaAnt.Add(new AnonimoPiezaTabla() { id_pieza = id, Clave = clave }); } con1.Close(); while (fin <= limite) { //tener la lista de pieza var listPiezas = dbx.Piezas.Where(a => a.ObraID > inicio && a.ObraID <= fin).Select(a => new { a.ObraID, a.PiezaID, a.TipoPiezaID, a.Obra.AntID }).ToList(); foreach (var pieza in listPiezas) { //registrar una Pieza Autor var anonimaPiezaTabla = listaAnt.Where(a => a.id_pieza == pieza.AntID).ToList(); if (anonimaPiezaTabla.Count > 0) { foreach (var apt in anonimaPiezaTabla) { //buscar al Autor var matricula = listaMatriculas.FirstOrDefault(a => a.AntID == apt.Clave); MatriculaPieza matPieza = new MatriculaPieza() { PiezaID = pieza.PiezaID, MatriculaID = matricula.MatriculaID, Status = true }; dbx.MatriculaPiezas.Add(matPieza); } } } dbx.SaveChanges(); dbx.Dispose(); dbx = new RecordFCSContext(); dbx.Configuration.AutoDetectChangesEnabled = false; inicio = fin; fin = fin + total; } } catch (Exception) { throw; } return PartialView("_ImportarPieza_Descriptivo"); }
public ActionResult Crear([Bind(Include = "PiezaID,ObraID,TipoPiezaID,Status")] Pieza pieza, string Folio) { Obra obra = db.Obras.Find(pieza.ObraID); TipoPieza tipoPieza = db.TipoPiezas.Find(pieza.TipoPiezaID); pieza.FechaRegistro = DateTime.Now; pieza.UbicacionID = obra.UbicacionID; if (obra.Status == Status.Activo) pieza.Status = true; else pieza.Status = false; //lista de atributos var listaAtributos = db.Atributos.Where(a => a.TipoPiezaID == pieza.TipoPiezaID).ToList(); // filtrar los atributos que son solo de la PIEZA foreach (var item in listaAtributos) { string campo = "req_list_" + item.TipoAtributoID; Int64 id = Convert.ToInt64(Request.Form[campo]); switch (item.TipoAtributo.DatoCS) { case "UbicacionID": var ubicacion = db.Ubicaciones.Find(id); if (ubicacion != null) { pieza.UbicacionID = id; } break; } } //validar la clave al final var clave = ""; var listaClaves = db.Piezas.Where(p => (p.ObraID == pieza.ObraID && p.TipoPiezaID == pieza.TipoPiezaID)).ToList(); ////GENERAR EN AUTOMATICO LA CLAVE if (listaClaves.Count == 0) clave = obra.Clave + "-" + tipoPieza.Clave; else { var listaC = new List<Int32>(); foreach (var item in listaClaves) { char x = Convert.ToChar(tipoPieza.Clave); char s = '-'; clave = item.Clave.Split(s).Last(); clave = clave.Split(x).Last(); if (clave != "") listaC.Add(Convert.ToInt32(clave)); } if (listaC.Count == 0) clave = obra.Clave + "-" + tipoPieza.Clave + "2"; else { listaC.Sort(); var mayor = listaC.LastOrDefault(); mayor = mayor + 1; clave = obra.Clave + "-" + tipoPieza.Clave + mayor; } } pieza.Clave = clave; db.Piezas.Add(pieza); db.SaveChanges(); //llenar los atributoPieza y si son requeridos extraer el valor foreach (var item in listaAtributos) { var atributoPieza = new AtributoPieza() { PiezaID = pieza.PiezaID, AtributoID = item.AtributoID }; //si son NombreID == "Generico" guardar en AtributoPieza if (item.TipoAtributo.NombreID == "Generico") { //y si es Requerido extraer el valor del form if (item.Requerido) { //si es lista lo guarda en ValorListaID y si no en Valor if (item.TipoAtributo.EsLista) { string campo = "req_list_" + item.TipoAtributoID; Int64? id = Convert.ToInt64(Request.Form[campo]); var listaValor = db.ListaValores.Find(id); if (listaValor != null) { atributoPieza.ListaValorID = id; } } else { string campo = "req_" + item.TipoAtributoID; string valor = Request.Form[campo]; if (!String.IsNullOrEmpty(valor) || !String.IsNullOrWhiteSpace(valor)) { atributoPieza.Valor = valor; } } } } else if (item.TipoAtributo.DatoHTML == "Catalogo") { //Si no es generico pero si es DatoHTML = "Catalogo" // y si es Requerido entonces guardar el valor en la TABLAPieza if (item.Requerido) { string campo = "req_list_" + item.TipoAtributoID; int? id = Convert.ToInt32(Request.Form[campo]); switch (item.TipoAtributo.DatoCS) { case "TecnicaPieza": var tecnica = db.Tecnicas.Find(id); if (tecnica != null) { TecnicaPieza tecPieza = new TecnicaPieza() { PiezaID = pieza.PiezaID, TecnicaID = tecnica.TecnicaID, Status = true }; db.TecnicaPiezas.Add(tecPieza); db.SaveChanges(); } break; case "AutorPieza": var autor = db.Autores.Find(id); if (autor != null) { AutorPieza autorPieza = new AutorPieza() { PiezaID = pieza.PiezaID, AutorID = autor.AutorID, Status = true }; db.AutorPiezas.Add(autorPieza); db.SaveChanges(); } break; case "ImagenPieza": //PEndiente por implementar HttpPostedFileBase FileImagen = Request.Files["FileName"]; var extension = Path.GetExtension(FileImagen.FileName); var imagenPieza = new ImagenPieza() { PiezaID = pieza.PiezaID, Status = true, Orden = 1, Titulo = Request.Form["imagen_" + "Titulo"], Descripcion = Request.Form["imagen_" + "Descripcion"], }; imagenPieza.ImgNombre = Guid.NewGuid().ToString() + extension; var rutaOriginal = Server.MapPath("~" + imagenPieza.Ruta); var rutaThumbnail = Server.MapPath("~" + imagenPieza.RutaThumb); FileImagen.SaveAs(rutaOriginal); //GUARDAR THUMBNAIL var thumb = new Thumbnail() { OrigenSrc = rutaOriginal, DestinoSrc = rutaThumbnail, LimiteAnchoAlto = 300 }; thumb.GuardarThumbnail(); //guardar en db db.ImagenPiezas.Add(imagenPieza); db.SaveChanges(); break; case "Medida": //Pendiente por implementar var tipoMedida = db.TipoMedidas.Find(id); if (tipoMedida != null) { Medida medida = new Medida() { PiezaID = pieza.PiezaID, TipoMedidaID = tipoMedida.TipoMedidaID, Status = true }; var xlargo = Request.Form["med_" + "Largo"].ToString(); var xancho = Request.Form["med_" + "Ancho"].ToString(); var xprofundidad = Request.Form["med_" + "Profundidad"].ToString(); var xdiametro = Request.Form["med_" + "Diametro"].ToString(); var xdiametro2 = Request.Form["med_" + "Diametro2"].ToString(); var xUMLongitud = Request.Form["med_" + "UMLongitud"].ToString(); if (xlargo != "0" && xlargo != "") medida.Largo = Convert.ToDouble(xlargo); if (xancho != "0" && xancho != "") medida.Ancho = Convert.ToDouble(xancho); if (xprofundidad != "0" && xprofundidad != "") medida.Profundidad = Convert.ToDouble(xprofundidad); if (xdiametro != "0" && xdiametro != "") medida.Diametro = Convert.ToDouble(xdiametro); if (xdiametro2 != "0" && xdiametro2 != "") medida.Diametro2 = Convert.ToDouble(xdiametro2); switch (xUMLongitud) { case "cm": medida.UMLongitud = UMLongitud.cm; break; case "km": medida.UMLongitud = UMLongitud.km; break; case "m": medida.UMLongitud = UMLongitud.m; break; case "mm": medida.UMLongitud = UMLongitud.mm; break; case "pulgadas": medida.UMLongitud = UMLongitud.pulgadas; break; } db.Medidas.Add(medida); db.SaveChanges(); } break; case "CatalogoPieza": var catalogo = db.Catalogos.Find(id); if (catalogo != null) { CatalogoPieza catPieza = new CatalogoPieza() { PiezaID = pieza.PiezaID, CatalogoID = catalogo.CatalogoID, Status = true }; db.CatalogoPiezas.Add(catPieza); db.SaveChanges(); } break; case "ExposicionPieza": var exposicion = db.Exposiciones.Find(id); if (exposicion != null) { ExposicionPieza expoPieza = new ExposicionPieza() { PiezaID = pieza.PiezaID, ExposicionID = exposicion.ExposicionID, Status = true }; db.ExposicionPiezas.Add(expoPieza); db.SaveChanges(); } break; case "MatriculaPieza": var matricula = db.Matriculas.Find(id); if (matricula != null) { MatriculaPieza matPieza = new MatriculaPieza() { PiezaID = pieza.PiezaID, MatriculaID = matricula.MatriculaID, Status = true }; db.MatriculaPiezas.Add(matPieza); db.SaveChanges(); } break; case "TecnicaMarcoPieza": var tenicaMarco = db.TecnicaMarcos.Find(id); if (tenicaMarco != null) { TecnicaMarcoPieza tecMarcoPieza = new TecnicaMarcoPieza() { PiezaID = pieza.PiezaID, TecnicaMarcoID = tenicaMarco.TecnicaMarcoID, Status = true }; db.TecnicaMarcoPiezas.Add(tecMarcoPieza); db.SaveChanges(); } break; } } } db.AtributoPiezas.Add(atributoPieza); db.SaveChanges(); } return RedirectToAction("Detalles", "Obra", new { id = obra.ObraID }); }