Exemple #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);
        }
Exemple #2
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);
        }
Exemple #3
0
        /// <summary>
        /// Este método se utiliza para realizar un login a partir de un nombre de usuario y su contraseña,
        /// y devolver la información necesaria.
        /// </summary>
        /// <param name="pNombreDeUsuario">El nombre del usuario.</param>
        /// <param name="pClave">La contraseña del usuario.</param>
        /// <returns></returns>
        public LoginDTO Login(string pNombreDeUsuario, string pClave)
        {
            LoginDTO loginDTO = new LoginDTO();
            Usuario  usuario  = ServiciosUsuario.LoginUsuario(pNombreDeUsuario, pClave);

            loginDTO.IdUsuario = usuario.UsuarioId;
            loginDTO.EsAdmin   = usuario.Admin;
            loginDTO.IdSesion  = ServiciosSesion.ObtenerSesionActiva(usuario.UsuarioId);
            return(loginDTO);
        }
Exemple #4
0
 /// <summary>
 /// Devuelve un resultado al verificar que la sesión actual no se exceda del tiempo límite
 /// </summary>
 /// <param name="pIdSesionActual">El ID de la sesión actual</param>
 public void FinTiempoLimite(int pIdSesionActual)
 {
     ServiciosSesion.CancelarSesion(pIdSesionActual);
 }
Exemple #5
0
 /// <summary>
 /// Éste método se utiliza para obtener una sesión en particular presente en la base de datos.
 /// </summary>
 /// <param name="pIdSesionActual">El ID de la sesión.</param>
 /// <returns></returns>
 public Sesion ObtenerSesion(int pIdSesionActual)
 {
     return(ServiciosSesion.ObtenerSesion(pIdSesionActual));
 }
 /// <summary>
 /// Devuelve una lista de las <paramref name="pTop"/> mejores sesiones, ordenadas según puntaje
 /// </summary>
 /// <param name="pTop">Cantidad de sesiones a mostrar en el ranking</param>
 /// <returns></returns>
 public List <Sesion> ObtenerTop(int pTop = 15)
 {
     return(ServiciosSesion.ObtenerTop(pTop));
 }
Exemple #7
0
 /// <summary>
 /// Este método se encarga de cancelar una sesión que se encuentre activa.
 /// </summary>
 /// <param name="pIdSesion">El ID de la sesión a cancelar.</param>
 public void CancelarSesion(int pIdSesion)
 {
     ServiciosSesion.CancelarSesion(pIdSesion);
 }
Exemple #8
0
 /// <summary>
 /// Crea y devuelve una nueva sesión de preguntas a partir de los parámetros seleccionados,
 /// obteniendo sus instancias de la base de datos.
 /// </summary>
 /// <param name="pUsuario">Id del usuario de la sesión</param>
 /// <param name="pCategoria">Id de la categoría de las preguntas</param>
 /// <param name="pDificultad">Id de la dificultad</param>
 /// <param name="pCantidad">Cantidad de preguntas de la sesión</param>
 /// <param name="pConjunto">Id del conjunto del que se obtienen las preguntas de la sesión</param>
 /// <returns></returns>
 public int IniciarSesion(int pUsuario, int pCategoria, int pDificultad, int pCantidad, int pConjunto)
 {
     return(ServiciosSesion.IniciarSesion(pUsuario, pConjunto, pDificultad, pCategoria, pCantidad));
 }