public Mensaje existeDatoGenerico(string tabla, CamposWhere campoWhere, DBContextAdapter dbContext, DBContextAdapter dbContextMaestra)
        {
            int tipoConexion = eligeConexionBDPorTabla(tabla);
            DBContextAdapter conexionUsada = null;

            if (tipoConexion == 1)
            {
                conexionUsada = dbContext;
            }
            else if (tipoConexion == 2)
            {
                conexionUsada = dbContextMaestra;
            }

            List <CamposSelect> camposSelect = new List <CamposSelect>()
            {
                new CamposSelect(tabla, TipoFuncion.NINGUNO)
            };
            OperadorSelect     select          = new OperadorSelect(camposSelect);
            List <CamposWhere> listCamposWhere = new List <CamposWhere>();

            if (campoWhere != null)
            {
                listCamposWhere.Add(campoWhere);
            }
            select.todosDatos = true;
            mensajeResultado  = conectorQuerysGenericos.consultaGenerica(conexionUsada, TipoResultado.Lista, TipoOperacion.SELECT,
                                                                         tabla, select, null, listCamposWhere, null, null, null);
            return(mensajeResultado);
        }
        private bool deleteListQuerys(string tabla, CamposWhere campoWhere, DBContextAdapter dbContext)
        {
            bool exito = true;

            try
            {
                inicializaVariableMensaje();
                setSession(null);
                getSession().Database.BeginTransaction();
                //deleteListQuery("AguinaldoConfiguracion", "Id", eliminados);
                deleteListQuery(tabla, campoWhere, dbContext);
                mensajeResultado.resultado = true;
                mensajeResultado.noError   = 0;
                mensajeResultado.error     = "";
                getSession().Database.CurrentTransaction.Commit();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("deleteListQuerys()1_Error: ").Append(ex));
                mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error     = ex.GetBaseException().ToString();
                mensajeResultado.resultado = null;
                getSession().Database.CurrentTransaction.Rollback();
                exito = false;
            }
            return(exito);
        }
Example #3
0
        //bool
        public Mensaje existeClave(string tabla, CamposWhere campoWhere, DBContextAdapter dbContext)
        {
            List <CamposSelect> camposSelect = new List <CamposSelect>()
            {
                new CamposSelect(tabla, TipoFuncion.CONTAR)
            };
            OperadorSelect     select           = new OperadorSelect(camposSelect);
            List <CamposWhere> listaCamposWhere = new List <CamposWhere>();

            if (campoWhere != null)
            {
                listaCamposWhere.Add(campoWhere);
            }
            mensajeResultado = conectorQuerysGenericos.consultaGenerica(dbContext, TipoResultado.Unico, TipoOperacion.SELECT,
                                                                        tabla, select, null, listaCamposWhere, null, null, null);
            if (mensajeResultado.noError == 0)
            {
                if ((int)mensajeResultado.resultado > 0)
                {
                    mensajeResultado.resultado = true;
                }
                else
                {
                    mensajeResultado.resultado = false;
                }
            }
            return(mensajeResultado);
        }
Example #4
0
        public Mensaje consultaPorFiltrosEstados(Dictionary <string, object> campos, string operador, Int64 inicio, Int64 rango, DBContextAdapter dbContext)
        {
            listaEstados = new List <Estados>();
            ValoresRango rangos;

            try
            {
                inicializaVariableMensaje();
                setSession(dbContext.context);
                getSession().Database.BeginTransaction();
                List <CamposWhere> camposwheres = new List <CamposWhere>();
                foreach (var item in campos)
                {
                    if (!item.Value.ToString().Equals("") && item.Value != null)
                    {
                        CamposWhere campo = new CamposWhere();
                        campo.campo = "Estados." + item.Key.ToString();
                        campo.valor = item.Value;
                        if (operador == "=")
                        {
                            campo.operadorComparacion = OperadorComparacion.IGUAL;
                        }
                        else if (operador == "like")
                        {
                            campo.operadorComparacion = OperadorComparacion.LIKE;
                        }

                        campo.operadorLogico = OperadorLogico.AND;
                        camposwheres.Add(campo);
                    }
                }
                if (Convert.ToInt32(rango) > 0)
                {
                    rangos = new ValoresRango(Convert.ToInt32(inicio), Convert.ToInt32(rango));
                }
                else
                {
                    rangos = null;
                }
                //  ValoresRango rangos = new ValoresRango(Convert.ToInt32(inicio), Convert.ToInt32(rango));
                mensajeResultado.resultado = consultaPorRangos(rangos, camposwheres, null);
                mensajeResultado.noError   = 0;
                mensajeResultado.error     = "";
                getSession().Database.CurrentTransaction.Commit();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("consultaPorFiltrosEstado()1_Error: ").Append(ex));
                mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error     = ex.GetBaseException().ToString();
                mensajeResultado.resultado = null;
                getSession().Database.CurrentTransaction.Rollback();
            }
            return(mensajeResultado);
        }
 private void deleteListQuerys(string tabla, CamposWhere campoWhere, DBContextAdapter dbContext)
 {
     try
     {
         // deleteListQuery(tabla, campo, valores);
         deleteListQuery(tabla, campoWhere, dbContext);
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("deleteListQuerys()1_Error: ").Append(ex));
         mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
         mensajeResultado.error     = ex.GetBaseException().ToString();
         mensajeResultado.resultado = null;
     }
 }
