public void addRespueta(PreguntaEvaluada pregContestada, OpcionesEvaluadas opcionElegida)
 {
     Caracteristica elemento = new Caracteristica();
     elemento.dato1 = pregContestada;
     elemento.dato2 = opcionElegida;
     preguntasMasOpciones.Add(elemento);
 }
        public void addRespueta(PreguntaEvaluada pregContestada, OpcionesEvaluadas opcionElegida)
        {
            Caracteristica elemento = new Caracteristica();

            elemento.dato1 = pregContestada;
            elemento.dato2 = opcionElegida;
            preguntasMasOpciones.Add(elemento);
        }
        /*
         * - RecuperarCaracteristicasPuesto tiene la misión de recuperar todas las competencias que estan activas (no eliminadas)
         *   y ponederaciones asociades a un puesto puntual de la base de datos
         */
        public List<Caracteristica> recuperarCaracteristicasPuestoEv(PuestoEvaluado puestoEvAsociado, Cuestionario cuest_Asociado)
        {
            bool conexionExitosa;
            //Lista que se retornara con los datos finales de la busqueda
            List<Caracteristica> listaCaracteristicas = new List<Caracteristica>();
            //Lista de caracteristicas auxiliar para realizar la busqueda (almacena los ID de las competencias y ponderaciones)
            List<Caracteristica> listaRetornoBD = new List<Caracteristica>();

            Caracteristica elementoLista = new Caracteristica();

            //La consulta selecciona las competencias asociadas al puesto pasado como parametro con su correspondiente ponderacion
            string consultaSql = "SELECT `Competencia Evaluada_idCompetencia Evaluada`, `ponderacion` "
                + "FROM `puesto evaluado_competencia evaluada` ponderaciones "
                + "JOIN `puesto evaluado` p on (p.`codigo` = '" + puestoEvAsociado.Codigo + "' AND p.`idPuesto Evaluado` = ponderaciones.`Puesto Evaluado_idPuesto Evaluado`) "
                + "JOIN cuestionario c ON (c.clave = '" + cuest_Asociado.Clave + "' AND c.`Puesto Evaluado_idPuesto Evaluado` = p.`idPuesto Evaluado`)";

            conexionExitosa = iniciarConexion();

            if (!conexionExitosa)
            {
                elementoLista.dato1 = "No se realizo la conexion con la base de datos";//Se informa el error
                listaCaracteristicas.Add(elementoLista);
                terminarConexion();
                return listaCaracteristicas;
            }

            //Creamos un adaptador llamado "comando" para realizar la consultaSql que definimos mas arriba
            MySql.Data.MySqlClient.MySqlCommand comando;
            comando = ObjConexion.CreateCommand();
            //En el adaptador comando hacemos un asignacion en su atributo CommandText de la consultaSql
            comando.CommandText = consultaSql;

            //Se hace la ejecucion del comando con el metodo ExecuterReader
            //y se lo asigna a una variable reader que contendra los resultados de la busqueda en la base de datos
            MySqlDataReader reader = comando.ExecuteReader();

            if (!reader.HasRows)
            { //si el reader esta vacio, es qe no encontro a ese candidato
                elementoLista.dato1 = "El puesto no posee competencias para ser evaluado";
                listaCaracteristicas.Add(elementoLista);
                terminarConexion();
                return listaCaracteristicas;
            }

            while (reader.Read())
            {
                //Se recuperan los ID's de las competencias y los números correspondientes a las ponderaciones
                int idCompetenciaEv = Int32.Parse(reader["Competencia Evaluada_idCompetencia Evaluada"].ToString());
                int ponderacion = Int32.Parse(reader["ponderacion"].ToString());

                //Los datos obtenidos se almacena en un elemento de la lista
                elementoLista.dato1 = idCompetenciaEv;
                elementoLista.dato2 = ponderacion;
                listaRetornoBD.Add(elementoLista);//Agregamos el elemento a la lista
            }
            //Termanamos la conexion con la base de datos para evitar futuros conflictos con otras consultas
            terminarConexion();

            for (int i = 0; i < listaRetornoBD.Count; i++)
            {
                //Realizamos la busqueda de las competencias evaluadas por su ID (QUE ES UNICO)
                List<CompetenciaEvaluada> competenciaAs = recuperarCompetenciasEvaluadas((int)listaRetornoBD[i].dato1);
                if (competenciaAs[0] != null)
                {
                    //Si hubo algun retorno, instanciamos un objeto del tipo ponderacion
                    Ponderacion pondeAs = new Ponderacion((int)listaRetornoBD[i].dato2);
                    //Agregamos la competencia y la poneración a un elemento de la lista
                    elementoLista.dato1 = competenciaAs[0];
                    elementoLista.dato2 = pondeAs;
                    listaCaracteristicas.Add(elementoLista);//Agregamos el elemento a la lista de caracteristicas del puesto evaluado
                }
            }

            return listaCaracteristicas;
        }
        /*
         * *****************************************************************
         * Se reconstruyen o se trae a memoria el arbol de clases asociadas
         * que corresponden a un puesto puntual
         ******************************************************************

         * - RecuperarCaracteristicasPuesto tiene la misión de recuperar todas las competencias que estan activas (no eliminadas)
         *   y ponederaciones asociades a un puesto puntual de la base de datos

         */
        public List<Caracteristica> reconstruir_CaracteristicasPuesto(Puesto puestoAsociado)
        {
            bool conexionExitosa;
            bool competenciaEsEvaluable;
            //Lista que se retornara con los datos finales de la busqueda
            List<Caracteristica> listaCaracteristicas = new List<Caracteristica>();
            //Lista de caracteristicas auxiliar para realizar la busqueda (almacena los ID de las competencias y ponderaciones)
            List<Caracteristica> listaRetornoBD = new List<Caracteristica>();
            string errorCompetenciaNoEvaluable = "";
            Caracteristica elementoLista = new Caracteristica();

            //La consulta selecciona las competencias asociadas al puesto pasado como parametro con su correspondiente ponderacion
            string consultaSql = "SELECT `Competencia_codigo`, `ponderacion` "
            + "FROM `puesto_competencia` ponderaciones "
            + "JOIN `puesto` p on (p.`codigo` = '" + puestoAsociado.Codigo + "') "
            + "WHERE p.codigo = ponderaciones.`Puesto_codigo`;";

            conexionExitosa = iniciarConexion();

            if (!conexionExitosa)
            {
                elementoLista.dato1 = "No se realizo la conexion con la base de datos";//Se informa el error
                listaCaracteristicas.Add(elementoLista);
                terminarConexion();
                return listaCaracteristicas;
            }

            //Creamos un adaptador llamado "comando" para realizar la consultaSql que definimos mas arriba
            MySql.Data.MySqlClient.MySqlCommand comando;
            comando = ObjConexion.CreateCommand();
            //En el adaptador comando hacemos un asignacion en su atributo CommandText de la consultaSql
            comando.CommandText = consultaSql;

            //Se hace la ejecucion del comando con el metodo ExecuterReader
            //y se lo asigna a una variable reader que contendra los resultados de la busqueda en la base de datos
            MySqlDataReader reader = comando.ExecuteReader();

            if (!reader.HasRows)
            { //si el reader esta vacio, es qe no encontro a ese candidato
                elementoLista.dato1 = "El puesto no posee competencias para ser evaluado";
                listaCaracteristicas.Add(elementoLista);
                terminarConexion();
                return listaCaracteristicas;
            }

            while (reader.Read())
            {
                //Se recuperan los ID's de las competencias y los números correspondientes a las ponderaciones
                string idCompetencia = reader["Competencia_codigo"].ToString();
                int ponderacion = Int32.Parse(reader["ponderacion"].ToString());

                //Los datos obtenidos se almacena en un elemento de la lista
                elementoLista.dato1 = idCompetencia;
                elementoLista.dato2 = ponderacion;
                listaRetornoBD.Add(elementoLista);//Agregamos el elemento a la lista
            }
            //Termanamos la conexion con la base de datos para evitar futuros conflictos con otras consultas
            terminarConexion();

            for (int i = 0; i < listaRetornoBD.Count; i++)
            {
                competenciaEsEvaluable = false;
                //Realizamos la busqueda de las competencias evaluadas por su ID (QUE ES UNICO)
                Competencia competenciaAs = recuperarCompetencias((string)listaRetornoBD[i].dato1);
                if (competenciaAs != null)
                {
                    if (competenciaAs.ListaFactores != null)
                    {
                        for (int j = 0; j < competenciaAs.ListaFactores.Count; j++)
                        {
                            if (competenciaAs.ListaFactores[j].Codigo == "INSUFICIENTES PREG")
                            {
                                competenciaAs.ListaFactores.Remove(competenciaAs.ListaFactores[j]);
                                j--;
                            }
                            else
                                competenciaEsEvaluable = true;
                        }

                        if (!competenciaEsEvaluable)
                            errorCompetenciaNoEvaluable += "\n" + competenciaAs.Nombre;
                        else
                        {
                            //Si hubo algun retorno, instanciamos un objeto del tipo ponderacion
                            Ponderacion pondeAs = new Ponderacion((int)listaRetornoBD[i].dato2);
                            //Agregamos la competencia y la poneración a un elemento de la lista
                            elementoLista.dato1 = competenciaAs;
                            elementoLista.dato2 = pondeAs;
                            listaCaracteristicas.Add(elementoLista);//Agregamos el elemento a la lista de caracteristicas del puesto evaluado
                        }
                    }
                    else
                        errorCompetenciaNoEvaluable += "\n" + competenciaAs.Nombre;
                }
            }

            if (!(errorCompetenciaNoEvaluable == ""))
            {
                MessageBox.Show("La(s) Competencia(s) " + errorCompetenciaNoEvaluable + "\nno pueden ser evaluada(s)", "INFORMACION", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return null;
            }
            else
                return listaCaracteristicas;
        }