/// <summary> /// Actualiza la última entrada en la tabla para el concursante mandado como parámetro /// </summary> public static void actualizarUltimo(string omi, TipoOlimpiada tipo, int dia, string clave, List <float?> puntos, float?total) { StringBuilder query = new StringBuilder(); Acceso db = new Acceso(); // Primero obtenemos el timestamp mas grande query.Append(" select MAX(timestamp) from DetallePuntos where olimpiada = "); query.Append(Cadenas.comillas(omi)); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipo.ToString().ToLower())); query.Append(" and dia = "); query.Append(dia); query.Append(" and clave = "); query.Append(Cadenas.comillas(clave)); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); if (table.Rows.Count == 0) { return; } int timestamp = DataRowParser.ToInt(table.Rows[0][0]); query.Clear(); // Ahora actualizamos los puntos query.Append("update DetallePuntos set puntosP1 = "); query.Append(puntos[0] == null ? "0" : puntos[0].ToString()); query.Append(", puntosP2 = "); query.Append(puntos[1] == null ? "0" : puntos[1].ToString()); query.Append(", puntosP3 = "); query.Append(puntos[2] == null ? "0" : puntos[2].ToString()); query.Append(", puntosP4 = "); query.Append(puntos[3] == null ? "0" : puntos[3].ToString()); query.Append(", puntosP5 = "); query.Append(puntos[4] == null ? "0" : puntos[4].ToString()); query.Append(", puntosP6 = "); query.Append(puntos[5] == null ? "0" : puntos[5].ToString()); query.Append(", puntosD = "); query.Append(total == null ? "0" : total.ToString()); query.Append(" where olimpiada = "); query.Append(Cadenas.comillas(omi)); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipo.ToString().ToLower())); query.Append(" and dia = "); query.Append(dia); query.Append(" and clave = "); query.Append(Cadenas.comillas(clave)); query.Append(" and timestamp = "); query.Append(timestamp); db.EjecutarQuery(query.ToString()); }
public static void clean(string omi, TipoOlimpiada tipo, int dia) { StringBuilder query = new StringBuilder(); Acceso db = new Acceso(); query.Append(" select * from DetalleLugar where olimpiada = "); query.Append(Cadenas.comillas(omi)); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipo.ToString().ToLower())); query.Append(" and dia = "); query.Append(dia); query.Append(" order by clave, timestamp asc "); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); bool first = false; DetalleLugar anterior = new DetalleLugar(); DetalleLugar actual = new DetalleLugar(); foreach (DataRow r in table.Rows) { actual.lugar = DataRowParser.ToInt(r["lugar"]); actual.timestamp = DataRowParser.ToInt(r["timestamp"]); actual.medalla = DataRowParser.ToTipoMedalla(r["medalla"]); actual.clave = DataRowParser.ToString(r["clave"]); if (actual.clave != anterior.clave) { first = true; } else { if (actual.medalla == anterior.medalla && actual.lugar == anterior.lugar) { if (!first) { borrar(omi, tipo.ToString().ToLower(), anterior.clave, anterior.timestamp, dia); } first = false; } else { first = true; } } anterior.lugar = actual.lugar; anterior.timestamp = actual.timestamp; anterior.medalla = actual.medalla; anterior.clave = actual.clave; } }
/// <summary> /// Actualiza la última entrada en la tabla para el concursante mandado como parámetro /// </summary> public static void actualizarUltimo(string omi, TipoOlimpiada tipo, int dia, string clave, int lugar, Resultados.TipoMedalla medalla) { StringBuilder query = new StringBuilder(); Acceso db = new Acceso(); // Primero obtenemos el timestamp mas grande query.Append(" select MAX(timestamp) from DetalleLugar where olimpiada = "); query.Append(Cadenas.comillas(omi)); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipo.ToString().ToLower())); query.Append(" and dia = "); query.Append(dia); query.Append(" and clave = "); query.Append(Cadenas.comillas(clave)); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); if (table.Rows.Count == 0) { return; } int timestamp = DataRowParser.ToInt(table.Rows[0][0]); query.Clear(); // Ahora actualizamos los puntos query.Append("update DetalleLugar set lugar = "); query.Append(lugar); if (medalla != Resultados.TipoMedalla.DESCALIFICADO) { query.Append(", medalla = "); query.Append((int)medalla); } query.Append(" where olimpiada = "); query.Append(Cadenas.comillas(omi)); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipo.ToString().ToLower())); query.Append(" and dia = "); query.Append(dia); query.Append(" and clave = "); query.Append(Cadenas.comillas(clave)); query.Append(" and timestamp = "); query.Append(timestamp); db.EjecutarQuery(query.ToString()); }
/// <summary> /// Obtiene todos los albumes de la olimpiada /// </summary> /// <param name="olimpiada">La olimpiada de la que se quieren los albumes</param> /// <param name="tipo">El tipo de olipiada</param> /// <returns>La lista de álbumes</returns> public static List <Album> obtenerAlbumsDeOlimpiada(string olimpiada, TipoOlimpiada tipo) { List <Album> albums = new List <Album>(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select * from album where olimpiada = "); query.Append(Cadenas.comillas(olimpiada)); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipo.ToString().ToLower())); query.Append(" order by orden "); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); foreach (DataRow row in table.Rows) { Album al = new Album(); al.llenarDatos(row); albums.Add(al); } return(albums); }
/// <summary> /// Calcula los estados de los cuales hay participantes para la persona /// </summary> /// <param name="tipoOlimpiada">El tipo de olimpiada</param> public List <string> consultarEstados(TipoOlimpiada tipoOlimpiada = TipoOlimpiada.NULL) { List <string> estados = new List <string>(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select distinct(estado) from MiembroDelegacion where persona = "); query.Append(this.clave); if (tipoOlimpiada != TipoOlimpiada.NULL) { query.Append(" and clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); } db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); estados = new List <string>(); foreach (DataRow r in table.Rows) { string estado = DataRowParser.ToString(r[0]); estados.Add(estado); } return(estados); }
public static Dictionary <string, DetalleLugar> obtenerLugaresConTimestamp(string clave, TipoOlimpiada tipo, int dia, int timestamp) { Dictionary <string, DetalleLugar> lugares = new Dictionary <string, DetalleLugar>(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select * from detallelugar "); query.Append(" where clase = "); query.Append(Cadenas.comillas(tipo.ToString().ToLower())); query.Append(" and olimpiada = "); query.Append(Cadenas.comillas(clave)); query.Append(" and dia = "); query.Append(dia); query.Append(" and timestamp = "); query.Append(timestamp); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); for (int i = 0; i < table.Rows.Count; i++) { DetalleLugar dl = new DetalleLugar(); dl.llenarDatos(table.Rows[i]); lugares.Add(dl.clave, dl); } return(lugares); }
public static OmegaUp obtenerParaOMI(string olimpiada, TipoOlimpiada tipoOlimpiada) { Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select * from OmegaUp where tipo = "); query.Append(Cadenas.comillas(Instruccion.POLL.ToString().ToLower())); query.Append(" and olimpiada = "); query.Append(Cadenas.comillas(olimpiada)); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); if (table.Rows.Count == 0) { return(null); } OmegaUp o = new OmegaUp(); o.llenarDatos(table.Rows[0]); return(o); }
public static void guardaProblemas(string olimpiada, TipoOlimpiada tipoOlimpiada, int problemas, int dia) { Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" update olimpiada set datospublicos = 1 "); if (dia == 1) { query.Append(", problemasDia1 = "); } else { query.Append(", problemasDia2 = "); } query.Append(problemas); query.Append(", mostrarResultadosPorDia = "); query.Append(dia == 1 ? "0" : "1"); query.Append(", mostrarResultadosPorProblema = 1 "); query.Append(", mostrarResultadosTotales = 1 "); query.Append(" where numero = "); query.Append(Cadenas.comillas(olimpiada)); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); db.EjecutarQuery(query.ToString()); }
private static Dictionary <string, Olimpiada> cargarOlimpiadas(TipoOlimpiada tipoOlimpiada) { Dictionary <string, Olimpiada> lista = new Dictionary <string, Olimpiada>(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); TipoOlimpiada tipoQuery = tipoOlimpiada; query.Append(" select * from olimpiada "); query.Append(" where clase = "); query.Append(Cadenas.comillas(tipoQuery.ToString().ToLower())); query.Append(" order by año desc,"); query.Append(" numero desc"); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); foreach (DataRow r in table.Rows) { Olimpiada o = new Olimpiada(); o.llenarDatos(r); lista.Add(o.numero, o); } return(lista); }
/// <summary> /// Regresa una lista con tres elementos y el metadata de los dias de la omi /// </summary> /// <param name="omi">La omi de los problemas</param> /// <param name="tipoOlimpiada">El tipo olimpiada del que se requieren los datos</param> /// <returns>La lista de problemas</returns> public static List <Problema> obetnerMetaDatadeOMI(string omi, TipoOlimpiada tipoOlimpiada) { List <Problema> problemas = new List <Problema>(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select * from problema where olimpiada = "); query.Append(Cadenas.comillas(omi)); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); query.Append(" and numero = 0 order by dia asc "); if (db.EjecutarQuery(query.ToString()).error) { return(null); } DataTable table = db.getTable(); foreach (DataRow r in table.Rows) { Problema p = new Problema(); p.llenarDatos(r); problemas.Add(p); } return(problemas); }
// // GET: /Olimpiada/Edit/ public ActionResult Edit(string clave, TipoOlimpiada tipo = TipoOlimpiada.OMI) { if (!estaLoggeado()) { guardarParams(Pagina.LOGIN, Pagina.EDIT_OLIMPIADA, clave + ":" + tipo.ToString()); return(RedirectTo(Pagina.LOGIN)); } if (!esAdmin()) { return(RedirectTo(Pagina.ERROR, 401)); } Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(clave, tipo); if (o == null) { return(RedirectTo(Pagina.ERROR, 404)); } limpiarErroresViewBag(); ViewBag.clave = clave; ViewBag.poster = o.poster; return(View(o)); }
public static OverlayLugares cargarResultados(string omi, TipoOlimpiada tipoOlimpiada, int dia, string clave) { OverlayLugares lugares = new OverlayLugares(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select * from detallelugar "); query.Append(" where clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); query.Append(" and olimpiada = "); query.Append(Cadenas.comillas(omi)); query.Append(" and clave = "); query.Append(Cadenas.comillas(clave)); query.Append(" and dia = "); query.Append(dia); query.Append(" order by timestamp asc "); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); foreach (DataRow r in table.Rows) { llenarDatos(r, lugares); } if (lugares.timestamp[0] != 0 && dia == 1) { lugares.timestamp.Insert(0, 0); lugares.lugar.Insert(0, 0); lugares.medalla.Insert(0, 7); } return(lugares); }
public static List <SedeOnline> obtenerSedes(string omi, string estado, TipoOlimpiada tipoOlimpiada) { Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); List <SedeOnline> list = new List <SedeOnline>(); tipoOlimpiada = obtenerTipo(tipoOlimpiada); query.Append(" select * from SedeOnline where olimpiada = "); query.Append(Cadenas.comillas(omi)); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString())); if (!String.IsNullOrEmpty(estado)) { query.Append(" and estado = "); query.Append(Cadenas.comillas(estado)); } query.Append(" order by estado asc "); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); foreach (DataRow r in table.Rows) { SedeOnline so = new SedeOnline(); so.llenarDatos(r); list.Add(so); } return(list); }
/// <summary> /// Guarda los datos del objeto en la base de datos /// </summary> public void guardar() { StringBuilder query = new StringBuilder(); Acceso db = new Acceso(); query.Append("insert into DetallePuntos values("); query.Append(Cadenas.comillas(omi)); query.Append(","); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); query.Append(","); query.Append(Cadenas.comillas(clave)); query.Append(","); query.Append(timestamp); query.Append(","); query.Append(dia); query.Append(","); query.Append(this.puntosProblemas[0] == null ? "0" : this.puntosProblemas[0].ToString()); query.Append(","); query.Append(this.puntosProblemas[1] == null ? "0" : this.puntosProblemas[1].ToString()); query.Append(","); query.Append(this.puntosProblemas[2] == null ? "0" : this.puntosProblemas[2].ToString()); query.Append(","); query.Append(this.puntosProblemas[3] == null ? "0" : this.puntosProblemas[3].ToString()); query.Append(","); query.Append(this.puntosProblemas[4] == null ? "0" : this.puntosProblemas[4].ToString()); query.Append(","); query.Append(this.puntosProblemas[5] == null ? "0" : this.puntosProblemas[5].ToString()); query.Append(","); query.Append(this.puntosDia == null ? "0" : this.puntosDia.ToString()); query.Append(")"); db.EjecutarQuery(query.ToString()); }
/// <summary> /// Regresa la lista de resultados para el problema seleccionado /// </summary> /// <param name="olimpiada">La olimpiada del problema</param> /// <param name="tipo">El tipo de olimpiada</param> /// <param name="dia">El dia del problema</param> /// <param name="numero">El id del problema</param> /// <returns>La lista ordenada de resultados</returns> public static List <float> obtenerResultadosParaProblema(string olimpiada, TipoOlimpiada tipo, int dia, int numero) { List <float> resultados = new List <float>(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); string puntos = "puntosD" + dia + "P" + numero; query.Append(" select "); query.Append(puntos); query.Append(" from resultados where olimpiada = "); query.Append(Cadenas.comillas(olimpiada)); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipo.ToString().ToLower())); query.Append(" order by "); query.Append(puntos); query.Append(" asc "); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); foreach (DataRow r in table.Rows) { resultados.Add(DataRowParser.ToStrictFloat(r[0])); } return(resultados); }
/// <summary> /// Obtiene la tabla de estados generales /// Similar a obtenerMedallero de estados, pero incluye todos los estados /// </summary> /// <param name="tipoOlimpiada">El tipo de olimpiada</param> /// <returns>El diccionario de los estados</returns> public static Dictionary <string, Medallero> obtenerTablaEstadosGeneral(TipoOlimpiada tipoOlimpiada) { Dictionary <string, Medallero> estados = new Dictionary <string, Medallero>(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select * from Medallero where tipo = "); query.Append((int)TipoMedallero.ESTADO); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); foreach (DataRow r in table.Rows) { // Obtengo los datos de la tabla a un objeto medallero Medallero m = new Medallero(); m.llenarDatos(r); // Agrego el medallero con la olimpiada estados.Add(m.clave, m); } return(estados); }
/// <summary> /// Regresa todos los problemas del tipo de olimpiada /// </summary> /// <param name="tipoOlimpiada">El tipo de olimpiada</param> /// <returns>El diccionario de problemas, la llave es la olimpiada</returns> public static Dictionary <string, List <Problema> > obtenerProblemas(TipoOlimpiada tipoOlimpiada) { Dictionary <string, List <Problema> > problemas = new Dictionary <string, List <Problema> >(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select * from problema where clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); query.Append(" order by olimpiada, dia asc, numero asc "); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); string ultimaOMI = null; List <Problema> lista = null; foreach (DataRow r in table.Rows) { Problema p = new Problema(); p.llenarDatos(r); if (ultimaOMI == null || ultimaOMI != p.olimpiada) { lista = new List <Problema>(); problemas.Add(p.olimpiada, lista); ultimaOMI = p.olimpiada; } lista.Add(p); } return(problemas); }
/// <summary> /// Obtiene el problema de la base de datos. /// De no existir, se regresa un objeto nuevo (sin actualizar la base) /// </summary> /// <param name="omi">La omi del problema</param> /// <param name="tipoOlimpiada">El tipo olimpiada del que se requieren los datos</param> /// <param name="dia">El día del problema</param> /// <param name="numero">El numero del problema</param> /// <returns>El objeto problema</returns> public static Problema obtenerProblema(string omi, TipoOlimpiada tipoOlimpiada, int dia, int numero) { Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select * from problema where olimpiada = "); query.Append(Cadenas.comillas(omi)); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); query.Append(" and dia = "); query.Append(dia); query.Append(" and numero = "); query.Append(numero); if (db.EjecutarQuery(query.ToString()).error) { return(null); } DataTable table = db.getTable(); Problema p = new Problema(); if (table.Rows.Count == 0) { p.olimpiada = omi; p.tipoOlimpiada = tipoOlimpiada; p.dia = dia; p.numero = numero; } else { p.llenarDatos(table.Rows[0]); } return(p); }
/// <summary> /// Obtiene los multimedallistas de la olimpiada mandada como parámetro /// </summary> /// <param name="tipoOlimpiada">El tipo de olimpiada</param> /// <param name="cabeceras">El número de cabeceras que tendrá la tabla</param> /// <param name="excluirNoOros">true si solamente debemos incluir aquellos /// medallistas con al menos 1 oro</param> /// <param name="estado">Si debemos filtrar a cierto estado en particular</param> /// <returns>La lista de competidores con múltiples medallas</returns> public static List <HallOfFamer> obtenerMultimedallistas(out int cabeceras, TipoOlimpiada tipoOlimpiada = TipoOlimpiada.OMI, bool excluirNoOros = true, string estado = null) { List <HallOfFamer> medallistas = new List <HallOfFamer>(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select clave from Medallero where tipo = "); query.Append((int)Medallero.TipoMedallero.PERSONA); query.Append(" and "); if (excluirNoOros) { query.Append(" oro > 0 and "); } query.Append(" (oro + plata + bronce) > 1 and clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); query.Append(" order by oro desc, plata desc, bronce desc"); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); HallOfFamer lastHof = null; cabeceras = 0; int lugar = 0; foreach (DataRow r in table.Rows) { HallOfFamer hof = new HallOfFamer(); hof.llenarDatos(DataRowParser.ToInt(r["clave"].ToString())); if (estado != null) { if (!hof.estados.Contains(estado)) { continue; } } lugar++; if (lastHof == null || lastHof.oros != hof.oros || lastHof.platas != hof.platas || lastHof.bronces != hof.bronces) { hof.lugar = lugar; } else { hof.lugar = lastHof.lugar; } if (hof.medallas.Count > cabeceras) { cabeceras = hof.medallas.Count; } lastHof = hof; medallistas.Add(hof); } return(medallistas); }
// // 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)); }
public JsonResult Escuelas(TipoOlimpiada tipo, string estado) { List <object> lista = new List <object>(); lista.Add(tipo.ToString()); lista.Add(estado); lista.Add(Institucion.obtenerEscuelasDeEstado(tipo, estado)); return(Json(lista)); }
/// <summary> /// Obtiene la tabla de estados generales, similar a las que se ve en wikipedia /// </summary> /// <param name="tipoOlimpiada">El tipo de olimpiada</param> /// <param name="cabeceras">Un arreglo donde cada elemento /// inidica si la olimpiada tiene resultados para cualquier estado</param> /// <returns>El diccionario de los estados</returns> public static Dictionary <string, Dictionary <string, Medallero> > obtenerTablaEstadosGeneral(TipoOlimpiada tipoOlimpiada, out bool[] cabeceras) { Dictionary <string, Dictionary <string, Medallero> > estados = new Dictionary <string, Dictionary <string, Medallero> >(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select * from Medallero where tipo = "); query.Append((int)TipoMedallero.ESTADO_POR_OMI); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); // Un hashset para poder construir el arreglo de cabeceras HashSet <string> olimpiadasConResultados = new HashSet <string>(); foreach (DataRow r in table.Rows) { // Obtengo los datos de la tabla a un objeto medallero Medallero m = new Medallero(); m.llenarDatos(r); string estado = m.clave.Substring(0, 3); // Obtengo el medallero del estado Dictionary <string, Medallero> medallero; if (!estados.TryGetValue(estado, out medallero)) { medallero = new Dictionary <string, Medallero>(); estados.Add(estado, medallero); } // Agrego el medallero con la olimpiada medallero.Add(m.omi, m); // Ponemos que la olimpiada tiene resultados en el hashset if (!olimpiadasConResultados.Contains(m.omi)) { olimpiadasConResultados.Add(m.omi); } } // Construimos el arreglo de cabeceras List <Olimpiada> olimpiadas = Olimpiada.obtenerOlimpiadas(tipoOlimpiada); cabeceras = new bool[olimpiadas.Count]; for (int i = 0; i < olimpiadas.Count; i++) { cabeceras[i] = olimpiadasConResultados.Contains(olimpiadas[i].numero); } return(estados); }
private void llenarDatos(int usuario, TipoOlimpiada tipoOlimpiada = TipoOlimpiada.OMI) { // Primero obtenemos la persona this.persona = Persona.obtenerPersonaConClave(usuario); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select olimpiada, medalla, estado from Resultados where concursante = "); query.Append(usuario); query.Append(" and clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); query.Append(" order by medalla"); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); medallas = new List <KeyValuePair <Olimpiada, Resultados.TipoMedalla> >(); estados = new HashSet <string>(); foreach (DataRow r in table.Rows) { Resultados.TipoMedalla medalla = DataRowParser.ToTipoMedalla(DataRowParser.ToString(r["medalla"])); if (medalla == Resultados.TipoMedalla.NADA) { continue; } Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(DataRowParser.ToString(r["olimpiada"]), tipoOlimpiada); medallas.Add(new KeyValuePair <Olimpiada, Resultados.TipoMedalla>(o, medalla)); string estado = DataRowParser.ToString(r["estado"]); if (!estados.Contains(estado)) { estados.Add(estado); } if (medalla == Resultados.TipoMedalla.BRONCE) { bronces++; } else if (medalla == Resultados.TipoMedalla.PLATA) { platas++; } else { oros++; } } }
/// <summary> /// Calcula las participaciones diferente a competidor que tiene la persona /// </summary> /// <param name="tipoOlimpiada">El tipo de olimpiada</param> public List <string> consultarParticipaciones(TipoOlimpiada tipoOlimpiada = TipoOlimpiada.NULL) { List <string> tipos = new List <string>(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select distinct(tipo) from MiembroDelegacion where persona = "); query.Append(this.clave); query.Append(" and tipo != "); query.Append(Cadenas.comillas(MiembroDelegacion.TipoAsistente.COMPETIDOR.ToString().ToLower())); if (tipoOlimpiada != TipoOlimpiada.NULL) { query.Append(" and clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); } query.Append(" and clase <> "); query.Append(Cadenas.comillas(TipoOlimpiada.OMIPO.ToString().ToLower())); query.Append(" and clase <> "); query.Append(Cadenas.comillas(TipoOlimpiada.OMISO.ToString().ToLower())); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); tipos = new List <string>(); foreach (DataRow r in table.Rows) { MiembroDelegacion.TipoAsistente tipo = DataRowParser.ToTipoAsistente(DataRowParser.ToString(r[0])); if (tipo == MiembroDelegacion.TipoAsistente.DELELIDER) { if (!tipos.Contains(MiembroDelegacion.TipoAsistente.LIDER.ToString())) { tipos.Add(MiembroDelegacion.TipoAsistente.LIDER.ToString()); } if (!tipos.Contains(MiembroDelegacion.TipoAsistente.DELEGADO.ToString())) { tipos.Add(MiembroDelegacion.TipoAsistente.DELEGADO.ToString()); } } else { string t = MiembroDelegacion.getTipoAsistenteString(tipo); if (!tipos.Contains(t)) { tipos.Add(t); } } } return(tipos); }
/// <summary> /// Crea una nueva OMI en el sitio completamente vacia con clave TMP /// </summary> /// <param name="tipoOlimpiada">El tipo de olimpiada que se quiere crear</param> public static void nuevaOMI(TipoOlimpiada tipoOlimpiada) { // Borramos la referencia en la aplicacion para que el siguiente query recargue las olimpiadas resetOMIs(tipoOlimpiada); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" insert into olimpiada values ("); query.Append(Cadenas.comillas(TEMP_CLAVE)); query.Append(", "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); query.Append(",'', 'MEX', 'México' , '0'"); query.Append(",'', '', '', '', '', 0, 0, 0, 0, '', 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0) "); db.EjecutarQuery(query.ToString()); }
/// <summary> /// Revisa en la base de datos si el estado estuvo en la olimpiada mandada como parametro /// </summary> /// <param name="tipoOlimpiada">El tipo de olimpiada</param> /// <param name="olimpiada">La clave de la olimpiada</param> /// <returns></returns> public bool estadoVinoAOlimpiada(TipoOlimpiada tipoOlimpiada, string olimpiada) { Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select COUNT(*) from Resultados where clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); query.Append(" and olimpiada = "); query.Append(Cadenas.comillas(olimpiada)); query.Append(" and estado = "); query.Append(Cadenas.comillas(this.clave)); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); return(((int)table.Rows[0][0]) > 0); }
/// <summary> /// Regresa todas las escuelas que han representado a un estado /// </summary> /// <param name="tipoOlimpiada">El tipo de olimpiada</param> /// <param name="estado">El estado que se quiere consultar</param> public static List <Ajax.BuscarEscuelas> obtenerEscuelasDeEstado(TipoOlimpiada tipoOlimpiada, string estado) { Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); List <Ajax.BuscarEscuelas> escuelas = new List <Ajax.BuscarEscuelas>(); query.Append(" select * from Institucion where clave in "); query.Append(" (select distinct(institucion) from MiembroDelegacion as md "); query.Append(" where md.estado = "); query.Append(Cadenas.comillas(estado)); if (tipoOlimpiada == TipoOlimpiada.OMIP || tipoOlimpiada == TipoOlimpiada.OMIPO) { query.Append(" and (md.clase = "); query.Append(Cadenas.comillas(TipoOlimpiada.OMIP.ToString().ToLower())); query.Append(" or md.clase = "); query.Append(Cadenas.comillas(TipoOlimpiada.OMIPO.ToString().ToLower())); query.Append(" ) "); } else if (tipoOlimpiada == TipoOlimpiada.OMIS || tipoOlimpiada == TipoOlimpiada.OMISO) { query.Append(" and (md.clase = "); query.Append(Cadenas.comillas(TipoOlimpiada.OMIS.ToString().ToLower())); query.Append(" or md.clase = "); query.Append(Cadenas.comillas(TipoOlimpiada.OMISO.ToString().ToLower())); query.Append(" ) "); } else { query.Append(" and md.clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); } query.Append(" ) order by nombre "); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); foreach (DataRow r in table.Rows) { Ajax.BuscarEscuelas be = new Ajax.BuscarEscuelas(); be.llenarDatos(r); escuelas.Add(be); } return(escuelas); }
public static int obtenerTimestampMasReciente(string clave, TipoOlimpiada tipo, int dia) { Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select top 1 timestamp from detallepuntos "); query.Append(" where clase = "); query.Append(Cadenas.comillas(tipo.ToString().ToLower())); query.Append(" and olimpiada = "); query.Append(Cadenas.comillas(clave)); query.Append(" and dia = "); query.Append(dia); query.Append(" order by timestamp desc "); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); return(DataRowParser.ToInt(table.Rows[0][0])); }
/// <summary> /// Obtiene una lista de todas las olimpiadas con albumes de fotos /// </summary> /// <param name="tipo">El tipo de olimpiada</param> /// <returns>La lista de olimpiadas</returns> public static HashSet <string> obtenerOlimpiadasConAlbumes(TipoOlimpiada tipo = TipoOlimpiada.OMI) { HashSet <string> olimpiadas = new HashSet <string>(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select distinct(olimpiada) from album where clase = "); query.Append(Cadenas.comillas(tipo.ToString().ToLower())); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); foreach (DataRow row in table.Rows) { olimpiadas.Add(DataRowParser.ToString(row[0])); } return(olimpiadas); }
/// <summary> /// Regresa el Top 3 de todas las olimpiadas /// </summary> /// <param name="tipoOlimpiada">El tipo de olimpiada</param> /// <returns>La lista de top 3 de todas las olimpiadas</returns> public static Dictionary <string, List <KeyValuePair <Persona, Resultados.TipoMedalla> > > obtenerTop3(TipoOlimpiada tipoOlimpiada) { Dictionary <string, List <KeyValuePair <Persona, Resultados.TipoMedalla> > > top3 = new Dictionary <string, List <KeyValuePair <Persona, Resultados.TipoMedalla> > >(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select olimpiada, concursante, medalla from resultados where clase = "); query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower())); query.Append(" and (medalla = "); query.Append((int)Resultados.TipoMedalla.ORO_1); query.Append(" or medalla = "); query.Append((int)Resultados.TipoMedalla.ORO_2); query.Append(" or medalla = "); query.Append((int)Resultados.TipoMedalla.ORO_3); query.Append(") order by olimpiada, medalla asc"); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); List <KeyValuePair <Persona, Resultados.TipoMedalla> > ganadores = null; string lastOMI = null; foreach (DataRow r in table.Rows) { string olimpiada = DataRowParser.ToString(r["olimpiada"]); int concursante = DataRowParser.ToInt(r["concursante"]); Resultados.TipoMedalla medalla = DataRowParser.ToTipoMedalla(r["medalla"]); if (lastOMI == null || lastOMI != olimpiada) { ganadores = new List <KeyValuePair <Persona, Resultados.TipoMedalla> >(); top3.Add(olimpiada.Trim(), ganadores); lastOMI = olimpiada; } Persona persona = Persona.obtenerPersonaConClave(concursante); ganadores.Add(new KeyValuePair <Persona, Resultados.TipoMedalla>(persona, medalla)); } return(top3); }