Example #6
0
        public Mensaje deleteListQuery(string tabla, CamposWhere campoWhere, DBContextAdapter dbContext)
        {
            List <CamposWhere> listaCamposWhere = new List <CamposWhere>();

            if (campoWhere != null)
            {
                listaCamposWhere.Add(campoWhere);
            }
            mensajeResultado = conectorQuerysGenericos.consultaGenerica(dbContext, TipoResultado.Unico, TipoOperacion.DELETE,
                                                                        tabla, null, null, listaCamposWhere, null, null, null);
            if (mensajeResultado.noError == 0)
            {
                mensajeResultado.resultado = true;
            }
            return(mensajeResultado);
        }
 private bool deleteListQuerys(string tabla, CamposWhere campoWhere, DBContextAdapter dbContext)
 {
     try
     {
         deleteListQuery(tabla, campoWhere, dbContext);
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("deleteListQuerys()1_Error: ").Append(ex));
         mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
         mensajeResultado.error     = ex.GetBaseException().ToString();
         mensajeResultado.resultado = null;
         getSession().Database.CurrentTransaction.Rollback();
     }
     return(true);
 }
Example #8
0
 public Mensaje getExisteClave(string tabla, CamposWhere campoWhere, DBContextAdapter dbContext)
 {
     try
     {
         inicializaVariableMensaje();
         mensajeResultado = existeClave(tabla, campoWhere, null);
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("getExisteClave()1_Error: ").Append(ex));
         mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
         mensajeResultado.error   = ex.GetBaseException().ToString();
         getSession().Database.CurrentTransaction.Rollback();
         mensajeResultado.resultado = null;
     }
     return(mensajeResultado);
 }
        private bool deleteListTipoContrato(string tabla, CamposWhere campoWhere, DBContextAdapter dbContext)
        {
            bool exito = true;

            try
            {
                deleteListQuery(tabla, campoWhere, dbContext);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("deleteListTipoContrato()1_Error: ").Append(ex));
                mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error     = ex.GetBaseException().ToString();
                mensajeResultado.resultado = null;
                exito = false;
            }
            return(exito);
        }
Example #10
0
        private bool deleteListQuerys(string tabla, CamposWhere campoWhere, DBContextAdapter dbContext)
        {
            bool commit = true;

            try
            {
                // deleteListQuery("AguinaldoFechas", "Id", eliminados);
                deleteListQuery(tabla, campoWhere, dbContext);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("AguinaldoFechasPorClave()1_Error: ").Append(ex));
                mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error     = ex.GetBaseException().ToString();
                mensajeResultado.resultado = null;
                commit = false;
            }
            return(commit);
        }
