/// <summary> /// Crea un nuevo examen no asociado a un usuario /// </summary> /// <exception cref="ArgumentNullException"></exception> /// <exception cref="ArgumentException"> Cuando no existe un conjunto para la categoria y dificultad</exception> /// <param name="pCantidad"></param> /// <param name="pConjunto"></param> /// <param name="pCategoria"></param> /// <param name="pDificultad"></param> public static ExamenDTO InicializarExamen(string pCantidad, string pConjunto, string pCategoria, string pDificultad) { if (string.IsNullOrEmpty(pCantidad) || string.IsNullOrEmpty(pConjunto) || string.IsNullOrEmpty(pCategoria) || string.IsNullOrEmpty(pDificultad)) { throw new ArgumentNullException(); } Examen examen = new Examen(); var preguntas = ControladorExamen.GetPreguntasRandom(pCantidad, pConjunto, pCategoria, pDificultad); examen = ControladorExamen.AsociarExamenPregunta(examen, preguntas); using (var db = new TrabajoDbContext()) { using (var UoW = new UnitOfWork(db)) { var conjunto = UoW.RepositorioConjuntoPregunta.ObtenerConjuntoPorDificultadYCategoria(pConjunto, pDificultad, pCategoria); if (conjunto == null) { throw new ArgumentException(String.Format("No existe {0} para {1} y {2}", pConjunto, pCategoria, pDificultad)); } examen.TiempoLimite = (float)examen.CantidadPreguntas * conjunto.TiempoEsperadoRespuesta; } } return(new ExamenDTO(examen)); }
/// <summary> /// Da fin a un examen y lo guarda en la DB /// </summary> /// <param name="pExamen"></param> public static ExamenDTO FinalizarExamen(ExamenDTO pExamen) { Examen examen = new Examen(pExamen); int n = ControladorExamen.CantidadRespuestasCorrectas(examen); double factorDificultad = ControladorExamen.GetFactorDificultad(examen); examen.Finalizar(n, factorDificultad); using (var db = new TrabajoDbContext()) { using (var UoW = new UnitOfWork(db)) { var ex = UoW.ExamenRepository.Get(examen.Id); ex.Puntaje = examen.Puntaje; ex.TiempoUsado = examen.TiempoUsado; UoW.Complete(); } } return(new ExamenDTO(examen)); }
public ControladorFachada() { controladorAdministrativo = new ControladorAdministrativo(); controladorExamen = new ControladorExamen(); controladorPreguntas = new ControladorPreguntas(); }