private string ArmarCadenaConsulta(vConsultaContratosDinamicaDto Reg)
 {
     string Query = "SELECT " + CamposTraer(Reg) + " FROM CONTRATOS " + InnersJoins();
     Query = AgregarFiltro(Query, true, "CONTRATOS.VAL_ADI", "<", "10000000");
     Query = AgregarFiltro(Query, Reg.chkVigencia, "VIG_CON", "=", Reg.Vigencia);
     Query = AgregarFiltro(Query, !Reg.chkAnulados, "EST_CON", "!=", "07");
     Query = AgregarFiltro(Query, Reg.chkNumeroContrato, "CONTRATOS.COD_CON", "=", Reg.NumeroContrato);
     Query = AgregarFiltro(Query, Reg.chkTipoContrato, "TIP_CON", "=", Reg.TipoContrato);
     Query = AgregarFiltro(Query, Reg.chkSubTipoContrato, "STIP_CON", "=", Reg.SubTipoContrato);
     Query = AgregarFiltro(Query, Reg.chkUltimaActa, "EST_CON", "=", Reg.UltimaActa);
     Query = AgregarFiltroEstado(Query, Reg.chkEstado, Reg.Estado);
     Query = AgregarFiltro(Query, Reg.chkSectorDestino, "COD_SEC", "=", Reg.SectorDestino);
     Query = AgregarFiltroProyecto(Query, Reg.chkProyecto, Reg.Proyecto);
     Query = AgregarFiltro(Query, Reg.chkDependenciaAcargo, "DEP_CON", "=", Reg.DependenciaAcargo);
     Query = AgregarFiltro(Query, Reg.chkDependenciaNecesidad, "DEP_PCON", "=", Reg.DependenciaNecesidad);
     Query = AgregarFiltroFecha(Query, Reg.chkFechaSuscripcion, "FEC_SUS_CON", ">=", Reg.FechaISuscripcion.ToString());
     Query = AgregarFiltroFecha(Query, Reg.chkFechaSuscripcion, "FEC_SUS_CON", "<=", Reg.FechaFSuscripcion.ToString());
     Query = AgregarFiltroFecha(Query, Reg.chkFechaRegistro, "FEC_REG", ">=", Reg.FechaIRegistro.ToString());
     Query = AgregarFiltroFecha(Query, Reg.chkFechaRegistro, "FEC_REG", "<=", Reg.FechaFRegistro.ToString());
     Query = AgregarFiltro(Query, Reg.chkContratista, "IDE_CON", "=", Reg.IdContratista);
     Query = AgregarFiltro(Query, Reg.chkInterventor, "IDE_REP", "=", Reg.IdInterventor);
     Query = AgregarFiltro(Query, Reg.chkTipoProceso, "COD_TPRO", "=", Reg.TipoProceso);
     Query = AgregarFiltroCDP(Query, Reg.chkDisponibilidadPresupuestal, Reg.DisponibilidadPresupuestal, Reg.VigenciaDisponibilidadPresupuestal);
     Query = AgregarFiltroRP(Query, Reg.chkRegistroPresupuestal, Reg.RegistroPresupuestal, Reg.VigenciaRegistroPresupuestal);
     Query = AgregarFiltroObjeto(Query, Reg.chkObjeto, Reg.Objeto);
     Query = AgregarFiltro(Query, Reg.chkValorContratoConvenio, "VAL_CON", ">=", Reg.ValorDesdePrecontractual);
     Query = AgregarFiltro(Query, Reg.chkValorContratoConvenio, "VAL_CON", "<=", Reg.ValorHastaPrecontractual);
     Query = AgregarFiltroRecurso(Query, Reg.chkRecurso, Reg.Recurso, Reg.Vigencia);
     return Query;
 }
        public List<vRptaReporteDinamicoContratos> Consultar(vConsultaContratosDinamicaDto Reg)
        {
            using (ctx = new Entities())
            {
                List<vRptaReporteDinamicoContratos> lr = new List<vRptaReporteDinamicoContratos>();
                List<vCON_CONTRATOS_DINAMICO> lrContratos = new List<vCON_CONTRATOS_DINAMICO>();
                string Query = ArmarCadenaConsulta(Reg);
                List<vCON_CONTRATOS_DINAMICO> lContratos = ctx.Database.SqlQuery<vCON_CONTRATOS_DINAMICO>(Query).ToList();

                vRptaReporteDinamicoContratos ReportePrincipal = new vRptaReporteDinamicoContratos();
                ReportePrincipal.Nombre = "Reporte principal";
                ReportePrincipal.Html = ArmarTablaReporte(lContratos, Reg.lCamposMostrar);
                lr.Add(ReportePrincipal);

                List<vRptaReporteDinamicoContratos> lConsolidados = new List<vRptaReporteDinamicoContratos>();
                if (Reg.lCamposAgrupar.Count() >= 1) lConsolidados = Consolidados(Reg, Query);

                lConsolidados.ForEach(t => lr.Add(t));
                
                return lr;
            }
        }
 public List<vRptaReporteDinamicoContratos> RealizarReporteDinamico(vConsultaContratosDinamicaDto Reg)
 {
     ReporteDinamico o = new ReporteDinamico();
     return o.Consultar(Reg);
 }
        private string CamposTraer(vConsultaContratosDinamicaDto Reg)
        {
            string Campos = "";
            Campos += " CONTRATOS.NRO_CON," +
                        "CONTRATOS.IDE_CON," +
                        "CONTRATOS.OBJ_CON," +
                        "CONTRATOS.PRO_CON," +
                        "CONTRATOS.FEC_SUS_CON," +
                        "CONTRATOS.PLA_EJE_CON," +
                        "CONTRATOS.DEP_CON," +
                        "CONTRATOS.VIG_CON," +
                        "CONTRATOS.TIP_CON," +
                        "CONTRATOS.STIP_CON," +
                        "CONTRATOS.EST_CON," +
                        "CONTRATOS.VAL_CON," +
                        "CONTRATOS.DOC_CON," +
                        "CONTRATOS.COD_CON," +
                        "CONTRATOS.CAN_ADI," +
                        "(SELECT SUM(VAL_ADI) FROM ADICIONES WHERE COD_CON=CONTRATOS.COD_CON) AS VAL_ADI," +
                        "CONTRATOS.COD_SEC," +
                        "CONTRATOS.TIP_FOR," +
                        "CONTRATOS.OTR_CNS," +
                        "CONTRATOS.COD_TPRO," +
                        "CONTRATOS.NRO_PLA_CON," +
                        "CONTRATOS.IDE_REP," +
                        "CONTRATOS.USUARIO," +
                        "CONTRATOS.FEC_REG," +
                        "CONTRATOS.OBS_DOC_CON," +
                        "CONTRATOS.URG_MAN," +
                        "CONTRATOS.EST_CONV," +
                        "CONTRATOS.FEC_APR_POL," +
                        "CONTRATOS.EXO_IMP," +
                        "CONTRATOS.EXO_OBS," +
                        "CONTRATOS.PRO_SEL_NRO," +
                        "CONTRATOS.DEP_PCON," +
                        "CONTRATOS.VAL_APO_GOB," +
                        "CONTRATOS.COD_CON0," +
                        "CONTRATOS.FEC_ULT_MOD," +
                        "CONTRATOS.USER_ACT," +
                        "CONTRATOS.LEGALIZADO," +
                        "CONTRATOS.PER_APO," +
                        "CONTRATOS.ANTICIPO," +
                        "CONTRATOS.NEMPLEOS," +
                        "CONTRATOS.AGOTAR_PPTO," +
                        "CONTRATOS.LUG_EJE," +
                        "CONTRATOS.NUM_PROC," +
                        "CONTRATOS.TIPO_PLAZO," +
                        "CONTRATOS.TIP_RADICACION," +
                        "CONTRATOS.GRUPO," +
                        "CONTRATOS.ENCARGADO," +
                        "CONTRATOS.CONSIDERANDOS," +
                        "CONTRATOS.APORTES," +
                        "CONTRATOS.PLAZO2_EJE_CON," +
                        "CONTRATOS.TIPO_PLAZO2," +
                        "CONTRATOS.VAL_SIN_IVA," +
                        "CONTRATOS.INTERVENTORIA," +
                        "CONTRATOS.EXENPOL," +
                        "CONTRATOS.OBS_POLIZA," +
                        "CONTRATOS.OBS_CDP," +
                        "CONTRATOS.OBS_PROYECTOS," +
                        "CONTRATOS.REVISADOPOR," +
                        "CONTRATOS.RES_APR_POL," +
                        "CONTRATOS.DEP_SUP," +
                        "CONTRATOS.TIPO_FP," +
                        "CONTRATOS.ANTI_PORC," +
                        "CONTRATOS.PLIQ_EP," +
                        "CONTRATOS.OBLIGC," +
                        "CONTRATOS.OBLIGE," +

                        "DEPENDENCIA.NOM_DEP AS DEPENDENCIA, " +
                        "TIPOSCONT.NOM_TIP AS TIPOCONT," +
                        "CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CON.NOM1_TER,' '),CON.NOM2_TER), ' '),CON.APE1_TER),' '), CON.APE2_TER) AS CONTRATISTA," +
                        "ESTADOS.ESTADO AS ESTADO," +
                        "SECTOR.NOM_SEC AS SECTOR," +
                        "CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(REP_LEG.NOM1_TER,' '),REP_LEG.NOM2_TER), ' '),REP_LEG.APE1_TER),' '), REP_LEG.APE2_TER) AS REP_LEG," +
                        "SUB_TIPOS.NOM_STIP AS SUB_TIPO," +
                        "TP.NOM_TPROC AS TIPO_PROCESO," +
                        "DEPENDENCIAP.NOM_DEP AS DEPENDENCIAP," +
                        "INT_TER_CON.IDE_TER AS IDE_TER_INTV," +
                        "SUP_TER_CON.IDE_TER AS IDE_TER_SUP," +
                        "CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(INT_TER_CON.NOM1_TER,' '),INT_TER_CON.NOM2_TER), ' '),INT_TER_CON.APE1_TER),' '), INT_TER_CON.APE2_TER) AS NOM_TER_INTV," +
                        "CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(SUP_TER_CON.NOM1_TER,' '),SUP_TER_CON.NOM2_TER), ' '),SUP_TER_CON.APE1_TER),' '), SUP_TER_CON.APE2_TER) AS NOM_TER_SUP," +
                        "CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(ABOG.NOM1_TER,' '),ABOG.NOM2_TER), ' '),ABOG.APE1_TER),' '), ABOG.APE2_TER) AS ABOGADO," +
                        "CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(REVPOR.NOM1_TER,' '),REVPOR.NOM2_TER), ' '),REVPOR.APE1_TER),' '), REVPOR.APE2_TER) AS REVISADO_POR," +
                        "TP.NOM_PLA AS TTIPO_PLAZO," +
                        "TP2.NOM_PLA AS TTIPO_PLAZO2," +
                        "ESTCONFI.FEC_ENT AS FECHA_INICIAL," +
                        "ESTCONFF.FEC_ENT AS FECHA_FINAL," +
                        "ESTCONLQ.FEC_ENT AS FECHA_LIQ," +

                        " (CASE " +
                            " WHEN CONTRATOS.TIPO_PLAZO = 'A' THEN CONTRATOS.PLA_EJE_CON * 360 " +
                            " WHEN CONTRATOS.TIPO_PLAZO = 'M' THEN CONTRATOS.PLA_EJE_CON * 30 " +
                            " WHEN CONTRATOS.TIPO_PLAZO = 'D' THEN CONTRATOS.PLA_EJE_CON " +
                            " ELSE 0 " +
                            " END)  + " +

                            " (CASE " +
                            " WHEN CONTRATOS.TIPO_PLAZO2 = 'A' THEN CONTRATOS.PLAZO2_EJE_CON * 360 " +
                            " WHEN CONTRATOS.TIPO_PLAZO2 = 'M' THEN CONTRATOS.PLAZO2_EJE_CON * 30 " +
                            " WHEN CONTRATOS.TIPO_PLAZO2 = 'D' THEN CONTRATOS.PLAZO2_EJE_CON " +
                            " ELSE 0 " +
                            " END) AS TOTAL_PLAZO, " +

                        " (SELECT  " +
                           " SUM( " +
                           " (CASE   " +
                           " WHEN AD.TIPO_PLAZO1_ADI = 'A' THEN AD.PLA_EJE_ADI * 360   " +
                           " WHEN AD.TIPO_PLAZO1_ADI = 'M' THEN AD.PLA_EJE_ADI * 30   " +
                           " WHEN AD.TIPO_PLAZO1_ADI = 'D' THEN AD.PLA_EJE_ADI   " +
                           " ELSE 0   " +
                           " END)  " +
                           " +   " +
                           " (CASE   " +
                           " WHEN AD.TIPO_PLAZO2_ADI = 'A' THEN AD.PLAZO2_ADI * 360   " +
                           " WHEN AD.TIPO_PLAZO2_ADI = 'M' THEN AD.PLAZO2_ADI * 30   " +
                           " WHEN AD.TIPO_PLAZO2_ADI = 'D' THEN AD.PLAZO2_ADI   " +
                           " ELSE 0   " +
                           " END) " +
                           " ) AS TOTAL_PLAZO_ADICION " +
                           " FROM CONTRATOS CON " +
                           " LEFT JOIN ADICIONES AD ON CON.COD_CON = AD.COD_CON " +
                           " WHERE CON.COD_CON = CONTRATOS.COD_CON " +
                           " GROUP BY  " +
                           " CON.COD_CON) AS TOTAL_PLAZO_ADICION " +
                            "";
            return Campos;
            #region SoloCamposMostar
            //string Campos = "";
            //if (Reg.lCamposMostrar.Where(t => t == "NRO_CON").FirstOrDefault() != null) Campos += " CONTRATOS.NRO_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "IDE_CON").FirstOrDefault() != null) Campos += " CONTRATOS.IDE_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "OBJ_CON").FirstOrDefault() != null) Campos += " CONTRATOS.OBJ_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "PRO_CON").FirstOrDefault() != null) Campos += " CONTRATOS.PRO_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "FEC_SUS_CON").FirstOrDefault() != null) Campos += " CONTRATOS.FEC_SUS_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "PLA_EJE_CON").FirstOrDefault() != null) Campos += " CONTRATOS.PLA_EJE_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "DEP_CON").FirstOrDefault() != null) Campos += " CONTRATOS.DEP_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "VIG_CON").FirstOrDefault() != null) Campos += " CONTRATOS.VIG_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "TIP_CON").FirstOrDefault() != null) Campos += " CONTRATOS.TIP_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "STIP_CON").FirstOrDefault() != null) Campos += " CONTRATOS.STIP_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "EST_CON").FirstOrDefault() != null) Campos += " CONTRATOS.EST_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "VAL_CON").FirstOrDefault() != null) Campos += " CONTRATOS.VAL_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "DOC_CON").FirstOrDefault() != null) Campos += " CONTRATOS.DOC_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "COD_CON").FirstOrDefault() != null) Campos += " CONTRATOS.COD_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "CAN_ADI").FirstOrDefault() != null) Campos += " CONTRATOS.CAN_ADI,";
            //if (Reg.lCamposMostrar.Where(t => t == "VAL_ADI").FirstOrDefault() != null) Campos += " (SELECT SUM(VAL_ADI) FROM ADICIONES WHERE COD_CON=CONTRATOS.COD_CON) AS VAL_ADI,";
            //if (Reg.lCamposMostrar.Where(t => t == "COD_SEC").FirstOrDefault() != null) Campos += " CONTRATOS.COD_SEC,";
            //if (Reg.lCamposMostrar.Where(t => t == "TIP_FOR").FirstOrDefault() != null) Campos += " CONTRATOS.TIP_FOR,";
            //if (Reg.lCamposMostrar.Where(t => t == "OTR_CNS").FirstOrDefault() != null) Campos += " CONTRATOS.OTR_CNS,";
            //if (Reg.lCamposMostrar.Where(t => t == "COD_TPRO").FirstOrDefault() != null) Campos += " CONTRATOS.COD_TPRO,";
            //if (Reg.lCamposMostrar.Where(t => t == "NRO_PLA_CON").FirstOrDefault() != null) Campos += " CONTRATOS.NRO_PLA_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "IDE_REP").FirstOrDefault() != null) Campos += " CONTRATOS.IDE_REP,";
            //if (Reg.lCamposMostrar.Where(t => t == "USUARIO").FirstOrDefault() != null) Campos += " CONTRATOS.USUARIO,";
            //if (Reg.lCamposMostrar.Where(t => t == "FEC_REG").FirstOrDefault() != null) Campos += " CONTRATOS.FEC_REG,";
            //if (Reg.lCamposMostrar.Where(t => t == "OBS_DOC_CON").FirstOrDefault() != null) Campos += " CONTRATOS.OBS_DOC_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "URG_MAN").FirstOrDefault() != null) Campos += " CONTRATOS.URG_MAN,";
            //if (Reg.lCamposMostrar.Where(t => t == "EST_CONV").FirstOrDefault() != null) Campos += " CONTRATOS.EST_CONV,";
            //if (Reg.lCamposMostrar.Where(t => t == "FEC_APR_POL").FirstOrDefault() != null) Campos += " CONTRATOS.FEC_APR_POL,";
            //if (Reg.lCamposMostrar.Where(t => t == "EXO_IMP").FirstOrDefault() != null) Campos += " CONTRATOS.EXO_IMP,";
            //if (Reg.lCamposMostrar.Where(t => t == "EXO_OBS").FirstOrDefault() != null) Campos += " CONTRATOS.EXO_OBS,";
            //if (Reg.lCamposMostrar.Where(t => t == "PRO_SEL_NRO").FirstOrDefault() != null) Campos += " CONTRATOS.PRO_SEL_NRO,";
            //if (Reg.lCamposMostrar.Where(t => t == "DEP_PCON").FirstOrDefault() != null) Campos += " CONTRATOS.DEP_PCON,";
            //if (Reg.lCamposMostrar.Where(t => t == "VAL_APO_GOB").FirstOrDefault() != null) Campos += " CONTRATOS.VAL_APO_GOB,";
            //if (Reg.lCamposMostrar.Where(t => t == "COD_CON0").FirstOrDefault() != null) Campos += " CONTRATOS.COD_CON0,";
            //if (Reg.lCamposMostrar.Where(t => t == "FEC_ULT_MOD").FirstOrDefault() != null) Campos += " CONTRATOS.FEC_ULT_MOD,";
            //if (Reg.lCamposMostrar.Where(t => t == "USER_ACT").FirstOrDefault() != null) Campos += " CONTRATOS.USER_ACT,";
            //if (Reg.lCamposMostrar.Where(t => t == "LEGALIZADO").FirstOrDefault() != null) Campos += " CONTRATOS.LEGALIZADO,";
            //if (Reg.lCamposMostrar.Where(t => t == "PER_APO").FirstOrDefault() != null) Campos += " CONTRATOS.PER_APO,";
            //if (Reg.lCamposMostrar.Where(t => t == "ANTICIPO").FirstOrDefault() != null) Campos += " CONTRATOS.ANTICIPO,";
            //if (Reg.lCamposMostrar.Where(t => t == "NEMPLEOS").FirstOrDefault() != null) Campos += " CONTRATOS.NEMPLEOS,";
            //if (Reg.lCamposMostrar.Where(t => t == "AGOTAR_PPTO").FirstOrDefault() != null) Campos += " CONTRATOS.AGOTAR_PPTO,";
            //if (Reg.lCamposMostrar.Where(t => t == "LUG_EJE").FirstOrDefault() != null) Campos += " CONTRATOS.LUG_EJE,";
            //if (Reg.lCamposMostrar.Where(t => t == "NUM_PROC").FirstOrDefault() != null) Campos += " CONTRATOS.NUM_PROC,";
            //if (Reg.lCamposMostrar.Where(t => t == "TIPO_PLAZO").FirstOrDefault() != null) Campos += " CONTRATOS.TIPO_PLAZO,";
            //if (Reg.lCamposMostrar.Where(t => t == "TIP_RADICACION").FirstOrDefault() != null) Campos += " CONTRATOS.TIP_RADICACION,";
            //if (Reg.lCamposMostrar.Where(t => t == "GRUPO").FirstOrDefault() != null) Campos += " CONTRATOS.GRUPO,";
            //if (Reg.lCamposMostrar.Where(t => t == "ENCARGADO").FirstOrDefault() != null) Campos += " CONTRATOS.ENCARGADO,";
            //if (Reg.lCamposMostrar.Where(t => t == "CONSIDERANDOS").FirstOrDefault() != null) Campos += " CONTRATOS.CONSIDERANDOS,";
            //if (Reg.lCamposMostrar.Where(t => t == "APORTES").FirstOrDefault() != null) Campos += " CONTRATOS.APORTES,";
            //if (Reg.lCamposMostrar.Where(t => t == "PLAZO2_EJE_CON").FirstOrDefault() != null) Campos += " CONTRATOS.PLAZO2_EJE_CON,";
            //if (Reg.lCamposMostrar.Where(t => t == "TIPO_PLAZO2").FirstOrDefault() != null) Campos += " CONTRATOS.TIPO_PLAZO2,";
            //if (Reg.lCamposMostrar.Where(t => t == "VAL_SIN_IVA").FirstOrDefault() != null) Campos += " CONTRATOS.VAL_SIN_IVA,";
            //if (Reg.lCamposMostrar.Where(t => t == "INTERVENTORIA").FirstOrDefault() != null) Campos += " CONTRATOS.INTERVENTORIA,";
            //if (Reg.lCamposMostrar.Where(t => t == "EXENPOL").FirstOrDefault() != null) Campos += " CONTRATOS.EXENPOL,";
            //if (Reg.lCamposMostrar.Where(t => t == "OBS_POLIZA").FirstOrDefault() != null) Campos += " CONTRATOS.OBS_POLIZA,";
            //if (Reg.lCamposMostrar.Where(t => t == "OBS_CDP").FirstOrDefault() != null) Campos += " CONTRATOS.OBS_CDP,";
            //if (Reg.lCamposMostrar.Where(t => t == "OBS_PROYECTOS").FirstOrDefault() != null) Campos += " CONTRATOS.OBS_PROYECTOS,";
            //if (Reg.lCamposMostrar.Where(t => t == "REVISADOPOR").FirstOrDefault() != null) Campos += " CONTRATOS.REVISADOPOR,";
            //if (Reg.lCamposMostrar.Where(t => t == "RES_APR_POL").FirstOrDefault() != null) Campos += " CONTRATOS.RES_APR_POL,";
            //if (Reg.lCamposMostrar.Where(t => t == "DEP_SUP").FirstOrDefault() != null) Campos += " CONTRATOS.DEP_SUP,";
            //if (Reg.lCamposMostrar.Where(t => t == "TIPO_FP").FirstOrDefault() != null) Campos += " CONTRATOS.TIPO_FP,";
            //if (Reg.lCamposMostrar.Where(t => t == "ANTI_PORC").FirstOrDefault() != null) Campos += " CONTRATOS.ANTI_PORC,";
            //if (Reg.lCamposMostrar.Where(t => t == "PLIQ_EP").FirstOrDefault() != null) Campos += " CONTRATOS.PLIQ_EP,";
            //if (Reg.lCamposMostrar.Where(t => t == "OBLIGC").FirstOrDefault() != null) Campos += " CONTRATOS.OBLIGC,";
            //if (Reg.lCamposMostrar.Where(t => t == "OBLIGE").FirstOrDefault() != null) Campos += " CONTRATOS.OBLIGE,";

            //if (Reg.lCamposMostrar.Where(t => t == "DEPENDENCIA").FirstOrDefault() != null) Campos += " DEPENDENCIA.NOM_DEP AS DEPENDENCIA,";
            //if (Reg.lCamposMostrar.Where(t => t == "TIPOCONT").FirstOrDefault() != null) Campos += " TIPOSCONT.NOM_TIP AS TIPOCONT,";
            //if (Reg.lCamposMostrar.Where(t => t == "CONTRATISTA").FirstOrDefault() != null) Campos += " CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CON.NOM1_TER,' '),CON.NOM2_TER), ' '),CON.APE1_TER),' '), CON.APE2_TER) AS CONTRATISTA,";
            //if (Reg.lCamposMostrar.Where(t => t == "ESTADO").FirstOrDefault() != null) Campos += " ESTADOS.ESTADO AS ESTADO,";
            //if (Reg.lCamposMostrar.Where(t => t == "SECTOR").FirstOrDefault() != null) Campos += " SECTOR.NOM_SEC AS SECTOR,";
            //if (Reg.lCamposMostrar.Where(t => t == "REP_LEG").FirstOrDefault() != null) Campos += " CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(REP_LEG.NOM1_TER,' '),REP_LEG.NOM2_TER), ' '),REP_LEG.APE1_TER),' '), REP_LEG.APE2_TER) AS REP_LEG,";
            //if (Reg.lCamposMostrar.Where(t => t == "SUB_TIPO").FirstOrDefault() != null) Campos += " SUB_TIPOS.NOM_STIP AS SUB_TIPO,";
            //if (Reg.lCamposMostrar.Where(t => t == "TIPO_PROCESO").FirstOrDefault() != null) Campos += " TP.NOM_TPROC AS TIPO_PROCESO,";
            //if (Reg.lCamposMostrar.Where(t => t == "DEPENDENCIAP").FirstOrDefault() != null) Campos += " DEPENDENCIAP.NOM_DEP AS DEPENDENCIAP,";
            //if (Reg.lCamposMostrar.Where(t => t == "IDE_TER_INTV").FirstOrDefault() != null) Campos += " INT_TER_CON.IDE_TER AS IDE_TER_INTV,";
            //if (Reg.lCamposMostrar.Where(t => t == "IDE_TER_SUP").FirstOrDefault() != null) Campos += " SUP_TER_CON.IDE_TER AS IDE_TER_SUP,";
            //if (Reg.lCamposMostrar.Where(t => t == "NOM_TER_INTV").FirstOrDefault() != null) Campos += " CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(INT_TER_CON.NOM1_TER,' '),INT_TER_CON.NOM2_TER), ' '),INT_TER_CON.APE1_TER),' '), INT_TER_CON.APE2_TER) AS NOM_TER_INTV,";
            //if (Reg.lCamposMostrar.Where(t => t == "NOM_TER_SUP").FirstOrDefault() != null) Campos += " CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(SUP_TER_CON.NOM1_TER,' '),SUP_TER_CON.NOM2_TER), ' '),SUP_TER_CON.APE1_TER),' '), SUP_TER_CON.APE2_TER) AS NOM_TER_SUP,";
            //if (Reg.lCamposMostrar.Where(t => t == "ABOGADO").FirstOrDefault() != null) Campos += " CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(ABOG.NOM1_TER,' '),ABOG.NOM2_TER), ' '),ABOG.APE1_TER),' '), ABOG.APE2_TER) AS ABOGADO,";
            //if (Reg.lCamposMostrar.Where(t => t == "REVISADO_POR").FirstOrDefault() != null) Campos += " CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(REVPOR.NOM1_TER,' '),REVPOR.NOM2_TER), ' '),REVPOR.APE1_TER),' '), REVPOR.APE2_TER) AS REVISADO_POR,";
            //if (Reg.lCamposMostrar.Where(t => t == "TTIPO_PLAZO").FirstOrDefault() != null) Campos += " TP.NOM_PLA AS TTIPO_PLAZO,";
            //if (Reg.lCamposMostrar.Where(t => t == "TTIPO_PLAZO2").FirstOrDefault() != null) Campos += " TP2.NOM_PLA AS TTIPO_PLAZO2,";
            //if (Reg.lCamposMostrar.Where(t => t == "FECHA_INICIAL").FirstOrDefault() != null) Campos += " ESTCONFI.FEC_ENT AS FECHA_INICIAL,";
            //if (Reg.lCamposMostrar.Where(t => t == "FECHA_FINAL").FirstOrDefault() != null) Campos += " ESTCONFF.FEC_ENT AS FECHA_FINAL,";
            //if (Reg.lCamposMostrar.Where(t => t == "FECHA_LIQ").FirstOrDefault() != null) Campos += " ESTCONLQ.FEC_ENT AS FECHA_LIQ,";

            //if (Reg.lCamposMostrar.Where(t => t == "TOTAL_PLAZO").FirstOrDefault() != null) Campos += " (CASE " +
            //                " WHEN CONTRATOS.TIPO_PLAZO = 'A' THEN CONTRATOS.PLA_EJE_CON * 360 " +
            //                " WHEN CONTRATOS.TIPO_PLAZO = 'M' THEN CONTRATOS.PLA_EJE_CON * 30 " +
            //                " WHEN CONTRATOS.TIPO_PLAZO = 'D' THEN CONTRATOS.PLA_EJE_CON " +
            //                " ELSE 0 " +
            //                " END)  + " +

            //                " (CASE " +
            //                " WHEN CONTRATOS.TIPO_PLAZO2 = 'A' THEN CONTRATOS.PLAZO2_EJE_CON * 360 " +
            //                " WHEN CONTRATOS.TIPO_PLAZO2 = 'M' THEN CONTRATOS.PLAZO2_EJE_CON * 30 " +
            //                " WHEN CONTRATOS.TIPO_PLAZO2 = 'D' THEN CONTRATOS.PLAZO2_EJE_CON " +
            //                " ELSE 0 " +
            //                " END) AS TOTAL_PLAZO,";



            //if (Reg.lCamposMostrar.Where(t => t == "TOTAL_PLAZO_ADICION").FirstOrDefault() != null) Campos += " (SELECT  " +
            //               " SUM( " +
            //               " (CASE   " +
            //               " WHEN AD.TIPO_PLAZO1_ADI = 'A' THEN AD.PLA_EJE_ADI * 360   " +
            //               " WHEN AD.TIPO_PLAZO1_ADI = 'M' THEN AD.PLA_EJE_ADI * 30   " +
            //               " WHEN AD.TIPO_PLAZO1_ADI = 'D' THEN AD.PLA_EJE_ADI   " +
            //               " ELSE 0   " +
            //               " END)  " +
            //               " +   " +
            //               " (CASE   " +
            //               " WHEN AD.TIPO_PLAZO2_ADI = 'A' THEN AD.PLAZO2_ADI * 360   " +
            //               " WHEN AD.TIPO_PLAZO2_ADI = 'M' THEN AD.PLAZO2_ADI * 30   " +
            //               " WHEN AD.TIPO_PLAZO2_ADI = 'D' THEN AD.PLAZO2_ADI   " +
            //               " ELSE 0   " +
            //               " END) " +
            //               " ) AS TOTAL_PLAZO_ADICION " +
            //               " FROM CONTRATOS CON " +
            //               " LEFT JOIN ADICIONES AD ON CON.COD_CON = AD.COD_CON " +
            //               " WHERE CON.COD_CON = CONTRATOS.COD_CON " +
            //               " GROUP BY  " +
            //               " CON.COD_CON) AS TOTAL_PLAZO_ADICION,";

            //Campos = Campos.TrimEnd(',');

            //return Campos;
            #endregion
        }
        private List<vRptaReporteDinamicoContratos> Consolidados(vConsultaContratosDinamicaDto Reg, string Query)
        {
            int id_tabla = 1;
            List<vRptaReporteDinamicoContratos> lr = new List<vRptaReporteDinamicoContratos>();
            if (!Reg.AgruparIndividuales)
            {
                string newQuery = ArmarConsultaAgrupada(Reg.lCamposAgrupar, Query);
                List<vConsultaConsolidado> lConsolidadosUnico = ctx.Database.SqlQuery<vConsultaConsolidado>(newQuery).ToList();

                vRptaReporteDinamicoContratos ConsolidadoUnico = new vRptaReporteDinamicoContratos();
                ConsolidadoUnico.Nombre = "Consolidado";
                ConsolidadoUnico.Html = ArmarTablaConsolidado(lConsolidadosUnico, Reg.lCamposAgrupar, id_tabla.ToString());
                lr.Add(ConsolidadoUnico);
                return lr;
            }
            else
            {
                foreach (vCampos item in Reg.lCamposAgrupar)
                {
                    List<vCampos> l = new List<vCampos>(); 
                    l.Add(item);
                    string newQuery = ArmarConsultaAgrupada(l, Query);
                    List<vConsultaConsolidado> lConsolidadosIndividual = ctx.Database.SqlQuery<vConsultaConsolidado>(newQuery).ToList();

                    vRptaReporteDinamicoContratos ConsolidadoIndividual = new vRptaReporteDinamicoContratos();
                    ConsolidadoIndividual.Nombre = "Consolidado  " + item.name;

                    List<vCampos> lAux = new List<vCampos>();
                    lAux.Add(item);

                    ConsolidadoIndividual.Html = ArmarTablaConsolidado(lConsolidadosIndividual, lAux, id_tabla.ToString());
                    id_tabla++;
                    lr.Add(ConsolidadoIndividual);
                }                
            }
            return lr;
        }