Exemplo n.º 1
0
        public JsonResult FiltrarInformacion(BusquedaBE obj)
        {
            Session["lista_palabras"]          = obj.LISTA_PALABRAS;
            Session["lista_palabras_cantidad"] = obj.LISTA_PALABRAS_CANTIDAD;
            Session["lista_anios"]             = obj.LISTA_ANIOS;
            Session["tipo_busqueda"]           = obj.ID_TIPO_BUSQUEDA;
            BusquedaBE lista      = obj.ID_TIPO_BUSQUEDA == 1 ? BusquedaLN.FiltrarInformacion(obj) : BusquedaLN.FiltrarInformacionM8U(obj);
            var        jsonResult = Json(lista, JsonRequestBehavior.AllowGet);

            jsonResult.MaxJsonLength = int.MaxValue;
            return(jsonResult);
        }
Exemplo n.º 2
0
        public BusquedaBE FiltrarInformacionM8U(BusquedaBE obj)
        {
            BusquedaBE    entidad   = new BusquedaBE();
            List <string> lstCadena = new List <string>();

            try
            {
                cn.Open();
                List <GraficoBE> lstGrafico         = new List <GraficoBE>();
                List <string>    lstPalabraOmitidas = new List <string>();
                foreach (PalabraClaveBE pc in obj.LISTA_PALABRAS)
                {
                    string sql = "";
                    List <GraficoM8UBE> lstGraficoN1M8U = new List <GraficoM8UBE>();
                    foreach (AnioBE a in obj.LISTA_ANIOS)
                    {
                        GraficoM8UBE ggf = new GraficoM8UBE();
                        if (lstPalabraOmitidas.Count == 0)
                        {
                            sql  = $"SELECT '{pc.PALABRA}' HALLAZGO, OBJETO_CONTRACTUAL TIPO_REQUERIMIENTO,  COUNT(*) CANTIDAD, SUM(ROUND(TO_NUMBER(CANTIDAD_ADJUDICADO_ITEM, '9999999990.0000'))*100/100) CANTIDAD_ITEM, '{a.ANIO}' ANIO FROM T_GENM_MIGI_M8U ";
                            sql += $" WHERE LOWER(TRANSLATE(DESCRIPCION_PROCESO,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pc.PALABRA}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' AND (OBJETO_CONTRACTUAL LIKE '%SERVICIOS%' OR OBJETO_CONTRACTUAL LIKE '%BIENES%') AND FECHA_CONVOCATORIA LIKE '%/{a.ANIO.Substring(2)}' ";
                            sql += $" GROUP BY OBJETO_CONTRACTUAL ";
                        }
                        else
                        {
                            string po = "";
                            foreach (string p in lstPalabraOmitidas)
                            {
                                po += $" AND LOWER(TRANSLATE(DESCRIPCION_PROCESO,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) NOT LIKE '%' || LOWER(TRANSLATE('{p}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' ";
                            }
                            sql  = $"SELECT '{pc.PALABRA}' HALLAZGO, OBJETO_CONTRACTUAL TIPO_REQUERIMIENTO,  COUNT(*) CANTIDAD, SUM(ROUND(TO_NUMBER(CANTIDAD_ADJUDICADO_ITEM, '9999999990.0000'))*100/100) CANTIDAD_ITEM, '{a.ANIO}' ANIO FROM T_GENM_MIGI_M8U ";
                            sql += $" WHERE LOWER(TRANSLATE(DESCRIPCION_PROCESO,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pc.PALABRA}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%'  {po}  AND (OBJETO_CONTRACTUAL LIKE '%SERVICIOS%' OR OBJETO_CONTRACTUAL LIKE '%BIENES%') AND FECHA_CONVOCATORIA LIKE '%/{a.ANIO.Substring(2)}' ";
                            sql += $" GROUP BY OBJETO_CONTRACTUAL ";
                        }
                        ggf.LISTA_GRAFICON1M8U = BusquedaDA.FiltrarPalabraBusquedaM8U(sql, cn);
                        lstGraficoN1M8U.Add(ggf);
                    }
                    lstPalabraOmitidas.Add(pc.PALABRA);
                    lstGrafico.Add(new GraficoBE {
                        LISTA_GRAFICOM8U = lstGraficoN1M8U, HALLAZGO = pc.PALABRA
                    });
                }
                entidad.LISTA_GRAFICO = lstGrafico;
            }
            finally { if (cn.State == ConnectionState.Open)
                      {
                          cn.Close();
                      }
            }

            return(entidad);
        }
