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