/// <summary> /// Este método se utiliza para actualizar los datos de una sesión existente en la base /// de datos al responder una pregunta. /// </summary> /// <param name="pIdSesion">El ID de la sesión.</param> /// <param name="pSegundosTranscurridos">Los segundos transcurridos hasta la respuesta.</param> /// <param name="pEsCorrecta">Si la respuesta fue correcta o no.</param> /// <returns></returns> public static bool Responder(int pIdSesion, double pSegundosTranscurridos, bool pEsCorrecta, int pIdPregunta) { using (var bDbContext = new ShockQuizDbContext()) { using (UnitOfWork bUoW = new UnitOfWork(bDbContext)) { Sesion sesionActual = bUoW.RepositorioSesion.ObtenerSesionId(pIdSesion); sesionActual.SegundosTranscurridos += pSegundosTranscurridos; bool resultado = sesionActual.Responder(pEsCorrecta, pIdPregunta); bUoW.GuardarCambios(); return(resultado); } } }
/// <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 static void CancelarSesion(int pIdSesion) { using (var bDbContext = new ShockQuizDbContext()) { using (UnitOfWork bUoW = new UnitOfWork(bDbContext)) { Sesion sesionActiva = bUoW.RepositorioSesion.ObtenerSesionId(pIdSesion); sesionActiva.FechaFin = DateTime.Now; foreach (Pregunta pregunta in sesionActiva.Preguntas.ToList()) { sesionActiva.Responder(false, pregunta.PreguntaId); } sesionActiva.SesionFinalizada = true; bUoW.GuardarCambios(); } } }