public ActionResult Crear() { var tipoAtributo = new TipoAtributo() { DatoCS = "string", DatoHTML = "text", NombreID = "Generico", BuscadorOrden = 100, Status = true, EsLista = false, Buscador = false }; return PartialView("_Crear", tipoAtributo); }
//IMPORTAR PIEZA DESCRIPTIVO ALTERNATIVO public ActionResult ImportarPieza_Descriptivo_alternativo() { var tipoAtt_Autor = db.TipoAtributos.Where(a => a.AntNombre == "Autor_Clave").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); var tipoAttGen_titulo = db.TipoAtributos.Where(a => a.AntNombre == "titulo").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); var tipoAttGen_EscArt = db.TipoAtributos.Where(a => a.AntNombre == "EscArtistica_Clave").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); var tipoAttGen_FormAdq = db.TipoAtributos.Where(a => a.AntNombre == "FormaAdquisicion_Clave").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); var tipoAttGen_ProcedenList = db.TipoAtributos.Where(a => a.AntNombre == "Procedencia_Clave").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); var tipoAttGen_FiliEst = db.TipoAtributos.Where(a => a.AntNombre == "FiliacionEstilistica_Clave").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); var tipoAttGen_CasaComer = db.TipoAtributos.Where(a => a.AntNombre == "CasaComercial_Clave").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); var tipoAttGen_EdoConserv = db.TipoAtributos.Where(a => a.AntNombre == "EdoConservacion_Clave").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); var tipoAttGen_descripcion = db.TipoAtributos.Where(a => a.AntNombre == "descripcion").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); var tipoAttGen_otros_mat = db.TipoAtributos.Where(a => a.AntNombre == "otros_materiales").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); var tipoAttGen_catalogo = db.TipoAtributos.Where(a => a.AntNombre == "catalogo").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); var tipoAttGen_num_cat = db.TipoAtributos.Where(a => a.AntNombre == "numero_catalogo").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); var tipoAttGen_num_reg = db.TipoAtributos.Where(a => a.AntNombre == "numero_registro").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); var tipoAttGen_titu_ori = db.TipoAtributos.Where(a => a.AntNombre == "titulo_ori").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); var tipoAttGen_Proceden = db.TipoAtributos.Where(a => a.AntNombre == "Procedencia").AsEnumerable().Select(a => new { a.TipoAtributoID, a.AntNombre, a.EsLista }).FirstOrDefault(); List<string> camposLista = new List<string>() { "Autor_Clave", "titulo", "EscArtistica_Clave", "FormaAdquisicion_Clave", "Procedencia_Clave", "FiliacionEstilistica_Clave", "CasaComercial_Clave", "EdoConservacion_Clave", "descripcion", "otros_materiales", "catalogo", "numero_catalogo", "numero_registro", "titulo_ori", "Procedencia" }; ViewBag.NombreTabla = "CATALOGO DE OBRAS - PIEZA DESCRIPTIVO ALTERNATIVO"; ViewBag.error = ""; try { // mandar mensaje de conexion ViewBag.mensaje = "Conexión establecida"; //definir el sql Int64 actual = 2528; //colocar el OBRAID Int64 limite = 70000; while (actual <= limite) { //todo sera sobre la obra y pieza default var obra = db.Obras.Find(actual); if (obra != null) { var piezaMaestra = obra.Piezas.FirstOrDefault(); if (piezaMaestra != null) { string AnteriorID = obra.AntID; con1.Open(); string textSql1 = string.Format("SELECT TOP 1 * FROM [m_pieza_descriptivo] WHERE [id_pieza] = {0}", AnteriorID); SqlCommand sql1 = new SqlCommand(textSql1, con1); SqlDataReader leer1 = sql1.ExecuteReader(); if (leer1.FieldCount > 0) { leer1.Read(); foreach (var campoText in camposLista) { TipoAtributo tipoAtributo = null; switch (campoText) { case "Autor_Clave": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAtt_Autor.TipoAtributoID, EsLista = tipoAtt_Autor.EsLista, AntNombre = tipoAtt_Autor.AntNombre }; break; case "titulo": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAttGen_titulo.TipoAtributoID, EsLista = tipoAttGen_titulo.EsLista, AntNombre = tipoAttGen_titulo.AntNombre }; break; case "EscArtistica_Clave": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAttGen_EscArt.TipoAtributoID, EsLista = tipoAttGen_EscArt.EsLista, AntNombre = tipoAttGen_EscArt.AntNombre }; break; case "FormaAdquisicion_Clave": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAttGen_FormAdq.TipoAtributoID, EsLista = tipoAttGen_FormAdq.EsLista, AntNombre = tipoAttGen_FormAdq.AntNombre }; break; case "Procedencia_Clave": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAttGen_ProcedenList.TipoAtributoID, EsLista = tipoAttGen_ProcedenList.EsLista, AntNombre = tipoAttGen_ProcedenList.AntNombre }; break; case "FiliacionEstilistica_Clave": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAttGen_FiliEst.TipoAtributoID, EsLista = tipoAttGen_FiliEst.EsLista, AntNombre = tipoAttGen_FiliEst.AntNombre }; break; case "CasaComercial_Clave": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAttGen_CasaComer.TipoAtributoID, EsLista = tipoAttGen_CasaComer.EsLista, AntNombre = tipoAttGen_CasaComer.AntNombre }; break; case "EdoConservacion_Clave": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAttGen_EdoConserv.TipoAtributoID, EsLista = tipoAttGen_EdoConserv.EsLista, AntNombre = tipoAttGen_EdoConserv.AntNombre }; break; case "descripcion": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAttGen_descripcion.TipoAtributoID, EsLista = tipoAttGen_descripcion.EsLista, AntNombre = tipoAttGen_descripcion.AntNombre }; break; case "otros_materiales": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAttGen_otros_mat.TipoAtributoID, EsLista = tipoAttGen_otros_mat.EsLista, AntNombre = tipoAttGen_otros_mat.AntNombre }; break; case "catalogo": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAttGen_catalogo.TipoAtributoID, EsLista = tipoAttGen_catalogo.EsLista, AntNombre = tipoAttGen_catalogo.AntNombre }; break; case "numero_catalogo": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAttGen_num_cat.TipoAtributoID, EsLista = tipoAttGen_num_cat.EsLista, AntNombre = tipoAttGen_num_cat.AntNombre }; break; case "numero_registro": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAttGen_num_reg.TipoAtributoID, EsLista = tipoAttGen_num_reg.EsLista, AntNombre = tipoAttGen_num_reg.AntNombre }; break; case "titulo_ori": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAttGen_titu_ori.TipoAtributoID, EsLista = tipoAttGen_titu_ori.EsLista, AntNombre = tipoAttGen_titu_ori.AntNombre }; break; case "Procedencia": tipoAtributo = new TipoAtributo() { TipoAtributoID = tipoAttGen_Proceden.TipoAtributoID, EsLista = tipoAttGen_Proceden.EsLista, AntNombre = tipoAttGen_Proceden.AntNombre }; break; default: ViewBag.mensajeError = "No existe la Obra"; break; }; if (tipoAtributo != null) { //Extraer el valor del query leer1 string valorCampoExtra = leer1[campoText].ToString(); //validar el valor del campo bool todoOK = true; if (tipoAtributo.EsLista) { if (valorCampoExtra == "0") todoOK = false; } else { if (valorCampoExtra == "0" || valorCampoExtra == "" || valorCampoExtra == " " || valorCampoExtra == "-" || valorCampoExtra == " -" || valorCampoExtra == "." || valorCampoExtra == " ." || valorCampoExtra == "Pendiente por definir") todoOK = false; }; if (todoOK) { //Buscar que el ATRIBUTO Exista en TipoPieza con TipoPieza y TipoAtributo Int64 atributoID = db.Atributos.Where(a => a.TipoAtributoID == tipoAtributo.TipoAtributoID && a.TipoPiezaID == piezaMaestra.TipoPiezaID).Select(a => a.AtributoID).FirstOrDefault(); if (atributoID == 0) { //si ATRIBUTO no existe entonces crearlo, primero crear //en TIPOOBRA el TipoAtributo //TIPOPIEZA * ATRIBUTOS Atributo atributo = new Atributo() { TipoPiezaID = piezaMaestra.TipoPiezaID, TipoAtributoID = tipoAtributo.TipoAtributoID, NombreAlterno = null, Orden = 98, Status = true, Requerido = false, EnFichaBasica = false }; db.Atributos.Add(atributo); db.SaveChanges(); atributoID = atributo.AtributoID; }//fin creacion de atributo null //comenzar creacion del AtributoPieza con el valor extraido y validado //se podria generar la validacion de si ya existe, actualizarlo bool crear = false; AtributoPieza attPieza = db.AtributoPiezas.Find(piezaMaestra.PiezaID, atributoID); if (attPieza == null) { //crear el AtributoPieza crear = true; attPieza = new AtributoPieza() { PiezaID = piezaMaestra.PiezaID, AtributoID = atributoID, }; } if (campoText == "Autor_Clave") { //generar codigo para el registro de AutorPieza //verificar si ya existe y si no actualizarlo //buscar el autor Int64 AutorID = db.Autores.Where(a => a.AntID == valorCampoExtra).Select(a => a.AutorID).FirstOrDefault(); if (crear) { AutorPieza autorPieza = new AutorPieza() { PiezaID = piezaMaestra.PiezaID, AutorID = AutorID, Status = true }; db.AutorPiezas.Add(autorPieza); } } else { if (tipoAtributo.EsLista) { //buscar el valor en ListaValor en el tipo de Atributo Int64 listaValorID = db.ListaValores.Where(a => a.AntID == valorCampoExtra && a.TipoAtributoID == tipoAtributo.TipoAtributoID).Select(a => a.ListaValorID).FirstOrDefault(); if (listaValorID != 0) attPieza.ListaValorID = listaValorID; } else { attPieza.Valor = valorCampoExtra; } if (crear) db.AtributoPiezas.Add(attPieza); else db.Entry(attPieza).State = EntityState.Modified; } }//fin del todo ok }//fin del tipoAtributo null else { ViewBag.mensajeError = "No existe id_pieza en la consulta"; } }//fin del foreach de listaCampos db.SaveChanges(); }//fin foreach camposLista } else { ViewBag.mensajeError = "No existe la Pieza"; } } else { ViewBag.mensajeError = "No existe la Obra"; } actual++; con1.Close(); }//fin while } catch (Exception) { ViewBag.error = "error"; ViewBag.mensaje = "Conexión fallida"; } return PartialView("_ImportarPieza_Descriptivo"); }
//IMPORTAR PIEZA DESCRIPTIVO public ActionResult ImportarPieza_Descriptivo() { /* * * AutorPieza Autor_Clave * generico titulo * generico_L EscArtistica_Clave * generico_L FormaAdquisicion_Clave * generico_L Procedencia_Clave * generico_L FiliacionEstilistica_Clave * generico_L CasaComercial_Clave * generico_L EdoConservacion_Clave * generico descripcion * generico grafica * generico otros_materiales * generico catalogo * generico numero_catalogo * generico palabra_clave * generico palabra_clave * generico numero_registro * generico titulo_ori * generico Procedencia * * * * * * ------------ IMPLEMENTAR INDEPENDIENTES -------------- * * ???????? cve_marco * * ImagenPieza m_pieza_foto * * ColeccionGibranPieza ClassColeccion_Clave * TecnicaMarco MTecnicaMarco_Clave * Médidas m_pieza_dimensiones * * * CatalogoPieza m_cats * ExposicionPieza m_guion_det * TecnicaPieza MatriculaTecnica_Clave * MatriculaPieza Matricula_Clave */ // Inicia el contador: Stopwatch tiempo = Stopwatch.StartNew(); var tAtt_Autor = db.TipoAtributos.SingleOrDefault(a => a.AntNombre == "Autor_Clave").TipoAtributoID; //TipoAtributo tAtt_Autor = db.TipoAtributos.SingleOrDefault(a => a.AntNombre == "Autor_Clave"); //TipoAtributo tAtt_Catalogo = db.TipoAtributos.Single(a => a.AntNombre == "Autor_Clave"); //TipoAtributo tAtt_Exposicion = db.TipoAtributos.Single(a => a.AntNombre == "Autor_Clave"); //TipoAtributo tAtt_Tecnica = db.TipoAtributos.Single(a => a.AntNombre == "Autor_Clave"); //TipoAtributo tAtt_Matricula = db.TipoAtributos.Single(a => a.AntNombre == "Autor_Clave"); // ViewBag.NombreTabla = "CATALOGO DE OBRAS - REGISTRO BASICO"; ViewBag.error = ""; try { // mandar mensaje de conexcion ViewBag.mensaje = "Conexión establecida"; //definir el sql var total = 500; var inicio = 2520; //colocar AntID no el ObraID var fin = inicio + total; var limite = 103475; while (fin <= limite) { con1.Open(); string textSql = string.Format("SELECT * FROM [m_pieza_descriptivo] WHERE [id_pieza] > {0} AND [id_pieza] <= {1}", inicio, fin); SqlCommand sql = new SqlCommand(textSql, con1); SqlDataReader leer = sql.ExecuteReader(); while (leer.Read()) { //Buscar que la Obra Exista string idPiezaText = leer["id_pieza"].ToString(); Obra obra = null; var xObra = db.Obras.Where(a => a.AntID == idPiezaText).Select(a => new { a.ObraID, a.AntID, a.Clave }); if (xObra.Count() > 0) { obra = new Obra() { ObraID = xObra.FirstOrDefault().ObraID, AntID = xObra.FirstOrDefault().AntID, Clave = xObra.FirstOrDefault().Clave }; } if (obra != null) { //traer la PiezaMaestra string claveText = obra.Clave + "-A"; Pieza piezaMaestra = null; var xPiezaMaestra = db.Piezas.Where(a => a.Clave == claveText && a.ObraID == obra.ObraID).Select(a => new { a.ObraID, a.PiezaID, a.Clave, a.TipoPiezaID }); if (xPiezaMaestra.Count() > 0) { piezaMaestra = new Pieza() { ObraID = xPiezaMaestra.FirstOrDefault().ObraID, PiezaID = xPiezaMaestra.FirstOrDefault().PiezaID, TipoPiezaID = xPiezaMaestra.FirstOrDefault().TipoPiezaID, Clave = xPiezaMaestra.FirstOrDefault().Clave }; } if (piezaMaestra != null) { // AUTOR_PIEZA ------------------------------------------------------------------------------------------------ // Autor_Clave ------------------------------------------------------------------------------------------------ string autorIDText = leer["Autor_Clave"].ToString(); Autor autor = null; var xAutor = db.Autores.Where(a => a.AntID == autorIDText).Select(a => new { a.AutorID }); if (xAutor.Count() > 0) { autor = new Autor() { AutorID = xAutor.FirstOrDefault().AutorID }; } //si autor == null o "0" no hacer nada if (autor != null) { //Buscar que exista Atributo con TipoPieza y TipoAtributo Atributo att = null; var xAtt = db.Atributos.Where(a => a.TipoAtributoID == tAtt_Autor && a.TipoPiezaID == piezaMaestra.TipoPiezaID).Select(a => new { a.AtributoID }); if (xAtt.Count() > 0) { att = new Atributo() { AtributoID = xAtt.FirstOrDefault().AtributoID }; } else { //no existe entonces crearlo att.TipoPiezaID = piezaMaestra.TipoPiezaID; att.TipoAtributoID = tAtt_Autor; att.NombreAlterno = null; att.Orden = 100; att.Status = true; att.Requerido = true; att.EnFichaBasica = true; db.Atributos.Add(att); db.SaveChanges(); } //comenzar creacion del AtributoPieza con valores null AtributoPieza attPiezaGenAutor = new AtributoPieza() { PiezaID = piezaMaestra.PiezaID, AtributoID = att.AtributoID, }; db.AtributoPiezas.Add(attPiezaGenAutor); AutorPieza autorPieza = new AutorPieza() { PiezaID = piezaMaestra.PiezaID, AutorID = autor.AutorID, Status = true }; db.AutorPiezas.Add(autorPieza); } // GENERICOS -------------------------------------------------------------------------------------------------- List<string> campos = new List<string>() { "titulo", "EscArtistica_Clave", "FormaAdquisicion_Clave", "Procedencia_Clave", "FiliacionEstilistica_Clave", "CasaComercial_Clave", "EdoConservacion_Clave", "descripcion", "otros_materiales", "catalogo", "numero_catalogo", "numero_registro", "titulo_ori", "Procedencia" }; foreach (var campoAnt in campos) { //buscar el tipo de atributo TipoAtributo tipoAttGen = null; var xTipoAttGen = db.TipoAtributos.Where(a => a.AntNombre == campoAnt).Select(a => new { a.EsLista, a.TipoAtributoID }); if (xTipoAttGen.Count() > 0) { tipoAttGen = new TipoAtributo() { EsLista = xTipoAttGen.FirstOrDefault().EsLista, TipoAtributoID = xTipoAttGen.FirstOrDefault().TipoAtributoID }; } if (tipoAttGen != null) { //Extraer el valor a buscar o guardar de la base vieja string valorCampo = leer[campoAnt].ToString(); //Validar el valor del campo bool todoOk = true; if (tipoAttGen.EsLista) { if (valorCampo == "0") { todoOk = false; } } else { if (valorCampo == "0" || valorCampo == "" || valorCampo == " " || valorCampo == "-" || valorCampo == " -" || valorCampo == "Pendiente por definir") { todoOk = false; } } //paso la validacion if (todoOk) { //Buscar que el Atributo Exista con TipoPieza y TipoAtributo Atributo attGen = null; var xAttGen = db.Atributos.Where(a => a.TipoAtributoID == tipoAttGen.TipoAtributoID && a.TipoPiezaID == piezaMaestra.TipoPiezaID).Select(a => new { a.AtributoID }); if (xAttGen.Count() > 0) { attGen = new Atributo() { AtributoID = xAttGen.FirstOrDefault().AtributoID }; } else { //si no existe entonces crearlo attGen = new Atributo() { TipoPiezaID = piezaMaestra.TipoPiezaID, TipoAtributoID = tipoAttGen.TipoAtributoID, Orden = 100, Status = true, Requerido = false, EnFichaBasica = false }; db.Atributos.Add(attGen); db.SaveChanges(); } //comenzar creacion del AtributoPieza con el valor extraido y validado AtributoPieza attPiezaGen = new AtributoPieza() { PiezaID = piezaMaestra.PiezaID, AtributoID = attGen.AtributoID, }; if (tipoAttGen.EsLista) { //buscar el valor en ListaValor en el tipo de atributo ListaValor listaValorGen = null; var xListaValorGen = db.ListaValores.Where(a => a.AntID == valorCampo && a.TipoAtributoID == tipoAttGen.TipoAtributoID).Select(a => new { a.ListaValorID }); if (xListaValorGen.Count() > 0) { listaValorGen = new ListaValor() { ListaValorID = xListaValorGen.FirstOrDefault().ListaValorID }; } if (listaValorGen != null) { attPiezaGen.ListaValorID = listaValorGen.ListaValorID; db.AtributoPiezas.Add(attPiezaGen); db.SaveChanges(); } } else { attPiezaGen.Valor = valorCampo; db.AtributoPiezas.Add(attPiezaGen); db.SaveChanges(); } } } else { ViewBag.error = "error"; ViewBag.mensaje = "No existe la Tipo de Atributo, intenta resolver el problema antes de continuar"; } } // ------------------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------------------ db.SaveChanges(); } else { ViewBag.error = "error"; ViewBag.mensaje = "No existe la PiezaMaestra, intenta resolver el problema antes de continuar"; } } else { ViewBag.error = "error"; ViewBag.mensaje = "No existe la Obra, intenta resolver el problema antes de continuar"; } } inicio = fin; fin = fin + total; con1.Close(); } // Para el contador e imprime el resultado: ViewBag.TiempoTotal = tiempo.Elapsed.TotalSeconds.ToString(); var lista = db.Piezas.ToList(); ViewBag.TotalRegistros = lista.Count; return PartialView("_ImportarPieza_Descriptivo", lista); } catch (Exception) { ViewBag.error = "error"; ViewBag.mensaje = "Conexión fallida"; } ViewBag.TiempoTotal = tiempo.Elapsed.TotalSeconds.ToString(); return PartialView("_ImportarPieza_Descriptivo"); }