Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }