public GraficoBE FiltrarGraficoN1(string sql, OracleConnection db) { GraficoBE item = new GraficoBE(); try { string sp = $"{Package.Filtro}USP_SEL_FILTRAR_GRAFICON1"; OracleDynamicParameters p = new OracleDynamicParameters(); p.Add("PI_SQL", sql); p.Add("PO_REFCURSOR", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output); item.LISTA_GRAFICON1 = db.Query <GraficoN1BE>(sp, p, commandType: CommandType.StoredProcedure).ToList(); } catch (Exception ex) { Log.Error(ex); } return(item); }
public BusquedaBE FiltrarInformacion(BusquedaBE obj) { BusquedaBE entidad = new BusquedaBE(); List <string> lstCadena = new List <string>(); List <string> lstAnio = new List <string>(); string aniosFiltrar = ""; try { cn.Open(); //foreach (PalabraClaveBE pc in obj.LISTA_PALABRAS) // lstCadena.Add($" LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pc.PALABRA}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' "); //palabrasFiltrar = string.Join("OR", lstCadena); foreach (AnioBE a in obj.LISTA_ANIOS) { lstAnio.Add($" '{a.ANIO}' "); } aniosFiltrar = string.Join(",", lstAnio); //entidad = BusquedaDA.FiltrarInformacion(palabrasFiltrar, aniosFiltrar, cn); List <GraficoBE> lstGrafico = new List <GraficoBE>(); List <string> lstPalabraOmitidas = new List <string>(); foreach (PalabraClaveBE pc in obj.LISTA_PALABRAS) { string sql = ""; if (lstPalabraOmitidas.Count == 0) { sql = $"SELECT '{pc.PALABRA}' HALLAZGO, OBJETOCONTRACTUAL TIPO_REQUERIMIENTO, COUNT(*) CANTIDAD, ANIO FROM T_GENM_MIGI "; sql += $" WHERE LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pc.PALABRA}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' AND ANIO IN ({aniosFiltrar}) AND (OBJETOCONTRACTUAL LIKE '%SERVICIOS%' OR OBJETOCONTRACTUAL LIKE '%BIENES%') GROUP BY ANIO, OBJETOCONTRACTUAL"; lstPalabraOmitidas.Add(pc.PALABRA); } else { string po = ""; foreach (string p in lstPalabraOmitidas) { po += $" AND LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) NOT LIKE '%' || LOWER(TRANSLATE('{p}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' "; } sql = $"SELECT '{pc.PALABRA}' HALLAZGO, OBJETOCONTRACTUAL TIPO_REQUERIMIENTO, COUNT(*) CANTIDAD, ANIO FROM T_GENM_MIGI "; sql += $" WHERE LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pc.PALABRA}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' AND ANIO IN ({aniosFiltrar}) {po} AND (OBJETOCONTRACTUAL LIKE '%SERVICIOS%' OR OBJETOCONTRACTUAL LIKE '%BIENES%') GROUP BY ANIO, OBJETOCONTRACTUAL"; lstPalabraOmitidas.Add(pc.PALABRA); } lstGrafico.Add(BusquedaDA.FiltrarGraficoN1(sql, cn)); } entidad.LISTA_GRAFICO = lstGrafico; //List<PalabraBusquedaBE> lstPalabraBusqueda = new List<PalabraBusquedaBE>(); //lstPalabraBusqueda.Add(new PalabraBusquedaBE { ID_PALABRA_BUSQUEDA = 1, PALABRA_BUSQUEDA = "ADQUISICION DE" }); List <GraficoBE> lstGeneralGraficoN3 = new List <GraficoBE>(); List <string> lstPalabraBusquedaOmit = new List <string>(); if (obj.LISTA_PALABRAS_CANTIDAD != null) { foreach (PalabraClaveCantidadBE pb in obj.LISTA_PALABRAS_CANTIDAD) { List <string> lstPalabraOmit = new List <string>(); foreach (PalabraClaveBE pc in obj.LISTA_PALABRAS) { GraficoBE ggf = new GraficoBE(); List <GraficoN3BE> lstGraficoN3 = new List <GraficoN3BE>(); foreach (AnioBE a in obj.LISTA_ANIOS) { GraficoN3BE gfn3 = new GraficoN3BE() { HALLAZGO = pc.PALABRA, ANIO = a.ANIO, CANTIDAD = 0 }; string sql = ""; if (lstPalabraBusquedaOmit.Count == 0) { if (lstPalabraOmit.Count == 0) { sql = $"SELECT '{pc.PALABRA}' HALLAZGO, OBJETOCONTRACTUAL, ANIO, DESCRIPCION_ORDEN FROM T_GENM_MIGI "; sql += $" WHERE LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pc.PALABRA}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' AND ANIO IN ({a.ANIO}) AND (OBJETOCONTRACTUAL LIKE '%SERVICIOS%' OR OBJETOCONTRACTUAL LIKE '%BIENES%') "; sql += $" AND LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pb.PALABRA_CANTIDAD}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' "; //lstPalabraOmit.Add(pc.PALABRA); } else { string po = ""; foreach (string p in lstPalabraOmit) { po += $" AND LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) NOT LIKE '%' || LOWER(TRANSLATE('{p}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' "; } sql = $"SELECT '{pc.PALABRA}' HALLAZGO, OBJETOCONTRACTUAL, ANIO, DESCRIPCION_ORDEN FROM T_GENM_MIGI "; sql += $" WHERE DESCRIPCION_ORDEN LIKE '%{pc.PALABRA}%' AND ANIO IN ({a.ANIO}) {po} AND (OBJETOCONTRACTUAL LIKE '%SERVICIOS%' OR OBJETOCONTRACTUAL LIKE '%BIENES%') "; sql += $" AND LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pb.PALABRA_CANTIDAD}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' "; //lstPalabraOmit.Add(pc.PALABRA); } } else { string po_b = ""; foreach (string p in lstPalabraBusquedaOmit) { po_b += $" AND LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) NOT LIKE '%' || LOWER(TRANSLATE('{p}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' "; } if (lstPalabraOmit.Count == 0) { sql = $"SELECT '{pc.PALABRA}' HALLAZGO, OBJETOCONTRACTUAL, ANIO, DESCRIPCION_ORDEN FROM T_GENM_MIGI "; sql += $" WHERE LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pc.PALABRA}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' AND ANIO IN ({a.ANIO}) AND (OBJETOCONTRACTUAL LIKE '%SERVICIOS%' OR OBJETOCONTRACTUAL LIKE '%BIENES%') "; sql += $" AND LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pb.PALABRA_CANTIDAD}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' {po_b} "; //lstPalabraOmit.Add(pc.PALABRA); } else { string po = ""; foreach (string p in lstPalabraOmit) { po += $" AND LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) NOT LIKE '%' || LOWER(TRANSLATE('{p}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' "; } sql = $"SELECT '{pc.PALABRA}' HALLAZGO, OBJETOCONTRACTUAL, ANIO, DESCRIPCION_ORDEN FROM T_GENM_MIGI "; sql += $" WHERE DESCRIPCION_ORDEN LIKE '%{pc.PALABRA}%' AND ANIO IN ({a.ANIO}) {po} AND (OBJETOCONTRACTUAL LIKE '%SERVICIOS%' OR OBJETOCONTRACTUAL LIKE '%BIENES%') "; sql += $" AND LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pb.PALABRA_CANTIDAD}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' {po_b} "; //lstPalabraOmit.Add(pc.PALABRA); } } List <OrdenCompraBE> lstOC = BusquedaDA.FiltrarPalabraBusqueda(sql, cn); foreach (OrdenCompraBE palabraB in lstOC) { string palabraBusqueda = quitarAcentos(pb.PALABRA_CANTIDAD.ToLower()); string palabraEvaluar = quitarAcentos(palabraB.DESCRIPCION_ORDEN.ToLower()); int lastIndex = palabraEvaluar.IndexOf(palabraBusqueda); if (lastIndex > -1) { lastIndex += palabraBusqueda.Length - 1; int tamanio = palabraEvaluar.Length; if (tamanio > lastIndex + 1) //se suma 1 porque lastIndex es un indice que empiza en 0 { string seccionrestante = palabraEvaluar.Substring(lastIndex + 2); //Se suma 2 corra una letra mas y para que salte el espacio if (seccionrestante.Length > 2) { int cantidad = 0; string[] result = seccionrestante.Split(' '); if (result.Length > 0) { int n; bool v = Int32.TryParse(result[0], out n); if (v) { gfn3.CANTIDAD += Convert.ToInt32(result[0]); } else if (ValidarNumeroParent(result[0], out cantidad)) { gfn3.CANTIDAD += cantidad; } else { int numero = 0; int num_millones = 0; foreach (string item in result) { int num = Conversion.LetrasANumero(quitarAcentos(item.Trim().ToLower()).ToUpper()); if (num == 0) { break; } else if (num == -1) { numero += 0; } else if (num > 0) { if (num == 1000000) { num_millones = numero == 0 ? num : numero * num; numero = 0; } else if (num == 1000) { numero = numero == 0 ? num : numero * num; } else { numero += num; } } } numero += num_millones; gfn3.CANTIDAD += numero; } } } } } } lstGraficoN3.Add(gfn3); } ggf.LISTA_GRAFICON3 = lstGraficoN3; lstGeneralGraficoN3.Add(ggf); lstPalabraOmit.Add(pc.PALABRA); } lstPalabraBusquedaOmit.Add(pb.PALABRA_CANTIDAD); } } entidad.LISTA_GRAFICON3 = lstGeneralGraficoN3; } finally { if (cn.State == ConnectionState.Open) { cn.Close(); } } return(entidad); }