// // GET: /Olimpiada/ public ActionResult Index(string clave, TipoOlimpiada tipo = TipoOlimpiada.OMI) { if (clave == Olimpiada.TEMP_CLAVE) { return(RedirectTo(Pagina.EDIT_OLIMPIADA, clave + ":" + tipo.ToString())); } Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(clave, tipo); if (o == null) { return(RedirectTo(Pagina.ERROR, 404)); } limpiarErroresViewBag(); ViewBag.clave = clave; ViewBag.dia1 = Problema.obtenerProblemasDeOMI(clave, tipo, 1); ViewBag.dia2 = Problema.obtenerProblemasDeOMI(clave, tipo, 2); ViewBag.metadata = Problema.obetnerMetaDatadeOMI(clave, tipo); // Mientras las OMIS y OMIPS sean en el mismo evento que la OMI, no tienen su propia vista ViewBag.olimpiadas = Olimpiada.obtenerOlimpiadas(TipoOlimpiada.OMI); ViewBag.fotos = Album.obtenerAlbumsDeOlimpiada(clave, tipo).Count > 0; return(View(o)); }
// // 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)); }