/// <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); }
/// <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); }