Exemplo n.º 3
0
        public List <BusquedaBE> FiltrarInformacionExportar(BusquedaBE obj)
        {
            List <BusquedaBE> lstBusqueda = new List <BusquedaBE>();
            List <string>     lstCadena = new List <string>();
            List <string>     lstAnio = new List <string>();
            string            palabrasFiltrar = "", aniosFiltrar = "", palabrasOmitidas = "";

            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 <string> lstPalabraOmitidas = new List <string>();
                foreach (PalabraClaveBE pc in obj.LISTA_PALABRAS)
                {
                    BusquedaBE entidad = new BusquedaBE();
                    if (lstPalabraOmitidas.Count == 0)
                    {
                        palabrasFiltrar = $" LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pc.PALABRA}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' ";
                        lstPalabraOmitidas.Add(pc.PALABRA);
                    }
                    else
                    {
                        foreach (string p in lstPalabraOmitidas)
                        {
                            palabrasOmitidas += $" AND LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) NOT LIKE '%' || LOWER(TRANSLATE('{p}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' ";
                        }
                        palabrasFiltrar = $" LOWER(TRANSLATE(DESCRIPCION_ORDEN,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pc.PALABRA}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' ";
                        lstPalabraOmitidas.Add(pc.PALABRA);
                    }
                    //lstGrafico.Add(BusquedaDA.FiltrarGraficoN1(sql, cn));
                    entidad = BusquedaDA.FiltrarInformacion(palabrasFiltrar, aniosFiltrar, palabrasOmitidas, cn);
                    lstBusqueda.Add(entidad);
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
            }
            return(lstBusqueda);
        }
Exemplo n.º 4
0
        public JsonResult GuardarResultado()
        {
            BusquedaBE obj = new BusquedaBE();

            obj.LISTA_PALABRAS          = (List <PalabraClaveBE>)Session["lista_palabras"];
            obj.LISTA_PALABRAS_CANTIDAD = Session["lista_palabras_cantidad"] == null ? new List <PalabraClaveCantidadBE>() : (List <PalabraClaveCantidadBE>)Session["lista_palabras_cantidad"];
            obj.LISTA_ANIOS             = (List <AnioBE>)Session["lista_anios"];
            obj.ID_TIPO_BUSQUEDA        = (int)Session["tipo_busqueda"];
            obj.UPD_USUARIO             = ObtenerSesion().ID_USUARIO;
            bool v          = BusquedaLN.GuardarResultado(obj);
            var  jsonResult = Json(v, JsonRequestBehavior.AllowGet);

            jsonResult.MaxJsonLength = int.MaxValue;
            return(jsonResult);
        }
        public JsonResult MostrarResultado(int id)
        {
            BusquedaBE obj = ResultadoLN.ListaBusqueda(id);

            Session["lista_palabras"]          = obj.LISTA_PALABRAS;
            Session["lista_palabras_cantidad"] = obj.LISTA_PALABRAS_CANTIDAD;
            Session["lista_anios"]             = obj.LISTA_ANIOS;
            Session["tipo_busqueda"]           = obj.ID_TIPO_BUSQUEDA;
            BusquedaBE entidad = obj.ID_TIPO_BUSQUEDA == 1 ? BusquedaLN.FiltrarInformacion(obj) : BusquedaLN.FiltrarInformacionM8U(obj);

            entidad.ID_TIPO_BUSQUEDA = obj.ID_TIPO_BUSQUEDA;
            entidad.LISTA_ANIOS      = obj.LISTA_ANIOS;
            var jsonResult = Json(entidad, JsonRequestBehavior.AllowGet);

            jsonResult.MaxJsonLength = int.MaxValue;
            return(jsonResult);
        }
