Ejemplo n.º 1
0
        /// <summary>
        /// Inicia el temporizador y devuelve un PreguntaDTO correspondiente a la siguiente de la sesión
        /// </summary>
        /// <param name="pOnTimeFinishedHandler">La acción a realizar cuando se agota el tiempo límite</param>
        /// <param name="pOnTickTimer">La acción a realizar por cada tick</param>
        /// <param name="pIdSesionActual">El ID de la sesión actual</param>
        /// <returns></returns>
        public PreguntaDTO ObtenerPreguntaYRespuestas(Action pOnTimeFinishedHandler, Action <int> pOnTickTimer, int pIdSesionActual)
        {
            Random      random = new Random();
            PreguntaDTO preguntaYRespuestas = new PreguntaDTO();
            Sesion      sesionActual        = ServiciosSesion.ObtenerSesion(pIdSesionActual);
            Pregunta    pregunta            = ServiciosPregunta.ObtenerPregunta(sesionActual.ObtenerIdSiguientePregunta());

            int tiempoRestante = Convert.ToInt32(sesionActual.TiempoLimite() - sesionActual.SegundosTranscurridos);

            ayudanteTimer = new AyudanteTimer(tiempoRestante, pOnTimeFinishedHandler, pOnTickTimer);

            preguntaYRespuestas.IdPregunta = pregunta.PreguntaId;
            preguntaYRespuestas.Pregunta   = pregunta.Nombre;

            RespuestaDTO        respuestaActualDTO;
            List <RespuestaDTO> listaDeRespuestas = new List <RespuestaDTO>();

            foreach (Respuesta respuesta in pregunta.Respuestas)
            {
                respuestaActualDTO             = new RespuestaDTO();
                respuestaActualDTO.IdRespuesta = respuesta.RespuestaId;
                respuestaActualDTO.Respuesta   = respuesta.DefRespuesta;
                listaDeRespuestas.Add(respuestaActualDTO);
            }

            preguntaYRespuestas.Respuestas = listaDeRespuestas.OrderBy(x => random.Next()).ToList();

            return(preguntaYRespuestas);
        }
        /// <summary>
        /// Este método se utiliza para almacenar una lista de preguntas obtenida a partir de un conjunto.
        /// </summary>
        /// <param name="pIdConjunto">El ID del conjunto cuyas preguntas se obtienen.</param>
        /// <param name="pCantidad">La cantidad de preguntas.</param>
        public void AlmacenarPreguntas(int pIdConjunto, int pCantidad)
        {
            Conjunto        conjunto  = ServiciosConjunto.ObtenerConjunto(pIdConjunto);
            List <Pregunta> preguntas = conjunto.ObtenerPreguntas(pCantidad);

            ServiciosPregunta.AlmacenarPreguntas(preguntas, pIdConjunto);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///Devuelve el resultado de responder a una pregunta
        /// </summary>
        /// <param name="pIdSesionActual">El ID de la sesión actual</param>
        /// <param name="pIdPregunta">El ID de la pregunta a responder</param>
        /// <param name="pIdRespuesta">El ID de la respuesta seleccionada por el usuario</param>
        /// <returns></returns>
        public ResultadoRespuesta Responder(int pIdSesionActual, int pIdPregunta, int pIdRespuesta)
        {
            DetenerTimer();
            ResultadoRespuesta resultado = ServiciosPregunta.Responder(pIdPregunta, pIdRespuesta);

            resultado.FinSesion = ServiciosSesion.Responder(pIdSesionActual, ayudanteTimer.TiempoTranscurrido, resultado.EsCorrecta, pIdPregunta);
            return(resultado);
        }