public Pregunta(string preg, string nom, Factor fact, OpciondeRespuesta op_res = null, string des = null)
 {
     Preg_aRealizar = preg;
     FactorAsociado = fact;
     Nombre = nom;
     Descripcion = des;
     OpcionRespuesta_Asociada = op_res;
     ListaOpciones = new List<Opciones>();
 }
 public void addFactor(Factor fact)
 {
     listaFactores.Add(fact);
 }
 /*
  * 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;
 }
 /*
  * 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 Factor instanciarFactor(string codigo, string nombre, Competencia competenciaAsociada, string descripcion = null, int nrOrden = 0)
 {
     Factor nuevoFactor = new Factor(codigo, nombre, competenciaAsociada, descripcion, nrOrden);
     return nuevoFactor;
 }
        /*
         * - RecuperarPreguntas evaluadas tiene la misión de recuperar Las preguntas evaluadas para Un factor puntual
         *   de a la BASE DE DATOS
         */
        public List<Pregunta> recuperarPreguntas(Factor factorAsociado)
        {
            bool conexionExitosa;
            GestorPreguntas gestorPreguntas = new GestorPreguntas();
            List<Pregunta> listaDePreguntas = new List<Pregunta>();

            string consultaSql = "SELECT p.nombre, p.codigo, p.pregunta, p.`Opcion_de_respuesta` "
            + "FROM `pregunta` AS p "
            + "JOIN `factor` AS fac on (fac.`codigo` = '" + factorAsociado.Codigo + "' AND p.Factor_codigo = fac.codigo);";

            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)
            {

                terminarConexion();
                return null;
            }

            List<string> Listacodigo_OpRespuesta = new List<string>();

            while (reader.Read())
            {
                string cod = reader["codigo"].ToString();
                string nomPreg = reader["nombre"].ToString();
                string preg = reader["pregunta"].ToString();
                string codigo_OpRespuesta = reader["Opcion_de_respuesta"].ToString();

                Listacodigo_OpRespuesta.Add(codigo_OpRespuesta);
                Pregunta pregunta = gestorPreguntas.instanciarPregunta(preg, nomPreg, factorAsociado);
                listaDePreguntas.Add(pregunta);
            }

            terminarConexion();

            //Agregamos la listas de Opciones de respuesta y las opciones para cada una de las preguntas encontradas
            for (int i = 0; i < listaDePreguntas.Count; i++)
            {
                List<Opciones> opciones = new List<Opciones>();

                    //Se recuperan la opcion de respuesta de la pregunta
                    OpciondeRespuesta opcionesRespuesta = recuperarOpcionRespuesta(Listacodigo_OpRespuesta[i]);
                    if (opcionesRespuesta != null)
                    {
                        //Recuperamos la opcion que contiene la poneracion para esa pregunta
                        opciones = recuperarOpciones(listaDePreguntas[i]);
                        //Completamos el objeto Opciones_de_respuestas_evaludas con la lista de opciones
                        opcionesRespuesta.ListaOpciones = opciones;
                        //Realizamos la asignacion de la opcion de respuesta y las opciones corespondientes para la pregunta
                        listaDePreguntas[i].OpcionRespuesta_Asociada = opcionesRespuesta;
                        listaDePreguntas[i].ListaOpciones = opciones;
                    }
            }

            return listaDePreguntas;
        }