Exemplo n.º 6
0
        public List <BusquedaBE> FiltrarInformacionExportarM8U(BusquedaBE obj)
        {
            List <BusquedaBE> lstBusqueda = new List <BusquedaBE>();
            List <string>     lstCadena = new List <string>();
            List <string>     lstAnio = new List <string>();
            string            palabrasFiltrar = "", aniosFiltrar = "", palabrasOmitidas = "";

            try
            {
                cn.Open();
                List <string> lstPalabraOmitidas = new List <string>();
                foreach (PalabraClaveBE pc in obj.LISTA_PALABRAS)
                {
                    foreach (AnioBE a in obj.LISTA_ANIOS)
                    {
                        BusquedaBE entidad = new BusquedaBE();
                        if (lstPalabraOmitidas.Count == 0)
                        {
                            palabrasFiltrar = $" LOWER(TRANSLATE(DESCRIPCION_PROCESO,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pc.PALABRA}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' ";
                            aniosFiltrar    = $" AND FECHA_CONVOCATORIA LIKE '%/{a.ANIO.Substring(2)}' ";
                        }
                        else
                        {
                            foreach (string p in lstPalabraOmitidas)
                            {
                                palabrasOmitidas += $" AND LOWER(TRANSLATE(DESCRIPCION_PROCESO,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) NOT LIKE '%' || LOWER(TRANSLATE('{p}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' ";
                            }
                            palabrasFiltrar = $" LOWER(TRANSLATE(DESCRIPCION_PROCESO,'ÁÉÍÓÚáéíóú','AEIOUaeiou')) LIKE '%' || LOWER(TRANSLATE('{pc.PALABRA}','ÁÉÍÓÚáéíóú','AEIOUaeiou')) ||'%' ";
                            aniosFiltrar    = $" AND FECHA_CONVOCATORIA LIKE '%/{a.ANIO.Substring(2)}' ";
                        }
                        entidad = BusquedaDA.FiltrarInformacionM8U(palabrasFiltrar, aniosFiltrar, palabrasOmitidas, cn);
                        lstBusqueda.Add(entidad);
                    }
                    lstPalabraOmitidas.Add(pc.PALABRA);
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
            }
            return(lstBusqueda);
        }
Exemplo n.º 7
0
        public BusquedaBE FiltrarInformacionM8U(string cadena, string anios, string palabras_omitidas, OracleConnection db)
        {
            BusquedaBE item = new BusquedaBE();

            try
            {
                string sp = $"{Package.Filtro}USP_SEL_FILTRAR_M8U";
                OracleDynamicParameters p = new OracleDynamicParameters();
                p.Add("PI_PALABRAS", cadena);
                p.Add("PI_PALABRAS_OMITIDAS", palabras_omitidas);
                p.Add("PI_ANIOS", anios);
                p.Add("PO_REFCURSOR", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output);
                item.LISTA_ORDENCOMPRAM8U = db.Query <OrdenCompraM8UBE>(sp, p, commandType: CommandType.StoredProcedure).ToList();
            }
            catch (Exception ex)
            {
                Log.Error(ex);
            }

            return(item);
        }
Exemplo n.º 8
0
        public bool GuardarResultado(BusquedaBE obj, out int idresultado, OracleConnection db)
        {
            bool seGuardo = false;

            idresultado = -1;

            try
            {
                string sp = $"{Package.Filtro}USP_INS_GUARDAR_RESULTADO";
                var    p  = new OracleDynamicParameters();
                p.Add("PI_ID_TIPO_BUSQUEDA", obj.ID_TIPO_BUSQUEDA);
                p.Add("PI_ID_USUARIO", obj.UPD_USUARIO);
                p.Add("PI_ID_GET", 0, OracleDbType.Int32, ParameterDirection.Output);
                p.Add("PO_ROWAFFECTED", dbType: OracleDbType.Int32, direction: ParameterDirection.Output);
                db.Execute(sp, p, commandType: CommandType.StoredProcedure);
                idresultado = (int)p.Get <dynamic>("PI_ID_GET").Value;
                int filasAfectadas = (int)p.Get <dynamic>("PO_ROWAFFECTED").Value;
                seGuardo = filasAfectadas > 0 && idresultado > 0;
            }
            catch (Exception ex) { Log.Error(ex); }

            return(seGuardo);
        }
Exemplo n.º 9
0
        public BusquedaBE ListaBusqueda(int idresultado)
        {
            BusquedaBE obj = new BusquedaBE();

            try
            {
                ResultadoBE resultado = ResultadoDA.ObtenerResultado(idresultado, cn);
                obj.ID_TIPO_BUSQUEDA = resultado.ID_TIPO_BUSQUEDA;
                obj.LISTA_PALABRAS   = ResultadoDA.ObtenerPalabraClave(idresultado, cn);
                if (resultado.ID_TIPO_BUSQUEDA == 1)
                {
                    obj.LISTA_PALABRAS_CANTIDAD = ResultadoDA.ObtenerPalabraClaveCantidad(idresultado, cn);
                }
                obj.LISTA_ANIOS = ResultadoDA.ObtenerAnio(idresultado, cn);
            }
            finally
            {
                if (cn.State == ConnectionState.Open)
                {
                    cn.Close();
                }
            }
            return(obj);
        }
Exemplo n.º 10
0
        public bool GuardarResultado(BusquedaBE obj)
        {
            bool seGuardo    = false;
            int  idresultado = -1;

            try
            {
                cn.Open();
                using (OracleTransaction ot = cn.BeginTransaction(System.Data.IsolationLevel.ReadCommitted))
                {
                    seGuardo = BusquedaDA.GuardarResultado(obj, out idresultado, cn);
                    if (seGuardo)
                    {
                        if (obj.LISTA_PALABRAS != null)
                        {
                            if (obj.LISTA_PALABRAS.Count > 0)
                            {
                                foreach (PalabraClaveBE p in obj.LISTA_PALABRAS)
                                {
                                    if (!(seGuardo = BusquedaDA.GuardarResultadoPalabraClave(p, idresultado, obj.UPD_USUARIO, cn)))
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                    }

                    if (seGuardo)
                    {
                        if (obj.LISTA_PALABRAS_CANTIDAD != null)
                        {
                            if (obj.LISTA_PALABRAS_CANTIDAD.Count > 0)
                            {
                                foreach (PalabraClaveCantidadBE pc in obj.LISTA_PALABRAS_CANTIDAD)
                                {
                                    if (!(seGuardo = BusquedaDA.GuardarResultadoPalabraClaveCantidad(pc, idresultado, obj.UPD_USUARIO, cn)))
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                    }

                    if (seGuardo)
                    {
                        if (obj.LISTA_ANIOS != null)
                        {
                            if (obj.LISTA_ANIOS.Count > 0)
                            {
                                foreach (AnioBE a in obj.LISTA_ANIOS)
                                {
                                    if (!(seGuardo = BusquedaDA.GuardarResultadoAnio(a, idresultado, obj.UPD_USUARIO, cn)))
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                    }

                    if (seGuardo)
                    {
                        ot.Commit();
                    }
                    else
                    {
                        ot.Rollback();
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
            }
            finally {
                if (cn.State == ConnectionState.Open)
                {
                    cn.Close();
                }
            }

            return(seGuardo);
        }
Exemplo n.º 11
0
        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);
        }