/*
        * - RecuperarCompetencias tiene la misión de recuperar una competencia según su codigo
        *   que corresponde a la BASE DE DATOS
        */
        public Competencia recuperarCompetencias(string codigoCompetencia)
        {
            bool conexionExitosa;
            GestorCompetencias gestorCompetencias = new GestorCompetencias();
            Competencia competencia_obtenida = null;//Para el retorno de datos

            string consultaSql = "SELECT * FROM `competencia` AS comp "
                + "WHERE comp.codigo = '" + codigoCompetencia + "';";

            conexionExitosa = iniciarConexion();

            if (!conexionExitosa)
            {
                MessageBox.Show("No se realizo la conexion con la base de datos");
                terminarConexion();
                return null;
            }

            MySql.Data.MySqlClient.MySqlCommand comando;
            comando = ObjConexion.CreateCommand();
            comando.CommandText = consultaSql;

            MySqlDataReader reader = comando.ExecuteReader();

            if (!reader.HasRows)
            { //si el reader esta vacio, es qe no encontro a ese candidato
                terminarConexion();
                return null;
            }

            while (reader.Read())
            {
                string nomComp = reader["nombre"].ToString();

                //Verificamos que la competencia no este eliminada
                if (reader["eliminado"].ToString() == "")
                {
                    string cod = reader["codigo"].ToString();
                    string descrip = reader["descripcion"].ToString();

                    //Si no fue eliminada, la instaciamos con el gestor de evaluacion con los datos obtenidos
                    competencia_obtenida = gestorCompetencias.instanciarCompetencia(cod, nomComp, descrip);
                }
                else//Si fue eliminada, instanciamos una competencia con el atrubuto 'codigo' inicializado en ELIMINADA
                    competencia_obtenida = gestorCompetencias.instanciarCompetencia("ELIMINADA", nomComp, null);
            }

            terminarConexion();

            //Agregamos la lista de Factores para cada una de las competencias encontradas
            //Recuperamos los factores asociados a la competencia
            List<Factor> factoresList = recuperarFactores(competencia_obtenida);

            competencia_obtenida.ListaFactores = factoresList;

            return competencia_obtenida;
        }
        /*
         * - RecuperarCompetencias tiene la misión de recuperar todas las competencias que estan activas (no eliminadas)
         *   de la base de datos
         */
        public List<Competencia> recuperarCompetencias()
        {
            bool conexionExitosa;
            GestorCompetencias gestorCompetencias = new GestorCompetencias();
            List<Competencia> listaDeCompetencias = new List<Competencia>();//Para el retorno de datos

            string consultaSql = "SELECT * FROM competencia;";

            //llamamos al metodo "iniciar conexion"
            conexionExitosa = iniciarConexion();

            //Evaluamos si la conexion se realizo con exito
            if (!conexionExitosa)
            {
                MessageBox.Show("Fallo la conexion con la base de datos");
                terminarConexion();
                return null;
            }

            MySql.Data.MySqlClient.MySqlCommand comando;
            comando = ObjConexion.CreateCommand();

            comando.CommandText = consultaSql;

            MySqlDataReader reader = comando.ExecuteReader();

            if (!reader.HasRows)
            {
                //Si el reader esta vacio, es qe no encontro a ese candidato
                MessageBox.Show("No se encontro un candidato solicitado ");
                terminarConexion();
                return null;
            }

            while (reader.Read())
            {
                Competencia nuevaCompetencia;

                //Contemplamos la posibilidad de que este eliminada la competencia
                if (reader["eliminado"].ToString() == "")
                {
                    string cod = reader["codigo"].ToString();
                    string nomComp = reader["nombre"].ToString();
                    string descrip = reader["descripcion"].ToString();

                    //Si esta en condiciones de ser usada, se instancia una nueva competencia con los datos
                    nuevaCompetencia = gestorCompetencias.instanciarCompetencia(cod, nomComp, descrip, null);
                }
                else//Si fue eliminada se instancia una competencia con el codigo indicando esta situación
                    nuevaCompetencia = gestorCompetencias.instanciarCompetencia("ELIMINADA", null, null, null);

                listaDeCompetencias.Add(nuevaCompetencia);
            }

            return listaDeCompetencias;
        }