Exemple #1
0
        //
        // GET: /Problema/Edit/

        public ActionResult Edit(string omi, int dia, int numero, TipoOlimpiada tipo = TipoOlimpiada.OMI)
        {
            if (!estaLoggeado())
            {
                guardarParams(Pagina.LOGIN, Pagina.PROBLEMA, omi + ":" + dia + ":" + numero);
                return(RedirectTo(Pagina.LOGIN));
            }

            if (!esAdmin())
            {
                return(RedirectTo(Pagina.ERROR, 401));
            }

            Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(omi, tipo);

            if (o == null)
            {
                return(RedirectTo(Pagina.ERROR, 401));
            }

            if (dia < 0 || dia > 2)
            {
                return(RedirectTo(Pagina.ERROR, 401));
            }

            if (numero < 0 || numero > 4)
            {
                return(RedirectTo(Pagina.ERROR, 401));
            }

            Problema p = Problema.obtenerProblema(omi, tipo, dia, numero);

            return(View(p));
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
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);
        }
Exemple #6
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);
        }
Exemple #7
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);
        }
Exemple #8
0
        /// <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);
        }
Exemple #9
0
        //
        // GET: /Registro/Sede

        public ActionResult Sede(string omi, string estado, TipoOlimpiada tipo, int clave = 0)
        {
            failSafeViewBag();
            Persona   p = getUsuario();
            Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(omi, tipo);

            ViewBag.omi = o == null ? new Olimpiada() : o;

            if (o == null || !tienePermisos(o.registroActivo || o.registroSedes, estado) ||
                (!p.esSuperUsuario() && !o.registroSedes))
            {
                ViewBag.errorInfo = "permisos";
                return(View(new SedeOnline()));
            }

            SedeOnline so = null;

            if (clave > 0)
            {
                so = SedeOnline.obtenerSedeConClave(clave);
                if (so == null || so.estado != estado && !p.esSuperUsuario())
                {
                    ViewBag.errorInfo = "permisos";
                    return(View(new SedeOnline()));
                }
            }

            ViewBag.estado = Estado.obtenerEstadoConClave(estado);
            if (so == null)
            {
                so = new SedeOnline();
            }

            return(View(so));
        }
Exemple #10
0
        /// <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);
        }
Exemple #11
0
        //
        // GET: /Olimpiada/Attendees/

        public ActionResult Attendees(string clave, TipoOlimpiada tipo = TipoOlimpiada.OMI)
        {
            if (!estaLoggeado())
            {
                guardarParams(Pagina.LOGIN, Pagina.ATTENDEES_OMI, clave);
                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));
            }

            ViewBag.asistentes = o.obtenerTablaAsistentes();
            limpiarErroresViewBag();

            return(View(o));
        }
Exemple #12
0
        //
        // GET: /Admin/Trim/

        public ActionResult Trim(TipoOlimpiada tipo, int tiempo, int dia, string omi = "")
        {
            if (!esAdmin())
            {
                return(RedirectTo(Pagina.ERROR, 401));
            }

            Olimpiada o;

            if (String.IsNullOrEmpty(omi))
            {
                o = Olimpiada.obtenerMasReciente();
            }
            else
            {
                o = Olimpiada.obtenerOlimpiadaConClave(omi, TipoOlimpiada.OMI);
            }

            if (o == null)
            {
                return(RedirectTo(Pagina.ERROR, 401));
            }

            DetalleLugar.clean(o.numero, tipo, dia);
            DetalleLugar.trim(o.numero, tipo, tiempo, dia);

            DetallePuntos.clean(o.numero, tipo, dia);
            DetallePuntos.trim(o.numero, tipo, tiempo, dia);

            return(RedirectTo(Pagina.ADMIN_SCOREBOARD));
        }
Exemple #13
0
        /// <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);
        }
Exemple #14
0
        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);
        }
Exemple #15
0
        /// <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);
        }
Exemple #16
0
        /// <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);
        }
Exemple #17
0
        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());
        }
Exemple #18
0
        //
        // GET: /Olimpiada/ResultsTable/

        public ActionResult ResultsTable(string clave, TipoOlimpiada tipo = TipoOlimpiada.OMI)
        {
            if (!estaLoggeado())
            {
                guardarParams(Pagina.LOGIN, Pagina.RESULTS_TABLE, clave);
                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));
            }

            ViewBag.dia1       = o.problemasDia1;
            ViewBag.dia2       = o.problemasDia2;
            ViewBag.resultados = o.obtenerResultadosAdmin();
            limpiarErroresViewBag();

            return(View(o));
        }
