public async Task <ResultadoEvaluacionSindicalizado> GetByPeriodo(BusquedaNivel parametros)
        {
            try
            {
                ResultadoEvaluacionSindicalizado resultadoEvaluacion = new ResultadoEvaluacionSindicalizado();

                //CalificacionSindRepository repCalificacionSindicalizados = new CalificacionSindRepository();
                //IEnumerable<CalificacionSind> calificaciones = await repCalificacionSindicalizados.GetAll();

                var entities = await _db.listadoEmpleadosSind.AsNoTracking().FirstOrDefaultAsync(e => e.NoEmpleado == parametros.claveEmpleado);

                EvaluacionEmpleadoSindRepository repEvaluacionSindicalizados = new EvaluacionEmpleadoSindRepository();
                EvaluacionEmpleadosSind          evaluacion = await repEvaluacionSindicalizados.GetByPeriodo(entities.ListaId, parametros.periodo);

                RegistroEvaluacionSindRepository repRegistroEvaluacion = new RegistroEvaluacionSindRepository();


                resultadoEvaluacion.idEmpleado         = entities;
                resultadoEvaluacion.RegistroEvaluacion = evaluacion;
                resultadoEvaluacion.Competencias       = await repRegistroEvaluacion.CompetenciasEvaluadas(evaluacion.EvaluacionId);

                return(resultadoEvaluacion);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
        public async Task <Object> competencias(string noEmpleado)
        {
            PersonasRepository ObjetoPersona = new PersonasRepository();
            Personas           persona       = await ObjetoPersona.GetByClave(noEmpleado);

            int datosConductuales = 0;
            int datostecnicas     = 0;

            try
            {
                var resultado = new Object();


                if (persona.TipoPersonalId.Equals("SIN") || persona.TipoPersonalId.Equals("ADM"))
                {
                    var entities = await _db.listadoEmpleadosSind.AsNoTracking().FirstOrDefaultAsync(e => e.NoEmpleado == noEmpleado);

                    if (entities != null)
                    {
                        EvaluacionEmpleadoSindRepository repEvaluacionSindicalizados = new EvaluacionEmpleadoSindRepository();
                        EvaluacionEmpleadosSind          evaluacion = await repEvaluacionSindicalizados.Get(entities.ListaId);

                        RegistroEvaluacionSindRepository repRegistroEvaluacion = new RegistroEvaluacionSindRepository();

                        ResultadoEvaluacionSindicalizado resultadoEvaluacion = new ResultadoEvaluacionSindicalizado();
                        resultadoEvaluacion.idEmpleado         = entities;
                        resultadoEvaluacion.RegistroEvaluacion = evaluacion;
                        resultadoEvaluacion.Competencias       = await repRegistroEvaluacion.CompetenciasEvaluadas(evaluacion.EvaluacionId);


                        EvaluacionEmpleadosCompetenciasConductuales evaluacionConductualDoble = new EvaluacionEmpleadosCompetenciasConductuales();
                        EvaluacionConductualesRepository            evaluacionRepository      = new EvaluacionConductualesRepository();
                        DetalleEvaluacionConductualesRepository     detalleRepository         = new DetalleEvaluacionConductualesRepository();

                        evaluacionConductualDoble = await evaluacionRepository.GetTopByPersona(noEmpleado);

                        if (evaluacionConductualDoble != null)
                        {
                            var detalleEvaluacion = await detalleRepository.GetByClaveEvaluacionResultado(evaluacionConductualDoble.claveEvaluacion);

                            if (detalleEvaluacion != null)
                            {
                                var conductual = new { datosEvaluado = evaluacionConductualDoble, competencias = detalleEvaluacion };
                                resultado = new { TipoPersonalId = persona.TipoPersonalId, info = resultadoEvaluacion, conductuales = conductual, incluyeConductuales = 2, incluyeSindicalizados = 1, incluyeTecnicas = 0 };
                            }
                            else
                            {
                                resultado = new { TipoPersonalId = persona.TipoPersonalId, info = resultadoEvaluacion, incluyeConductuales = 0, incluyeSindicalizados = 1, incluyeTecnicas = 0 };
                            }
                        }
                        else
                        {
                            resultado = new { TipoPersonalId = persona.TipoPersonalId, info = resultadoEvaluacion, incluyeConductuales = 0, incluyeSindicalizados = 1, incluyeTecnicas = 0 };
                        }
                    }
                    else
                    {
                        EvaluacionEmpleadosCompetenciasConductuales evaluacionConductual = new EvaluacionEmpleadosCompetenciasConductuales();
                        EvaluacionConductualesRepository            evaluacionRepository = new EvaluacionConductualesRepository();
                        DetalleEvaluacionConductualesRepository     detalleRepository    = new DetalleEvaluacionConductualesRepository();

                        var conductual = new object();

                        evaluacionConductual = await evaluacionRepository.GetTopByPersona(noEmpleado);

                        if (evaluacionConductual != null)
                        {
                            var detalleEvaluacion = await detalleRepository.GetByClaveEvaluacionResultado(evaluacionConductual.claveEvaluacion);

                            conductual = new { datosEvaluado = evaluacionConductual, competencias = detalleEvaluacion };

                            if (detalleEvaluacion != null)
                            {
                                datosConductuales = 1;
                            }
                            else
                            {
                                datosConductuales = 0;
                            }
                        }


                        //DATOS DEL PERSONAL DE BASE
                        resultado = new { TipoPersonalId = persona.TipoPersonalId, conductuales = conductual, incluyeConductuales = datosConductuales, incluyeSindicalizados = 0, incluyeTecnicas = 0 };
                    }
                }
                else
                {
                    datosConductuales = 0;
                    datostecnicas     = 0;


                    EvaluacionEmpleadosCompetenciasConductuales evaluacionConductual = new EvaluacionEmpleadosCompetenciasConductuales();
                    EvaluacionConductualesRepository            evaluacionRepository = new EvaluacionConductualesRepository();
                    DetalleEvaluacionConductualesRepository     detalleRepository    = new DetalleEvaluacionConductualesRepository();

                    var conductual = new object();

                    evaluacionConductual = await evaluacionRepository.GetTopByPersona(noEmpleado);

                    if (evaluacionConductual != null)
                    {
                        var detalleEvaluacion = await detalleRepository.GetByClaveEvaluacionResultado(evaluacionConductual.claveEvaluacion);

                        conductual = new { datosEvaluado = evaluacionConductual, competencias = detalleEvaluacion };

                        if (detalleEvaluacion != null)
                        {
                            datosConductuales = 1;
                        }
                        else
                        {
                            datosConductuales = 0;
                        }
                    }


                    EvaluacionEmpleadosCompetenciasTecnicas eval = new EvaluacionEmpleadosCompetenciasTecnicas();
                    EvaluacionTecnicasRepository            evaluacionTecRepository = new EvaluacionTecnicasRepository();
                    DetalleEvaluacionTecnicasRepository     detalleTecRepository    = new DetalleEvaluacionTecnicasRepository();

                    eval = await evaluacionTecRepository.GetTopByPersona2(noEmpleado);

                    var tecnica = new Object();
                    if (eval != null)
                    {
                        var detalleEvaluacionTec = await detalleTecRepository.GetByEmpleado2(noEmpleado, eval.idPeriodo);

                        tecnica = new { datosEvaluado = eval, competencias = detalleEvaluacionTec };

                        if (detalleEvaluacionTec != null)
                        {
                            datostecnicas = 1;
                        }
                        else
                        {
                            datostecnicas = 0;
                        }
                    }



                    //DATOS DEL PERSONAL DE BASE
                    resultado = new { TipoPersonalId = persona.TipoPersonalId, conductuales = conductual, tecnicas = tecnica, incluyeConductuales = datosConductuales, incluyeSindicalizados = 0, incluyeTecnicas = datostecnicas };
                }

                return(resultado);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
        public async Task <Object> misEvaluacionesConductuales(BusquedaNivel parametros)
        {
            PersonasRepository ObjetoPersona = new PersonasRepository();
            Personas           persona       = await ObjetoPersona.GetByClave(parametros.claveEmpleado);

            try
            {
                var resultado = new Object();

                if (persona.TipoPersonalId.Equals("SIN") || persona.TipoPersonalId.Equals("ADM"))
                {
                    var entities = await _db.listadoEmpleadosSind.AsNoTracking().FirstOrDefaultAsync(e => e.NoEmpleado == parametros.claveEmpleado);

                    if (entities != null)
                    {
                        EvaluacionEmpleadoSindRepository repEvaluacionSindicalizados = new EvaluacionEmpleadoSindRepository();
                        EvaluacionEmpleadosSind          evaluacion = await repEvaluacionSindicalizados.GetByPeriodo(entities.ListaId, parametros.periodo);

                        RegistroEvaluacionSindRepository repRegistroEvaluacion = new RegistroEvaluacionSindRepository();

                        ResultadoEvaluacionSindicalizado resultadoEvaluacion = new ResultadoEvaluacionSindicalizado();
                        resultadoEvaluacion.idEmpleado         = entities;
                        resultadoEvaluacion.RegistroEvaluacion = evaluacion;
                        resultadoEvaluacion.Competencias       = await repRegistroEvaluacion.CompetenciasEvaluadas(evaluacion.EvaluacionId);

                        resultado = new { TipoPersonalId = persona.TipoPersonalId, info = resultadoEvaluacion };
                    }
                    else
                    {
                        EvaluacionEmpleadosCompetenciasConductuales evaluacionConductual = new EvaluacionEmpleadosCompetenciasConductuales();
                        EvaluacionConductualesRepository            evaluacionRepository = new EvaluacionConductualesRepository();
                        DetalleEvaluacionConductualesRepository     detalleRepository    = new DetalleEvaluacionConductualesRepository();

                        var conductual = new object();

                        evaluacionConductual = await evaluacionRepository.GetPeriodoPersona(parametros);

                        if (evaluacionConductual != null)
                        {
                            var detalleEvaluacion = await detalleRepository.GetByClaveEvaluacionResultado(evaluacionConductual.claveEvaluacion);

                            conductual = new { datosEvaluado = evaluacionConductual, competencias = detalleEvaluacion };

                            //DATOS DEL PERSONAL DE BASE
                            resultado = new { TipoPersonalId = persona.TipoPersonalId, conductuales = conductual };
                        }
                    }
                }
                else
                {
                    EvaluacionEmpleadosCompetenciasConductuales evaluacionConductual = new EvaluacionEmpleadosCompetenciasConductuales();
                    EvaluacionConductualesRepository            evaluacionRepository = new EvaluacionConductualesRepository();
                    DetalleEvaluacionConductualesRepository     detalleRepository    = new DetalleEvaluacionConductualesRepository();

                    var conductual = new object();

                    evaluacionConductual = await evaluacionRepository.GetPeriodoPersona(parametros);

                    if (evaluacionConductual != null)
                    {
                        var detalleEvaluacion = await detalleRepository.GetByClaveEvaluacionResultado(evaluacionConductual.claveEvaluacion);

                        conductual = new { datosEvaluado = evaluacionConductual, competencias = detalleEvaluacion };

                        //DATOS DEL PERSONAL DE BASE
                        resultado = new { TipoPersonalId = persona.TipoPersonalId, conductuales = conductual };
                    }
                    else
                    {
                        //var entities = await _db.listadoEmpleadosSind.AsNoTracking().FirstOrDefaultAsync(e => e.NoEmpleado == parametros.claveEmpleado);

                        //if (entities != null)
                        //{
                        //    EvaluacionEmpleadoSindRepository repEvaluacionSindicalizados = new EvaluacionEmpleadoSindRepository();
                        //    EvaluacionEmpleadosSind evaluacion = await repEvaluacionSindicalizados.GetByPeriodo(entities.ListaId, parametros.periodo);
                        //    RegistroEvaluacionSindRepository repRegistroEvaluacion = new RegistroEvaluacionSindRepository();

                        //    ResultadoEvaluacionSindicalizado resultadoEvaluacion = new ResultadoEvaluacionSindicalizado();
                        //    resultadoEvaluacion.idEmpleado = entities;
                        //    resultadoEvaluacion.RegistroEvaluacion = evaluacion;
                        //    resultadoEvaluacion.Competencias = await repRegistroEvaluacion.CompetenciasEvaluadas(evaluacion.EvaluacionId);

                        //    resultado = new { TipoPersonalId = "SIN", info = resultadoEvaluacion };
                        //}
                    }
                }

                return(resultado);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }