Пример #1
0
        /// <summary>
        /// Obtiene la lista de las mejores escuelas con medallas
        /// </summary>
        /// <param name="tipoOlimpiada">El tipo de olimpiada</param>
        /// <param name="estado">El estado que queremos filtrar</param>
        /// <returns>La lista de instituciones</returns>
        public static List <KeyValuePair <Institucion, Medallero> > obtenerMejoresEscuelas(string estado, TipoOlimpiada tipoOlimpiada)
        {
            List <KeyValuePair <Institucion, Medallero> > escuelas = new List <KeyValuePair <Institucion, Medallero> >();

            Acceso        db    = new Acceso();
            StringBuilder query = new StringBuilder();

            query.Append(" select * from Medallero where tipo = ");
            query.Append((int)Medallero.TipoMedallero.INSTITUCION);
            query.Append(" and clase = ");
            query.Append(Cadenas.comillas(tipoOlimpiada.ToString().ToLower()));
            if (estado == null)
            {
                query.Append(" and oro > 1 ");
            }
            else
            {
                query.Append(" and (oro + plata + bronce) > 1 ");
            }
            query.Append(" order by oro desc, plata desc, bronce desc ");

            db.EjecutarQuery(query.ToString());
            DataTable table = db.getTable();

            foreach (DataRow r in table.Rows)
            {
                Medallero m = new Medallero();
                m.llenarDatos(r);
                Institucion i = Institucion.obtenerInstitucionConClave(int.Parse(m.clave));
                i.consultarEstadosDeInstitucion(tipoOlimpiada);

                if (estado == null || i.estados.Contains(estado))
                {
                    escuelas.Add(new KeyValuePair <Institucion, Medallero>(i, m));
                }
            }

            return(escuelas);
        }