Exemple #19
0
        public ActionResult ResultsTable(string tabla, string clave, TipoOlimpiada tipo = TipoOlimpiada.OMI, bool run = false)
        {
            if (!esAdmin() || tabla == null || clave == null)
            {
                return(RedirectTo(Pagina.HOME));
            }

            Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(clave, tipo);

            if (o == null || clave == Olimpiada.TEMP_CLAVE)
            {
                return(RedirectTo(Pagina.ERROR, 404));
            }

            limpiarErroresViewBag();
            ViewBag.omi  = clave;
            ViewBag.dia1 = o.problemasDia1;
            ViewBag.dia2 = o.problemasDia2;
            string errores = o.guardarTablaResultados(tabla, run);

            if (errores.Length > 0)
            {
                ViewBag.errorOMI   = true;
                ViewBag.resultados = errores;
            }
            else
            {
                ViewBag.guardado = true;
                Log.add(Log.TipoLog.ADMIN, "Resultados de " + o.tipoOlimpiada + " " + o.año + " actualizados por admin " + getUsuario().nombreCompleto);
            }

            return(View(o));
        }
Exemple #20
0
        private bool puedeRegistrarOtroMas(Olimpiada o, TipoOlimpiada tipo, string estado)
        {
            int maxUsuarios = o.getMaxParticipantesDeEstado(estado);
            List <MiembroDelegacion> mds = MiembroDelegacion.obtenerMiembrosDelegacion(o.numero, estado, tipo, MiembroDelegacion.TipoAsistente.COMPETIDOR);

            return(mds.Count < maxUsuarios);
        }
Exemple #21
0
        public ActionResult Attendees(string tabla, string clave, TipoOlimpiada tipo = TipoOlimpiada.OMI)
        {
            if (!esAdmin() || tabla == null || clave == null)
            {
                return(RedirectTo(Pagina.HOME));
            }

            Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(clave, tipo);

            if (o == null || clave == Olimpiada.TEMP_CLAVE)
            {
                return(RedirectTo(Pagina.ERROR, 404));
            }

            limpiarErroresViewBag();
            ViewBag.omi = clave;

            string errores = o.guardarTablaAsistentes(tabla);

            if (errores.Length > 0)
            {
                ViewBag.errorOMI   = true;
                ViewBag.asistentes = errores;
            }
            else
            {
                ViewBag.guardado = true;
                Log.add(Log.TipoLog.ADMIN, "Participantes de " + o.tipoOlimpiada + " " + o.año + " actualizados por admin " + getUsuario().nombre);
            }

            return(View(o));
        }
Exemple #22
0
        //
        // 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));
        }
Exemple #23
0
        public TipoOlimpiada obtenerDefault(TipoOlimpiada tipo)
        {
            if (medalleroDeTipo(tipo) != null)
            {
                return(tipo);
            }

            if (this.OMI != null)
            {
                return(TipoOlimpiada.OMI);
            }

            if (this.IOI != null)
            {
                return(TipoOlimpiada.IOI);
            }

            if (this.OMIS != null)
            {
                return(TipoOlimpiada.OMIS);
            }

            if (this.OMIP != null)
            {
                return(TipoOlimpiada.OMIP);
            }

            return(TipoOlimpiada.OMI);
        }
Exemple #24
0
        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);
        }
Exemple #25
0
        //
        // 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));
        }
Exemple #26
0
        public static List <Medallero> obtenerTablaEstadosSecreta(string clave, TipoOlimpiada tipoOlimpiada)
        {
            OmegaUp           poll       = OmegaUp.obtenerParaOMI(clave, tipoOlimpiada);
            List <Resultados> resultados = Resultados.cargarResultadosSecretos(clave, tipoOlimpiada, poll.dia);
            Dictionary <string, Medallero> diccionario = new Dictionary <string, Medallero>();

            foreach (Resultados resultado in resultados)
            {
                Medallero m = null;
                if (diccionario.ContainsKey(resultado.estado))
                {
                    m = diccionario[resultado.estado];
                }
                else
                {
                    m       = new Medallero();
                    m.clave = resultado.estado;
                    diccionario.Add(resultado.estado, m);
                }
                switch (resultado.medalla)
                {
                case Resultados.TipoMedalla.ORO:
                case Resultados.TipoMedalla.ORO_1:
                case Resultados.TipoMedalla.ORO_2:
                case Resultados.TipoMedalla.ORO_3:
                    m.oros++;
                    break;

                case Resultados.TipoMedalla.PLATA:
                    m.platas++;
                    break;

                case Resultados.TipoMedalla.BRONCE:
                    m.bronces++;
                    break;
                }
                m.puntos += resultado.total;
                m.lugar++;
            }

            List <Medallero> medallero = new List <Medallero>();

            foreach (Medallero m in diccionario.Values)
            {
                m.promedio = m.puntos / m.lugar;
                m.lugar    = 0;
                medallero.Add(m);
            }
            medallero.Sort();

            for (int i = 0; i < medallero.Count; i++)
            {
                medallero[i].lugar = i + 1;
            }

            return(medallero);
        }
Exemple #27
0
        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));
        }
Exemple #28
0
        /// <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());
        }
Exemple #29
0
 public DetalleLugar(string omi, TipoOlimpiada tipoOlimpiada, string clave, int timestamp, int dia, Resultados.TipoMedalla medalla, int lugar)
 {
     this.omi           = omi;
     this.tipoOlimpiada = tipoOlimpiada;
     this.clave         = clave;
     this.timestamp     = timestamp;
     this.dia           = dia;
     this.medalla       = medalla;
     this.lugar         = lugar;
 }
Exemple #30
0
        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;
            }
        }