示例#1
0
        /// <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));
        }
示例#2
0
        /// <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));
        }
示例#3
0
 public ControladorFachada()
 {
     controladorAdministrativo = new ControladorAdministrativo();
     controladorExamen         = new ControladorExamen();
     controladorPreguntas      = new ControladorPreguntas();
 }