Ejemplo n.º 1
0
        //
        // GET: /Admin/Trim/

        public ActionResult Trim(TipoOlimpiada tipo, int tiempo, int dia, string omi = "")
        {
            if (!esAdmin())
            {
                return(RedirectTo(Pagina.ERROR, 401));
            }

            Olimpiada o;

            if (String.IsNullOrEmpty(omi))
            {
                o = Olimpiada.obtenerMasReciente();
            }
            else
            {
                o = Olimpiada.obtenerOlimpiadaConClave(omi, TipoOlimpiada.OMI);
            }

            if (o == null)
            {
                return(RedirectTo(Pagina.ERROR, 401));
            }

            DetalleLugar.clean(o.numero, tipo, dia);
            DetalleLugar.trim(o.numero, tipo, tiempo, dia);

            DetallePuntos.clean(o.numero, tipo, dia);
            DetallePuntos.trim(o.numero, tipo, tiempo, dia);

            return(RedirectTo(Pagina.ADMIN_SCOREBOARD));
        }
Ejemplo n.º 2
0
        //
        // GET: /Registro/Delegacion

        public ActionResult Delegacion(string omi = null, string estado = null, TipoOlimpiada tipo = TipoOlimpiada.OMI)
        {
            if (omi == null)
            {
                omi = Olimpiada.obtenerMasReciente(yaEmpezada: false).numero;
            }

            failSafeViewBag();
            Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(omi, tipo);

            ViewBag.omi = o == null ? new Olimpiada() : o;
            if (o == null || !tienePermisos(o.registroActivo || o.registroSedes, estado))
            {
                ViewBag.permisos = true;
                return(View(new List <MiembroDelegacion>()));
            }

            Persona p = getUsuario();

            ViewBag.invitaciones = false;

            if (!p.esSuperUsuario())
            {
                if (estado == null)
                {
                    return(RedirectTo(Pagina.HOME));
                }
                Estado e = Estado.obtenerEstadoConClave(estado);
                ViewBag.estado       = e;
                ViewBag.invitaciones =
                    Archivos.existeArchivo(Archivos.Folder.INVITACIONES, omi + "\\" + estado + "\\" + e.ISO + "-1.pdf") ||
                    Archivos.existeArchivo(Archivos.Folder.INVITACIONES, omi + "\\" + estado + "\\S-" + e.ISO + "-1.pdf") ||
                    Archivos.existeArchivo(Archivos.Folder.INVITACIONES, omi + "\\" + estado + "\\P-" + e.ISO + "-1.pdf");
            }

            List <MiembroDelegacion> registrados = MiembroDelegacion.obtenerMiembrosDelegacion(omi, p.esSuperUsuario() ? null : estado, o.tipoOlimpiada);

            ViewBag.hayResultados = Resultados.hayResultadosParaOMI(o.numero);
            if (o.esOnline)
            {
                List <SedeOnline> sedes = SedeOnline.obtenerSedes(omi, p.esSuperUsuario() ? null : estado, tipo);
                Dictionary <int, List <MiembroDelegacion> > miembrosPorSede = new Dictionary <int, List <MiembroDelegacion> >();
                foreach (SedeOnline sede in sedes)
                {
                    List <MiembroDelegacion> miembrosEnSede = MiembroDelegacion.obtenerMiembrosEnSede(sede.clave);
                    miembrosPorSede.Add(sede.clave, miembrosEnSede);
                }
                ViewBag.miembrosPorSede = miembrosPorSede;
                ViewBag.sedes           = sedes;
            }

            return(View(registrados));
        }
Ejemplo n.º 3
0
        //
        // GET: /Olimpiada/Estados/

        public ActionResult Estados(string clave = null, TipoOlimpiada tipo = TipoOlimpiada.OMI)
        {
            if (tipo != TipoOlimpiada.OMI)
            {
                return(RedirectTo(Pagina.ERROR, 404));
            }

            Olimpiada o;

            if (clave == null)
            {
                o     = Olimpiada.obtenerMasReciente();
                clave = o.numero;
                tipo  = o.tipoOlimpiada;
            }
            else
            {
                o = Olimpiada.obtenerOlimpiadaConClave(clave, tipo);
            }

            if (o == null || o.numero == Olimpiada.TEMP_CLAVE)
            {
                return(RedirectTo(Pagina.ERROR, 404));
            }

            Medallero medalleroGeneral;
            Persona   p = getUsuario();

            ViewBag.liveResults = o.liveResults;
            if (o.esOnline && OmegaUp.RunnerStarted && p != null && p.esSuperUsuario())
            {
                ViewBag.secretScoreboard = true;
                ViewBag.estados          = Medallero.obtenerTablaEstadosSecreta(clave, o.tipoOlimpiada);
                ViewBag.medalleroGeneral = null;
            }
            else
            {
                ViewBag.secretScoreboard = false;
                ViewBag.estados          = Medallero.obtenerTablaEstados(o.tipoOlimpiada, clave, out medalleroGeneral);
                ViewBag.medalleroGeneral = medalleroGeneral;
            }
            ViewBag.olimpiadas  = Olimpiada.obtenerOlimpiadas(tipo);
            ViewBag.hayPromedio = Medallero.hayPromedio(ViewBag.estados);
            ViewBag.hayPuntos   = Medallero.hayPuntos(ViewBag.estados);

            return(View(o));
        }