Example #11
0
        private Mensaje obtenerQueryPerzonalizado(string identificador, List <CamposWhere> listCamposWhere, bool uniqueResult, DBContextAdapter dbContext, DBContextAdapter dbContextMaestra)
        {
            List <object> camposWhere = new List <object>();

            mensajeResultado.error   = "";
            mensajeResultado.noError = 0;
            CamposSelect      campoSelect;
            OperadorSelect    operadorSelect;
            List <CamposFrom> listCamposFrom;
            CamposOrden       campoOrden;


            //Code 12630
            DBContextAdapter conexionUsada;

            if (dbContext != null)
            {
                conexionUsada = dbContext;
            }
            else
            {
                conexionUsada = dbContextMaestra;
            }


            TipoResultado tipoResultado = TipoResultado.Lista;

            if (uniqueResult)
            {
                tipoResultado = TipoResultado.Unico;
            }
            if (identificador.Equals("QueryEmpleadoFiniquito"))
            {
                campoSelect    = new CamposSelect("FiniqLiquidPlazas.plazasPorEmpleado.empleados", TipoFuncion.NINGUNO);
                operadorSelect = new OperadorSelect(new List <CamposSelect>()
                {
                    campoSelect
                });
                listCamposFrom = new List <CamposFrom>()
                {
                    new CamposFrom("FiniqLiquidPlazas", TipoJoin.LEFT_JOIN), new CamposFrom("FiniqLiquidPlazas.finiquitosLiquida", TipoJoin.RIGHT_JOIN),
                    new CamposFrom("FiniqLiquidPlazas.plazasPorEmpleado", TipoJoin.RIGHT_JOIN), new CamposFrom("FiniqLiquidPlazas.plazasPorEmpleado.empleados", TipoJoin.RIGHT_JOIN),
                    new CamposFrom("FiniqLiquidPlazas.plazasPorEmpleado.razonesSociales", TipoJoin.RIGHT_JOIN)
                };
                listCamposWhere = listCamposWhere == null ? new List <CamposWhere>() : listCamposWhere;
                if (listCamposWhere.Count > 0)
                {
                    listCamposWhere[listCamposWhere.Count - 2].campo = "FiniqLiquidPlazas.plazasPorEmpleado.razonesSociales.clave";
                    listCamposWhere[listCamposWhere.Count - 1].campo = "FiniqLiquidPlazas.finiquitosLiquida.modoBaja";
                    listCamposWhere[listCamposWhere.Count - 1].operadorComparacion = OperadorComparacion.DIFERENTE;
                    listCamposWhere[listCamposWhere.Count - 1].operadorLogico      = OperadorLogico.OR;
                    List <CamposWhere> listSubCamposWhere = new List <CamposWhere>()
                    {
                        new CamposWhere("FiniqLiquidPlazas.id", 0, OperadorComparacion.IS_NULL, OperadorLogico.AND)
                    };
                    listCamposWhere[listCamposWhere.Count - 1].listCamposAgrupados = listSubCamposWhere;
                }
                campoOrden = new CamposOrden("FiniqLiquidPlazas.plazasPorEmpleado.empleados.clave");

                mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionUsada, tipoResultado, TipoOperacion.SELECT,
                                                                            "", operadorSelect, listCamposFrom, listCamposWhere, null, new List <CamposOrden>()
                {
                    campoOrden
                }, null);
                return(mensajeResultado);
            }
            else if (identificador.Equals("QueryEmpleadoEspecial") | identificador.Equals("QueryEmpleadoEspecialMovimientosNomina"))
            {
                if (identificador.ToUpper().Equals("QueryEmpleadoEspecial"))
                {
                    operadorSelect = new OperadorSelect(new List <CamposSelect>()
                    {
                        new CamposSelect("PlazasPorEmpleadosMov.tipoNomina", TipoFuncion.NINGUNO),
                        new CamposSelect("PlazasPorEmpleadosMov.plazasPorEmpleado.empleados", TipoFuncion.NINGUNO)
                    });
                }
                else
                {
                    operadorSelect = new OperadorSelect(new List <CamposSelect>()
                    {
                        new CamposSelect("PlazasPorEmpleadosMov", TipoFuncion.NINGUNO),
                        new CamposSelect("PlazasPorEmpleadosMov.plazasPorEmpleado.empleados", TipoFuncion.NINGUNO)
                    });
                }

                CamposWhere campoWherePrincipal = new CamposWhere("PlazasPorEmpleadosMov.id", null, OperadorComparacion.IN, OperadorLogico.AND);

                SubConsulta    subConsulta       = new SubConsulta();
                CamposSelect   campoSelectSub    = new CamposSelect("PlazasPorEmpleadosMov.id", TipoFuncion.MAXIMO);
                OperadorSelect operadorSelectSub = new OperadorSelect(new List <CamposSelect>()
                {
                    campoSelectSub
                });

                if (listCamposWhere.Count > 0)
                {
                    int cont = 0, index = 0;
                    if (listCamposWhere.Count > 4)
                    {
                        index = 1;
                    }
                    bool aplicarRestriccionEmpleadoDadoDeBaja = false;
                    foreach (var campoWhere in listCamposWhere)
                    {
                        if (String.IsNullOrEmpty(campoWhere.campo))
                        {
                            if (cont == 0 + index)
                            {
                                campoWhere.campo = "PlazasPorEmpleadosMov.plazasPorEmpleado.razonesSociales.clave";
                            }
                            else if (cont == (1 + index) & campoWhere.valor != null)
                            {
                                if (campoWhere.valor.GetType().Equals(typeof(TipoCorrida)))
                                {
                                    TipoCorrida corrida = (TipoCorrida)campoWhere.valor;
                                    if (corrida.clave.ToUpper().Equals("FIN") || corrida.clave.ToUpper().Equals("LIQ"))
                                    {
                                        aplicarRestriccionEmpleadoDadoDeBaja = false;
                                    }
                                    //consulta and parametros i++ =  parametro i ++ sabe em que se use mal codigo
                                }
                            }
                            else if (cont == 2 + index)
                            {
                                if (aplicarRestriccionEmpleadoDadoDeBaja)
                                {
                                    campoWhere.campo = "PlazasPorEmpleadosMov.fechaInicial";
                                    campoWhere.operadorComparacion = OperadorComparacion.MENOR_IGUAL;
                                    campoWhere.operadorLogico      = OperadorLogico.OR;

                                    CamposWhere campoWhereSub = new CamposWhere("PlazasPorEmpleadosMov.fechaInicial", campoWhere.valor, OperadorComparacion.BETWEEN, OperadorLogico.AND);
                                    campoWhere.listCamposAgrupados = new List <CamposWhere>()
                                    {
                                        campoWhereSub
                                    };
                                }
                                else
                                {
                                    campoWhere.campo = "PlazasPorEmpleadosMov.fechaInicial";
                                    campoWhere.operadorComparacion = OperadorComparacion.IGUAL;
                                    campoWhere.operadorLogico      = OperadorLogico.AND;
                                }
                            }
                            else if (cont == 3 + index)
                            {
                                if (aplicarRestriccionEmpleadoDadoDeBaja)
                                {
                                    campoWhere.campo = "PlazasPorEmpleadosMov.plazasPorEmpleado.fechaFinal";
                                    campoWhere.operadorComparacion = OperadorComparacion.MAYOR_IGUAL;
                                    campoWhere.operadorLogico      = OperadorLogico.OR;

                                    CamposWhere campoWhereSub = new CamposWhere("PlazasPorEmpleadosMov.plazasPorEmpleado.fechaFinal", campoWhere.valor, OperadorComparacion.BETWEEN, OperadorLogico.AND);
                                    campoWhere.listCamposAgrupados = new List <CamposWhere>()
                                    {
                                        campoWhereSub
                                    };
                                }
                                else
                                {
                                    campoWhere.campo = "PlazasPorEmpleadosMov.plazasPorEmpleado.fechaFinal";
                                    campoWhere.operadorComparacion = OperadorComparacion.IGUAL;
                                    campoWhere.operadorLogico      = OperadorLogico.AND;
                                }
                            }
                            cont++;
                        }
                        else
                        {
                            if (!campoWhere.campo.Contains(typeof(PlazasPorEmpleadosMov).Name))
                            {
                                campoWhere.campo = String.Concat(typeof(PlazasPorEmpleadosMov).Name, ".", campoWhere.campo);
                            }
                        }
                    }
                }
                CamposGrupo campoGrupo = new CamposGrupo("PlazasPorEmpleadosMov.plazasPorEmpleado.empleados.clave");
                campoOrden = new CamposOrden("PlazasPorEmpleadosMov.plazasPorEmpleado.empleados.clave");

                mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionUsada, tipoResultado, TipoOperacion.SELECT,
                                                                            "", operadorSelect, null, listCamposWhere, new List <CamposGrupo>()
                {
                    campoGrupo
                }, new List <CamposOrden>()
                {
                    campoOrden, new CamposOrden("PlazasPorEmpleadosMov.fechaInicial")
                }, null);
            }
            else if (identificador.Equals("queryPlazasEmpleadoEspecial"))
            {
                bool                manejoPagoPorHora   = false;
                ManejoHorasPor      manejoPorHoras      = ManejoHorasPor.HSM;
                ManejoSalarioDiario manejoSalarioDiario = ManejoSalarioDiario.QUINCENAL;
                try
                {
                    setSession(dbContext.context);
                    getSession().Database.BeginTransaction();

                    #region  Maneja pago por horas

                    operadorSelect = new OperadorSelect(new List <CamposSelect>()
                    {
                        new CamposSelect("Cruce.valor", TipoFuncion.NINGUNO)
                    });

                    var query = (from cr in getSession().Set <Cruce>()
                                 join pr in getSession().Set <Parametros>() on cr.parametros_ID equals pr.id
                                 join ea in getSession().Set <ElementosAplicacion>() on cr.elementosAplicacion_ID equals ea.id
                                 where pr.clave == (decimal)ClavesParametrosModulos.claveParametroPagosPorHora && ea.clave.Equals(ClavesParametrosModulos.claveElementoAplicacionRazonSocial) && cr.claveElemento.Equals(listCamposWhere[listCamposWhere.Count - 1].valor)
                                 select cr.valor
                                 );

                    string valor = query.FirstOrDefault();

                    //List<CamposWhere> listSubCamposWhere = new List<CamposWhere>() { new CamposWhere("Cruce.parametros.clave", claveParametroPagosPorHora, OperadorComparacion.IGUAL, OperadorLogico.AND),
                    //    new CamposWhere("Cruce.elementosAplicacion.clave", claveElementoAplicacionRazonSocial, OperadorComparacion.IGUAL, OperadorLogico.AND),
                    //    new CamposWhere("Cruce.claveElemento", listCamposWhere[listCamposWhere.Count - 1].valor, OperadorComparacion.IGUAL, OperadorLogico.AND)};

                    //mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionPendiente, TipoResultado.Unico, TipoOperacion.SELECT,
                    //   "", operadorSelect, null, listSubCamposWhere, null, null, null);
                    //if (mensajeResultado.noError != 0) {
                    //    return mensajeResultado;
                    //}
                    //string valor = (string) mensajeResultado.resultado;
                    if (String.IsNullOrEmpty(valor))
                    {
                        // operadorSelect = new OperadorSelect(new List<CamposSelect>() { new CamposSelect("Parametros.valor", TipoFuncion.NINGUNO) });
                        // listSubCamposWhere = new List<CamposWhere>() { new CamposWhere("Parametros.clave", claveParametroPagosPorHora, OperadorComparacion.IGUAL, OperadorLogico.AND),
                        // new CamposWhere("Parametros.modulo.clave", claveModuloGlobal, OperadorComparacion.IGUAL, OperadorLogico.AND)};

                        // mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionPendiente, TipoResultado.Unico, TipoOperacion.SELECT,
                        //"", operadorSelect, null, listSubCamposWhere, null, null, null);
                        // if (mensajeResultado.noError != 0)
                        // {
                        //     return mensajeResultado;
                        // }

                        // valor = (string)mensajeResultado.resultado;
                        query = (from pr in getSession().Set <Parametros>()
                                 join m in getSession().Set <Modulo>() on pr.modulo_ID equals m.id
                                 where pr.clave == (decimal)ClavesParametrosModulos.claveParametroPagosPorHora && m.clave.Equals(ClavesParametrosModulos.claveModuloGlobal)
                                 select pr.valor
                                 );
                        valor = query.FirstOrDefault();
                    }

                    if (valor.Equals(ClavesParametrosModulos.opcionParametroPagarPorHoras))
                    {
                        manejoPagoPorHora = true;
                    }
                    else
                    {
                        manejoPagoPorHora = false;
                    }

                    #endregion

                    #region  Manejo horas por
                    ////operadorSelect = new OperadorSelect(new List<CamposSelect>() { new CamposSelect("Cruce.valor", TipoFuncion.NINGUNO) });
                    query = (from cr in getSession().Set <Cruce>()
                             join pr in getSession().Set <Parametros>() on cr.parametros_ID equals pr.id
                             join ea in getSession().Set <ElementosAplicacion>() on cr.elementosAplicacion_ID equals ea.id
                             where pr.clave == (decimal)ClavesParametrosModulos.claveParametroManejarHorasPor && ea.clave.Equals(ClavesParametrosModulos.claveElementoAplicacionRazonSocial) && cr.claveElemento.Equals(listCamposWhere[listCamposWhere.Count - 1].valor)
                             select cr.valor
                             );

                    valor = query.FirstOrDefault();
                    ////listSubCamposWhere = new List<CamposWhere>() { new CamposWhere("Cruce.parametros.clave", claveParametroManejarHorasPor, OperadorComparacion.IGUAL, OperadorLogico.AND),
                    ////    new CamposWhere("Cruce.elementosAplicacion.clave", claveElementoAplicacionRazonSocial, OperadorComparacion.IGUAL, OperadorLogico.AND),
                    ////    new CamposWhere("Cruce.claveElemento", listCamposWhere[listCamposWhere.Count - 1].valor, OperadorComparacion.IGUAL, OperadorLogico.AND)};

                    ////mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionPendiente, TipoResultado.Unico, TipoOperacion.SELECT,
                    ////   "", operadorSelect, null, listSubCamposWhere, null, null, null);
                    ////if (mensajeResultado.noError != 0)
                    ////{
                    ////    return mensajeResultado;
                    ////}
                    ////valor = (string)mensajeResultado.resultado;
                    if (String.IsNullOrEmpty(valor))
                    {
                        // operadorSelect = new OperadorSelect(new List<CamposSelect>() { new CamposSelect("Parametros.valor", TipoFuncion.NINGUNO) });
                        // listSubCamposWhere = new List<CamposWhere>() { new CamposWhere("Parametros.clave", claveParametroManejarHorasPor, OperadorComparacion.IGUAL, OperadorLogico.AND),
                        // new CamposWhere("Parametros.modulo.clave", claveModuloGlobal, OperadorComparacion.IGUAL, OperadorLogico.AND)};

                        // mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionPendiente, TipoResultado.Unico, TipoOperacion.SELECT,
                        //"", operadorSelect, null, listSubCamposWhere, null, null, null);
                        // if (mensajeResultado.noError != 0)
                        // {
                        //     return mensajeResultado;
                        // }

                        // valor = (string)mensajeResultado.resultado;
                        query = (from pr in getSession().Set <Parametros>()
                                 join m in getSession().Set <Modulo>() on pr.modulo_ID equals m.id
                                 where pr.clave == (decimal)ClavesParametrosModulos.claveParametroManejarHorasPor && m.clave.Equals(ClavesParametrosModulos.claveModuloGlobal)
                                 select pr.valor
                                 );
                        valor = query.FirstOrDefault();
                    }
                    string opcionParametroHorasNaturales = "1";
                    if (valor.Equals(opcionParametroHorasNaturales))
                    {
                        manejoPorHoras = ManejoHorasPor.HORASNATURALES;
                    }
                    else
                    {
                        manejoPorHoras = ManejoHorasPor.HSM;
                    }
                    #endregion

                    #region  Manejo salario diario
                    ////operadorSelect = new OperadorSelect(new List<CamposSelect>() { new CamposSelect("Cruce.valor", TipoFuncion.NINGUNO) });

                    query = (from cr in getSession().Set <Cruce>()
                             join pr in getSession().Set <Parametros>() on cr.parametros_ID equals pr.id
                             join ea in getSession().Set <ElementosAplicacion>() on cr.elementosAplicacion_ID equals ea.id
                             where pr.clave == (decimal)ClavesParametrosModulos.claveParametroManejarSalarioDiarioPor && ea.clave.Equals(ClavesParametrosModulos.claveElementoAplicacionRazonSocial) && cr.claveElemento.Equals(listCamposWhere[listCamposWhere.Count - 1].valor)
                             select cr.valor
                             );

                    valor = query.FirstOrDefault();
                    ////listSubCamposWhere = new List<CamposWhere>() { new CamposWhere("Cruce.parametros.clave", claveParametroManejarSalarioDiarioPor, OperadorComparacion.IGUAL, OperadorLogico.AND),
                    ////    new CamposWhere("Cruce.elementosAplicacion.clave", claveElementoAplicacionRazonSocial, OperadorComparacion.IGUAL, OperadorLogico.AND),
                    ////    new CamposWhere("Cruce.claveElemento", listCamposWhere[listCamposWhere.Count - 1].valor, OperadorComparacion.IGUAL, OperadorLogico.AND)};

                    ////mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionPendiente, TipoResultado.Unico, TipoOperacion.SELECT,
                    ////   "", operadorSelect, null, listSubCamposWhere, null, null, null);
                    ////if (mensajeResultado.noError != 0)
                    ////{
                    ////    return mensajeResultado;
                    ////}
                    ////valor = (string)mensajeResultado.resultado;
                    if (String.IsNullOrEmpty(valor))
                    {
                        // operadorSelect = new OperadorSelect(new List<CamposSelect>() { new CamposSelect("Parametros.valor", TipoFuncion.NINGUNO) });
                        // listSubCamposWhere = new List<CamposWhere>() { new CamposWhere("Parametros.clave", claveParametroManejarSalarioDiarioPor, OperadorComparacion.IGUAL, OperadorLogico.AND),
                        // new CamposWhere("Parametros.modulo.clave", claveModuloGlobal, OperadorComparacion.IGUAL, OperadorLogico.AND)};

                        // mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionPendiente, TipoResultado.Unico, TipoOperacion.SELECT,
                        //"", operadorSelect, null, listSubCamposWhere, null, null, null);
                        // if (mensajeResultado.noError != 0)
                        // {
                        //     return mensajeResultado;
                        // }

                        // valor = (string)mensajeResultado.resultado;
                        query = (from pr in getSession().Set <Parametros>()
                                 join m in getSession().Set <Modulo>() on pr.modulo_ID equals m.id
                                 where pr.clave == (decimal)ClavesParametrosModulos.claveParametroManejarSalarioDiarioPor && m.clave.Equals(ClavesParametrosModulos.claveModuloGlobal)
                                 select pr.valor
                                 );
                        valor = query.FirstOrDefault();
                    }

                    if (valor.Equals(ClavesParametrosModulos.opcionParametroSalarioDiario))
                    {
                        manejoSalarioDiario = ManejoSalarioDiario.DIARIO;
                    }
                    else if (valor.Equals(ClavesParametrosModulos.opcionParametroSalarioSemanal))
                    {
                        manejoSalarioDiario = ManejoSalarioDiario.SEMANAL;
                    }
                    else if (valor.Equals(ClavesParametrosModulos.opcionParametroSalarioQuincenal))
                    {
                        manejoSalarioDiario = ManejoSalarioDiario.QUINCENAL;
                    }
                    else
                    {
                        manejoSalarioDiario = ManejoSalarioDiario.MENSUAL;
                    }
                    #endregion
                    getSession().Database.CurrentTransaction.Commit();

                    setSession(dbContext.context);
                    getSession().Database.BeginTransaction();
                    var queryPrincipal = (from p in getSession().Set <PlazasPorEmpleadosMov>()
                                          join pe in getSession().Set <PlazasPorEmpleado>() on p.plazasPorEmpleado_ID equals pe.id into pe_join
                                          from pe in pe_join.DefaultIfEmpty()
                                          join emp2 in getSession().Set <Empleados>() on pe.empleados_ID equals emp2.id into emp2_join
                                          from emp2 in emp2_join.DefaultIfEmpty()
                                          where
                                          (from m in getSession().Set <PlazasPorEmpleadosMov>()
                                           join pe2 in getSession().Set <PlazasPorEmpleado>() on m.plazasPorEmpleado_ID equals pe2.id into pe2_join
                                           from pe2 in pe2_join.DefaultIfEmpty()
                                           join rs in getSession().Set <RazonesSociales>() on pe2.razonesSociales_ID equals rs.id into rs_join
                                           from rs in rs_join.DefaultIfEmpty()
                                           join emp3 in getSession().Set <Empleados>() on pe2.empleados_ID equals emp3.id into emp3_join
                                           from emp3 in emp3_join.DefaultIfEmpty()
                                           where
                                           rs.clave.Equals(listCamposWhere[listCamposWhere.Count - 1].valor) &&
                                           (DateTime.Now >= m.fechaInicial && DateTime.Now <= pe2.fechaFinal)
                                           group new { pe2, m } by new
                    {
                        pe2.referencia
                    } into g
                                           select new
                    {
                        Column1 = g.Max(pp => pp.m.id)
                    }).Contains(new { Column1 = p.id })
                                          select new { p, pe, emp2 }

                                          );

                    for (int i = 0; i < listCamposWhere.Count - 2; i++)
                    {
                        if (!String.IsNullOrEmpty(listCamposWhere[i].campo))
                        {
                            if (listCamposWhere[i].campo.Equals("ClaveEmpleado"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal where subquery.emp2.clave.Equals(listCamposWhere[i].valor) select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("ClavePlazaEmpleado"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal where subquery.pe.referencia.Equals(listCamposWhere[i].valor) select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("FechaInicial"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal where subquery.p.fechaInicial == (DateTime)listCamposWhere[i].valor select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("FechaFinal"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal where subquery.pe.fechaFinal == (DateTime)listCamposWhere[i].valor select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("Horas"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal where subquery.p.horas == (int)listCamposWhere[i].valor select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("Importe"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal where subquery.p.importe == (double)listCamposWhere[i].valor select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("DescripcionCentroCosto"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal
                                                  join cc in getSession().Set <CentroDeCosto>() on subquery.p.centroDeCosto_ID equals cc.id into cc_join
                                                  from cc in cc_join.DefaultIfEmpty()
                                                  where cc.descripcion.Equals(listCamposWhere[i].valor)
                                                  select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("DescripcionPuesto"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal
                                                  join pt in getSession().Set <Puestos>() on subquery.p.puestos_ID equals pt.id into pt_join
                                                  from pt in pt_join.DefaultIfEmpty()
                                                  where pt.descripcion.Equals(listCamposWhere[i].valor)
                                                  select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("ClavePlaza"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal
                                                  join pz in getSession().Set <Plazas>() on subquery.p.plazas_ID equals pz.id into pz_join
                                                  from pz in pz_join.DefaultIfEmpty()
                                                  where pz.clave.Equals(listCamposWhere[i].valor)
                                                  select subquery);
                            }
                        }
                    }

                    var queryFinal = (from subquery in queryPrincipal
                                      orderby
                                      subquery.emp2.clave,
                                      subquery.p.fechaInicial
                                      select new DatosPlazasEmpleado()
                    {
                        plazasPorEmpleadosMov = subquery.p,
                        fechaIngreso =
                            ((from ingresos in getSession().Set <IngresosBajas>()
                              where
                              ingresos.id ==
                              (from ol in getSession().Set <IngresosBajas>()
                               where
                               ol.fechaIngreso <=
                               (from o2 in getSession().Set <IngresosBajas>()
                                join emp in getSession().Set <Empleados>() on ol.empleados_ID equals emp.id into emp_join
                                from emp in emp_join.DefaultIfEmpty()
                                where
                                o2.fechaBaja >= DateTime.Now &&
                                emp.clave == subquery.emp2.clave
                                select new
                        {
                            o2.fechaIngreso
                        }).Max(pp => pp.fechaIngreso)
                               select new
                        {
                            ol.id
                        }).Max(pp => pp.id)
                              select new
                        {
                            ingresos.fechaIngreso
                        }).First().fechaIngreso),
                        manejaPagosPorHora = manejoPagoPorHora ? 0 : 1,
                        manejoHorasPor = (int)manejoPorHoras,
                        manejoSalarioDiario = (int)manejoSalarioDiario
                    });

                    if (uniqueResult)
                    {
                        mensajeResultado.noError   = 0;
                        mensajeResultado.resultado = queryFinal.SingleOrDefault();
                    }
                    else
                    {
                        mensajeResultado.noError   = 0;
                        mensajeResultado.resultado = queryFinal.ToList();
                    }
                    getSession().Database.CurrentTransaction.Commit();
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("buscaCFDIEmpleadosFiltrado()1_Error: ").Append(ex));
                    mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                    mensajeResultado.error     = ex.GetBaseException().ToString();
                    mensajeResultado.resultado = null;
                    getSession().Database.CurrentTransaction.Rollback();
                }
            }

            return(mensajeResultado);
        }