Exemple #1
0
        private void generarBloquesCuestionario(Cuestionario cuest)
        {
            try
            {
                GestorDePuestos    clogPuestos = new GestorDePuestos();
                Puesto             puesto      = clogPuestos.getPuestos(evaluacion.id_puesto);
                List <Competencia> lcomp       = new List <Competencia>();
                puesto.Puntaje_Requerido.ToList().ForEach(pr => lcomp.Add(pr.Competencia));
                List <Factor> lfac = new List <Factor>();
                lcomp.ForEach(comp => comp.Factor.ToList().ForEach(fac => lfac.Add(fac)));
                List <Pregunta> preguntas = new List <Pregunta>();

                ItemBloque rel = new ItemBloque();

                foreach (Factor fac in lfac)
                {
                    Random rnd       = new Random(Guid.NewGuid().GetHashCode());
                    int    aleatorio = rnd.Next(0, fac.Pregunta.Count - 1);
                    preguntas.Add(fac.Pregunta.ToList()[aleatorio]);
                    int aleatorio1;
                    do
                    {
                        aleatorio1 = rnd.Next(0, fac.Pregunta.Count);
                    }while (aleatorio1 == aleatorio);
                    preguntas.Add(fac.Pregunta.ToList()[aleatorio1]);
                }

                int nroBloque = 0;

                List <Bloque> bloques = new List <Bloque>();

                Bloque bloq = new Bloque();
                bloq.id_cuestionario = cuest.id_cuestionario;
                bloq.num_bloque      = nroBloque + 1;
                bloques.Add(bloq);

                int i = 0;

                GestorTablaDeParametros clogTablaPar = new GestorTablaDeParametros();

                int cantidadPreguntasBloque = clogTablaPar.obtenerParametroEntero("PreguntasPorBloque");
                foreach (Pregunta preg in preguntas)
                {
                    if (i < cantidadPreguntasBloque)
                    {
                        ItemBloque resp = new ItemBloque();
                        resp.id_pregunta = preg.id_pregunta;
                        bloques[nroBloque].ItemBloque.Add(resp);
                    }
                    else
                    {
                        i = 0;
                        cuest.Bloque.Add(bloques[nroBloque]);
                        nroBloque++;
                        Bloque bloque = new Bloque();
                        bloque.id_cuestionario = cuest.id_cuestionario;
                        bloque.num_bloque      = nroBloque + 1;
                        bloques.Add(bloque);
                        ItemBloque resp = new ItemBloque();
                        resp.id_pregunta = preg.id_pregunta;
                        bloques[nroBloque].ItemBloque.Add(resp);
                    }
                    i++;
                }
                cuest.Bloque = bloques;
                this.agregarBloques(cuest, bloques);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemple #2
0
        public Cuestionario empezarCuestionario()
        {
            GestorDeEvaluacion clogEval = new GestorDeEvaluacion();
            GestorDeCandidato  clogCand = new GestorDeCandidato();
            GestorDePregunta   clogPreg = new GestorDePregunta();

            try
            {
                GestorTablaDeParametros clogTablaPar = new GestorTablaDeParametros();
                Cuestionario            cuest        = this.cargarCuestionario();
                if (cuest != null)
                {
                    int tiempoPermitido   = clogTablaPar.obtenerParametroEntero("TiempoTotalCuest");
                    int cantAccesosMaxima = clogTablaPar.obtenerParametroEntero("CantAccesosMaxima");
                    if ((DateTime.Now - cuest.fecha_inicio.Value).TotalSeconds < tiempoPermitido && cuest.cantidad_accesos < cantAccesosMaxima)
                    {
                        evaluacion = clogEval.getEvaluaciones(cuest.id_evaluacion.Value);
                        if (this.obtenerUltimoEstado(cuest) == "Activo")
                        {
                            int tiempoActivoPerm = clogTablaPar.obtenerParametroEntero("TiempoEstActivo");
                            if ((DateTime.Now - cuest.fecha_inicio.Value).TotalSeconds < tiempoActivoPerm)
                            {
                                generarBloquesCuestionario(cuest);
                                this.modificarEstado(cuest, "En Proceso");
                            }
                            else
                            {
                                this.modificarEstado(cuest, "Sin Contestar");
                                throw new ExceptionPersonalizada("Se ha excedido el tiempo para el estado Activo del cuestionario");
                            }
                            cuest = this.obtenerCuestionarioDB(cuest.id_cuestionario);
                        }
                        this.agregarAcceso(cuest);
                        return(cuest);
                    }
                    else
                    {
                        string estadoCuest = this.obtenerUltimoEstado(cuest);
                        if (estadoCuest == "Activo" || estadoCuest == "En Proceso")
                        {
                            this.modificarEstado(cuest, "Incompleto");
                        }
                        string mensaje = "\n";
                        if ((DateTime.Now - cuest.fecha_inicio.Value).TotalSeconds >= tiempoPermitido)
                        {
                            mensaje += "Se ha excedido el tiempo para completar el cuestiopnario.\n";
                        }
                        if (cuest.cantidad_accesos >= cantAccesosMaxima)
                        {
                            mensaje += "Se ha excedido la cantidad de accesos permitidos.\n";
                        }
                        mensaje = mensaje.Remove(mensaje.LastIndexOf('\n'));
                        throw new ExceptionPersonalizada(mensaje);
                    }
                }
                else
                {
                    throw new ExceptionPersonalizada("Error, el usuario no tiene un cuestionario a completar asociado a esa cuenta.\n");
                }
            }
            catch (Exception ex) {
                throw ex;
            }
        }