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