Ejemplo n.º 4
0
        //
        // GET: /Registro/Select

        public ActionResult Select(string omi = null, TipoOlimpiada tipo = TipoOlimpiada.OMI, string GUID = null)
        {
            if (GUID != null)
            {
                tryLogIn(GUID);
            }

            if (omi == null)
            {
                omi = Olimpiada.obtenerMasReciente(yaEmpezada: false).numero;
            }

            Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(omi, tipo);

            if (o == null || !(o.registroActivo || o.registroSedes))
            {
                Olimpiada op = Olimpiada.obtenerOlimpiadaConClave(omi, TipoOlimpiada.OMIPO);
                if (op != null && (op.registroActivo || op.registroSedes))
                {
                    tipo = TipoOlimpiada.OMIPO;
                    o    = op;
                }
            }
            if (o == null || !tienePermisos(o.registroActivo || o.registroSedes))
            {
                return(RedirectTo(Pagina.HOME));
            }

            Persona p = getUsuario();

            if (p.esSuperUsuario())
            {
                return(RedirectTo(Pagina.REGISTRO, new { tipo = tipo }));
            }

            List <Estado> estados = p.obtenerEstadosDeDelegado();

            if (estados.Count == 1)
            {
                return(RedirectTo(Pagina.REGISTRO, new { omi = omi, estado = estados[0].clave, tipo = tipo }));
            }
            ViewBag.estados = estados;
            ViewBag.tipo    = o.tipoOlimpiada;

            return(View());
        }
Ejemplo n.º 5
0
        public BaseController()
        {
            // Se usa System.Web en vez de Session porque a tiempo de construcción, Session aún no esta populada
            Persona usuario = (Persona)System.Web.HttpContext.Current.Session["usuario"];

#if DEBUG
            ViewBag.debug = true;
#else
            ViewBag.debug = false;
#endif
            if (usuario != null)
            {
                usuario.recargarDatos();
            }
            ViewBag.usuario = usuario;
            Olimpiada o      = Olimpiada.obtenerMasReciente(yaEmpezada: false);
            Olimpiada omipos = Olimpiada.obtenerMasReciente(yaEmpezada: false, tipo: TipoOlimpiada.OMIPO);
            ViewBag.registroActivo = o.registroActivo || o.registroSedes ||
                                     omipos.registroActivo || omipos.registroSedes;
            ViewBag.captchaKey = CAPTCHA_KEY;
        }
Ejemplo n.º 6
0
        //
        // GET: /Olimpiada/Resultados/

        public ActionResult Resultados(string clave = null, TipoOlimpiada tipo = TipoOlimpiada.OMI, string GUID = null)
        {
            if (GUID != null)
            {
                tryLogIn(GUID);
            }
            Olimpiada o = null;

            if (clave == null)
            {
                o     = Olimpiada.obtenerMasReciente();
                clave = o.numero;
                tipo  = o.tipoOlimpiada;
            }
            else
            {
                o = Olimpiada.obtenerOlimpiadaConClave(clave, tipo);
            }

            if (o == null)
            {
                return(RedirectTo(Pagina.ERROR, 404));
            }

            limpiarErroresViewBag();

            ViewBag.liveResults      = false;
            ViewBag.secretScoreboard = false;
            ViewBag.resultados       = null;
            if (o.liveResults)
            {
                OmegaUp ou = o.calculateCachedResults();
                if (ou != null)
                {
                    Persona p = getUsuario();
                    if (o.esOnline && OmegaUp.RunnerStarted && p != null && p.esSuperUsuario())
                    {
                        ViewBag.secretScoreboard = true;
                        ViewBag.dia             = ou.dia;
                        ViewBag.problemasPorDia = 4; // HARDCODED BUT OH WELL....
                        ViewBag.resultados      = Models.Resultados.cargarResultadosSecretos(clave, tipo, ou.dia);
                    }
                    else
                    {
                        ViewBag.resultados = o.resultados;
                        if (o.resultados.Count > 0)
                        {
                            o.shouldReload(ou.dia);

                            ViewBag.liveResults      = true;
                            ViewBag.RunnerStarted    = OmegaUp.RunnerStarted;
                            ViewBag.dia              = ou.dia;
                            ViewBag.problemasPorDia  = ou.dia == 1 ? o.problemasDia1 : o.problemasDia2;
                            ViewBag.lastUpdate       = (DateTime.UtcNow.Ticks - ou.timestamp.Ticks) / TimeSpan.TicksPerSecond;
                            ViewBag.ticks            = ou.timestamp.Ticks;
                            ViewBag.scoreboardName   = ou.concurso;
                            ViewBag.scoreboardToken  = ou.token;
                            ViewBag.remainingSeconds = ou.getRemainingContestTime();
                        }
                    }
                }
            }
            if (ViewBag.resultados == null)
            {
                ViewBag.resultados = Models.Resultados.cargarResultados(clave, tipo, porLugar: !o.puntosDesconocidos && o.noMedallistasConocidos && o.datosPublicos, cargarObjetos: true);
            }

            ViewBag.problemasDia1 = Problema.obtenerProblemasDeOMI(clave, tipo, 1);
            ViewBag.problemasDia2 = Problema.obtenerProblemasDeOMI(clave, tipo, 2);
            ViewBag.claveUsuario  = getUsuario().clave;
            ViewBag.olimpiadas    = Olimpiada.obtenerOlimpiadas(TipoOlimpiada.OMI);

            if (o.alsoOmips)
            {
                ViewBag.omis = Olimpiada.obtenerOlimpiadas(TipoOlimpiada.OMIS);
                ViewBag.omip = Olimpiada.obtenerOlimpiadas(TipoOlimpiada.OMIP);
            }

            List <Problema> metadata = Problema.obetnerMetaDatadeOMI(clave, tipo);

            if (metadata.Count >= 3)
            {
                ViewBag.numerosDia1  = metadata[1];
                ViewBag.numerosDia2  = metadata[2];
                ViewBag.numerosTotal = metadata[0];
            }

            ViewBag.extranjeros = MiembroDelegacion.obtenerEstadosExtranjerosEnOlimpiada(o.numero);

            return(View(o));
        }