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