public static void StartScoreboard() { // Primero matamos todos los status que estén en un estado de error List <OmegaUp> status = OmegaUp.obtenerInstrucciones(Instruccion.STATUS); foreach (OmegaUp s in status) { if (s.status != Status.OK) { s.borrar(); } else { // Si encontramos un OK, no iniciamos nada pues ya hay un proceso corriendo return; } } // Obtenemos la dirección del exe string directorio = ConfigurationManager.AppSettings.Get(SCOREBOARD_DIRECTORY_STRING); string exe = ConfigurationManager.AppSettings.Get(SCOREBOARD_EXE_STRING); ProcessStartInfo psi = new ProcessStartInfo(); psi.WorkingDirectory = directorio; psi.FileName = exe; Process.Start(psi); // Esperamos un par de segundos a que el proceso empiece y darle tiempo a la página // a que lo registre System.Threading.Thread.Sleep(SLEEP_TIME); }
/// <summary> /// Dado que las olimpiadas son pocas y a que se hacen muchas llamadas a la base para obtener estos objetos /// los cargamos una vez por aplicacion y los dejamos ahi /// </summary> /// <returns></returns> private static Dictionary <string, Olimpiada> getOlimpiadas(TipoOlimpiada tipoOlimpiada) { Dictionary <string, Olimpiada> olimpiadas; string application = obtenerApplicationString(tipoOlimpiada); olimpiadas = (Dictionary <string, Olimpiada>)HttpContext.Current.Application[application]; if (olimpiadas == null) { olimpiadas = cargarOlimpiadas(tipoOlimpiada); HttpContext.Current.Application[application] = olimpiadas; // Cargamos las instrucciones en caso de que haya un scoreboard activo List <OmegaUp> polls = OmegaUp.obtenerInstrucciones(OmegaUp.Instruccion.POLL); foreach (OmegaUp p in polls) { if (p.tipoOlimpiada == tipoOlimpiada) { Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(p.olimpiada, p.tipoOlimpiada); o.liveResults = true; } } } return(olimpiadas); }
public static void nuevaInstruccion(Instruccion instruccion, bool unica) { if (!unica || OmegaUp.obtenerInstrucciones(instruccion).Count == 0) { OmegaUp o = new OmegaUp(); o.instruccion = instruccion; o.guardarNuevo(); } }