/*
  * La mision que justifica la existencia de los gestores es hacer de "interfaz" entre las ENTIDADES y el resto del sistema
  * Por esto el gestor debe tener la responsabilidad de instanciar la/s que le corresponde gestionar
  */
 public Pregunta instanciarPregunta(string pregunta_, string nombre, Factor factorAsociado, OpciondeRespuesta opcionRes_Asociada = null, string descripcion = null)
 {
     Pregunta nuevoPregunta = new Pregunta(pregunta_, nombre, factorAsociado, opcionRes_Asociada, descripcion);
     return nuevoPregunta;
 }
 public void addPregunta(Pregunta preg)
 {
     listaPreguntas.Add(preg);
 }
        /*
         * - RecuperarOpcionesEvaludas tiene la misión de recuperar las opciones evaluadas para una pregunta puntual
         *   de a la BASE DE DATOS
         */
        public List<Opciones> recuperarOpciones(Pregunta pregAsociada)
        {
            bool conexionExitosa;
            GestorOpRespuesta gestionOpciones = new GestorOpRespuesta();
            List<Opciones> listaDeOpciones = new List<Opciones>();//Para el retorno de datos

            string consultaSql = "SELECT DISTINCT op.nombre, pr_op.ponderacion, opr_op.ordenDeVisualizacion "
            + "FROM `pregunta_opciones` AS pr_op "
            + "JOIN `pregunta` AS pr on (pr_op.Pregunta_codigo = pr.codigo AND pr.nombre = '" + pregAsociada.Nombre + "' AND pr.pregunta = '" + pregAsociada.Preg_aRealizar + "') "
            + "JOIN `opciones` op on (pr_op.Opciones_idopciones = op.idopciones) "
            + "JOIN `opcion de respuesta_opciones` opr_op on (pr_op.Opciones_idopciones = opr_op.Opciones_idopciones) "
            + "GROUP BY nombre;";

            //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
                terminarConexion();
                return null;
            }

            while (reader.Read())
            {
                //opc.nombre, opR_opc.ordenDeVisualizacion, pr.`idPregunta Evaluada`
                string nomOpcion = reader["nombre"].ToString();
                int ponderacion = Int32.Parse(reader["ponderacion"].ToString());
                int ordenVisualizacion = Int32.Parse(reader["ordenDeVisualizacion"].ToString());

                Opciones preguntaEv = gestionOpciones.instanciarOpcion(nomOpcion, ponderacion, ordenVisualizacion);
                listaDeOpciones.Add(preguntaEv);
            }

            terminarConexion();

            return listaDeOpciones;
        }