/// <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> /// 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> /// 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); }