/// <summary> /// Regresa una lista de las olimpiadas en las que la escuela instanciada /// fue la escuela sede /// </summary> /// <returns>La lista de olimpiadas</returns> public List <Olimpiada> obtenerOlimpiadasSede() { List <Olimpiada> list = new List <Olimpiada>(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select numero from Olimpiada where escuela = "); query.Append(clave); query.Append(" and clase = "); // Mientras las OMIS y OMIPS no sean aparte, las sedes se cargan de OMIS query.Append(Cadenas.comillas(TipoOlimpiada.OMI.ToString().ToLower())); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); if (table.Rows.Count == 0) { return(list); } foreach (DataRow r in table.Rows) { string numero = DataRowParser.ToString(r[0]); Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(numero, TipoOlimpiada.OMI); list.Add(o); } return(list); }
/// <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); }
private void llenarDatos(DataRow r) { clave = DataRowParser.ToInt(r["clave"]); log = DataRowParser.ToString(r["log"]); tipo = DataRowParser.ToTipoLog(r["tipo"]); timestamp = DataRowParser.ToLongDateTime(r["timestamp"]); }
private void llenarDatos(DataRow r) { album = DataRowParser.ToString(r["album"]); id = DataRowParser.ToString(r["id"]); orden = DataRowParser.ToInt(r["orden"]); imagen = DataRowParser.ToString(r["imagen"]); url = DataRowParser.ToString(r["url"]); }
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; } }
private void llenarDatos(DataRow row) { clave = DataRowParser.ToString(row["clave"]); timestamp = DataRowParser.ToInt(row["timestamp"]); puntosProblemas = new List <float?>(); for (int i = 0; i < 6; i++) { puntosProblemas.Add(DataRowParser.ToFloat(row["puntosP" + (i + 1)])); } puntosDia = DataRowParser.ToFloat(row["puntosD"]); }
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++; } } }
private void llenarDatos(DataRow datos, bool cargarUsuario = false) { clave = DataRowParser.ToInt(datos["clave"]); tipo = DataRowParser.ToTipoPeticion(datos["tipo"]); subtipo = DataRowParser.ToTipoPeticion(datos["subtipo"]); datos1 = DataRowParser.ToString(datos["datos1"]); datos2 = DataRowParser.ToString(datos["datos2"]); datos3 = DataRowParser.ToString(datos["datos3"]); if (cargarUsuario) { usuario = Persona.obtenerPersonaConClave(DataRowParser.ToInt(datos["usuario"])); } }
/// <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); }
public void llenarDatos(DataRow datos) { tipoOlimpiada = DataRowParser.ToTipoOlimpiada(datos["clase"]); tipoMedallero = DataRowParser.ToTipoMedallero(datos["tipo"]); clave = DataRowParser.ToString(datos["clave"]); oros = DataRowParser.ToInt(datos["oro"]); platas = DataRowParser.ToInt(datos["plata"]); bronces = DataRowParser.ToInt(datos["bronce"]); otros = DataRowParser.ToInt(datos["otros"]); puntos = DataRowParser.ToFloat(datos["puntos"]); promedio = DataRowParser.ToFloat(datos["promedio"]); lugar = DataRowParser.ToInt(datos["lugar"]); omi = DataRowParser.ToString(datos["omi"]); }
private void llenarDatos(DataRow datos) { olimpiada = DataRowParser.ToString(datos["olimpiada"]); tipoOlimpiada = DataRowParser.ToTipoOlimpiada(datos["clase"]); dia = DataRowParser.ToInt(datos["dia"]); numero = DataRowParser.ToInt(datos["numero"]); nombre = DataRowParser.ToString(datos["nombre"]); url = DataRowParser.ToString(datos["url"]); media = DataRowParser.ToStrictFloat(datos["media"]); perfectos = DataRowParser.ToInt(datos["perfectos"]); ceros = DataRowParser.ToInt(datos["ceros"]); mediana = DataRowParser.ToStrictFloat(datos["mediana"]); casos = DataRowParser.ToString(datos["casos"]); codigo = DataRowParser.ToString(datos["codigo"]); solucion = DataRowParser.ToString(datos["solucion"]); }
public void llenarDatos(DataRow r) { clave = DataRowParser.ToInt(r["clave"]); nombre = DataRowParser.ToString(r["nombre"]); omi = DataRowParser.ToString(r["olimpiada"]); tipoOlimpiada = DataRowParser.ToTipoOlimpiada(r["clase"]); estado = DataRowParser.ToString(r["estado"]); supervisor = DataRowParser.ToString(r["supervisor"]); telefono = DataRowParser.ToString(r["telefono"]); correo = DataRowParser.ToString(r["correo"]); supervisor2 = DataRowParser.ToString(r["supervisor2"]); telefono2 = DataRowParser.ToString(r["telefono2"]); correo2 = DataRowParser.ToString(r["correo2"]); supervisor3 = DataRowParser.ToString(r["supervisor3"]); telefono3 = DataRowParser.ToString(r["telefono3"]); correo3 = DataRowParser.ToString(r["correo3"]); }
private void llenarDatos(DataRow datos) { clave = DataRowParser.ToString(datos["clave"]); nombre = DataRowParser.ToString(datos["nombre"]); sitio = DataRowParser.ToString(datos["sitio"]); ISO = DataRowParser.ToString(datos["iso"]); extranjero = DataRowParser.ToBool(datos["ext"]); claveDelegado = DataRowParser.ToInt(datos["delegado"]); delegado = Persona.obtenerPersonaConClave(claveDelegado); if (delegado != null) { nombreDelegado = delegado.nombreCompleto; usuarioDelegado = delegado.usuario; mailDelegado = delegado.correo; } }
/// <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); }
private void llenarDatos(DataRow r) { id = DataRowParser.ToString(r["id"]); lastUpdated = DataRowParser.ToDateTime(r["lastUpdated"]); orden = DataRowParser.ToInt(r["orden"]); // Los datos generales no guardan nada mas if (id == ALBUM_GRAL) { return; } olimpiada = DataRowParser.ToString(r["olimpiada"]); tipoOlimpiada = DataRowParser.ToTipoOlimpiada(r["clase"]); fotos = DataRowParser.ToInt(r["fotos"]); nombre = DataRowParser.ToString(r["nombre"]); portada = DataRowParser.ToString(r["portada"]); newsletter = DataRowParser.ToBool(r["newsletter"]); }
/// <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); }
/// <summary> /// Calcula los estados de los cuales hay participantes para la escuela /// </summary> /// <param name="tipoOlimpiada">El tipo de olimpiada</param> private void consultarEstadosDeInstitucion(TipoOlimpiada tipoOlimpiada) { Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select distinct(estado) from MiembroDelegacion where institucion = "); query.Append(this.clave); 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); } }
private void llenarDatos(DataRow r) { clave = DataRowParser.ToInt(r["clave"]); instruccion = DataRowParser.ToInstruccion(r["tipo"]); olimpiada = DataRowParser.ToString(r["olimpiada"]); tipoOlimpiada = DataRowParser.ToTipoOlimpiada(r["clase"]); dia = DataRowParser.ToShort(r["dia"]); ping = DataRowParser.ToInt(r["ping"]); concurso = DataRowParser.ToString(r["concurso"]); token = DataRowParser.ToString(r["token"]); prefijo = DataRowParser.ToString(r["prefijo"]); status = DataRowParser.ToStatus(r["status"]); secondsToFinish = DataRowParser.ToInt(r["secondsToFinish"]); try { timestamp = new DateTime(DataRowParser.ToLong(r["timestamp"])); } catch (Exception) { } }
public static HashSet <string> obtenerOlimpiadasParaEstado(string estado) { HashSet <string> lista = new HashSet <string>(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select distinct(olimpiada) from MiembroDelegacion where estado = "); query.Append(Cadenas.comillas(estado)); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); Dictionary <string, Olimpiada> olimpiadas = getOlimpiadas(TipoOlimpiada.OMI); foreach (DataRow r in table.Rows) { string numero = DataRowParser.ToString(r[0]); lista.Add(numero); } return(lista); }
/// <summary> /// Llena los datos de una persona de la fila mandada como parametro /// </summary> /// <param name="datos">La fila con el origen de los datos</param> /// <param name="completo">Si es true, saca todos los datos de la fila, de ser false, solo nombre, usuario y clave</param> /// <param name="completo">Si es true, incluye datos privados como telefono y direccion </param> public void llenarDatos(DataRow datos, bool completo = true, bool incluirDatosPrivados = false) { clave = DataRowParser.ToInt(datos["clave"]); nombre = DataRowParser.ToString(datos["nombre"]); apellidoPaterno = DataRowParser.ToString(datos["apellidoP"]); apellidoMaterno = DataRowParser.ToString(datos["apellidoM"]); usuario = DataRowParser.ToString(datos["usuario"]); omips = DataRowParser.ToBool(datos["omips"]); oculta = DataRowParser.ToBool(datos["oculta"]); foto = DataRowParser.ToString(datos["foto"]); if (completo) { nacimiento = DataRowParser.ToDateTime(datos["nacimiento"]); facebook = DataRowParser.ToString(datos["facebook"]); twitter = DataRowParser.ToString(datos["twitter"]); sitio = DataRowParser.ToString(datos["sitio"]); correo = DataRowParser.ToString(datos["correo"]); permisos = DataRowParser.ToTipoPermisos(datos["permisos"]); genero = DataRowParser.ToString(datos["genero"]); ioiID = DataRowParser.ToInt(datos["ioiID"]); omegaup = DataRowParser.ToString(datos["omegaup"]); topcoder = DataRowParser.ToString(datos["topcoder"]); codeforces = DataRowParser.ToString(datos["codeforces"]); if (incluirDatosPrivados) { celular = DataRowParser.ToString(datos["celular"]); telefono = DataRowParser.ToString(datos["telefono"]); direccion = DataRowParser.ToString(datos["direccion"]); emergencia = DataRowParser.ToString(datos["emergencia"]); parentesco = DataRowParser.ToString(datos["parentesco"]); telEmergencia = DataRowParser.ToString(datos["telemergencia"]); medicina = DataRowParser.ToString(datos["medicina"]); alergias = DataRowParser.ToString(datos["alergias"]); } } }
/// <summary> /// Regresa como un arreglo de strings las claves para las que este delegado puede registrar /// competidores /// </summary> /// <returns>La lista de claves de estado</returns> public List <Estado> obtenerEstadosDeDelegado() { if (this.permisos != TipoPermisos.DELEGADO) { return(null); } List <Estado> estados = new List <Estado>(); Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); query.Append(" select distinct(estado) from MiembroDelegacion where persona ="); query.Append(this.clave); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); foreach (DataRow r in table.Rows) { estados.Add(Estado.obtenerEstadoConClave(DataRowParser.ToString(r[0]))); } return(estados); }
private void llenarDatos(DataRow datos) { clave = DataRowParser.ToInt(datos["clave"]); nombre = DataRowParser.ToString(datos["nombre"]); nombreCorto = DataRowParser.ToString(datos["nombrecorto"]); nombreURL = DataRowParser.ToString(datos["nombreurl"]); pagina = DataRowParser.ToString(datos["url"]); primaria = DataRowParser.ToBool(datos["primaria"]); secundaria = DataRowParser.ToBool(datos["secundaria"]); preparatoria = DataRowParser.ToBool(datos["preparatoria"]); universidad = DataRowParser.ToBool(datos["universidad"]); publica = DataRowParser.ToBool(datos["publica"]); if (Archivos.existeArchivo(Archivos.Folder.ESCUELAS, clave + ".png")) { logo = clave + ".png"; } else { logo = Archivos.OMI_LOGO; } }
/// <summary> /// Busca en la base de datos de la OMI quiénes son delegados y les da permisos en este sitio /// </summary> public static void syncDelegados() { Acceso db = new Acceso(); StringBuilder query = new StringBuilder(); Usuario usuario = new Usuario(); query.Append(" select Email, NombreCompleto from "); query.Append(tableName("usuarios.vwUsuarios")); query.Append(" where idGrupo='DEL'"); db.EjecutarQuery(query.ToString(), Acceso.BaseDeDatos.OMI); DataTable table = db.getTable(); foreach (DataRow r in table.Rows) { string correo = DataRowParser.ToString(r[0]); string nombre = DataRowParser.ToString(r[1]); Persona p = Persona.obtenerPersonaConCorreo(correo); if (p == null) { p = Persona.obtenerPersonaConNombre(nombre); if (p == null) { // No se encontró persona con nombre o correo, creamos una nueva p = new Persona(); p.nombre = nombre; p.correo = correo; p.breakNombre(); p.nuevoUsuario(Archivos.FotoInicial.DOMI); } } p.permisos = Persona.TipoPermisos.DELEGADO; p.guardarDatos(); } }
public static void trim(string omi, TipoOlimpiada tipo, int tiempo, int dia = 1) { if (dia > 2) { return; } StringBuilder query = new StringBuilder(); Acceso db = new Acceso(); // Primero obtenemos una lista de todos los timestamps mas grandes query.Append(" select clave, 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(" group by clave "); db.EjecutarQuery(query.ToString()); DataTable table = db.getTable(); foreach (DataRow r in table.Rows) { string clave = DataRowParser.ToString(r[0]); int timestamp = DataRowParser.ToInt(r[1]); // Si el último timestamp es diferente del tiempo que tenemos... if (timestamp != tiempo) { // ...borramos todos las entradas superiores y menores al que tenemos query.Clear(); query.Append(" delete 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)); query.Append(" and timestamp >= "); query.Append(tiempo); query.Append(" and timestamp <> "); query.Append(timestamp); db.EjecutarQuery(query.ToString()); // ... y actualizamos el que tenemos para que tenga ese timestamp query.Clear(); query.Append(" update DetalleLugar set timestamp = "); query.Append(tiempo); 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()); } } // Finalmente hacemos lo mismo con dia 2 trim(omi, tipo, tiempo, dia + 1); }
/// <summary> /// Llena los datos de un usuario de la fila mandada como parametro /// </summary> /// <param name="datos">La fila con el origen de los datos</param> private void llenarDatos(DataRow datos) { Id = DataRowParser.ToLong(datos["Id"]); Email = DataRowParser.ToString(datos["Email"]); Nombre = DataRowParser.ToString(datos["NombreCompleto"]); }
public void llenarDatos(DataRow datos) { clave = DataRowParser.ToInt(datos["clave"]); nombre = DataRowParser.ToString(datos["nombre"]); }
private void llenarDatos(DataRow row) { clave = DataRowParser.ToString(row["clave"]); lugar = DataRowParser.ToInt(row["lugar"]); medalla = DataRowParser.ToTipoMedalla(row["medalla"]); }
private void llenarDatos(DataRow datos) { numero = DataRowParser.ToString(datos["numero"]); tipoOlimpiada = DataRowParser.ToTipoOlimpiada(datos["clase"]); ciudad = DataRowParser.ToString(datos["ciudad"]); pais = DataRowParser.ToString(datos["pais"]); año = DataRowParser.ToStrictFloat(datos["año"]); inicio = DataRowParser.ToDateTime(datos["inicio"]); fin = DataRowParser.ToDateTime(datos["fin"]); video = DataRowParser.ToString(datos["video"]); poster = DataRowParser.ToString(datos["poster"]); estados = DataRowParser.ToInt(datos["estados"]); participantes = DataRowParser.ToInt(datos["participantes"]); datosPublicos = DataRowParser.ToBool(datos["datospublicos"]); relacion = DataRowParser.ToString(datos["relacion"]); reporte = DataRowParser.ToString(datos["reporte"]); problemasDia1 = DataRowParser.ToInt(datos["problemasDia1"]); problemasDia2 = DataRowParser.ToInt(datos["problemasDia2"]); mostrarResultadosPorDia = DataRowParser.ToBool(datos["mostrarResultadosPorDia"]); mostrarResultadosPorProblema = DataRowParser.ToBool(datos["mostrarResultadosPorProblema"]); mostrarResultadosTotales = DataRowParser.ToBool(datos["mostrarResultadosTotales"]); puntosDesconocidos = DataRowParser.ToBool(datos["puntosDesconocidos"]); alsoOmips = DataRowParser.ToBool(datos["alsoOmips"]); alsoOmipsOnline = DataRowParser.ToBool(datos["alsoOmipsOnline"]); noMedallistasConocidos = DataRowParser.ToBool(datos["noMedallistasConocidos"]); puntosDetallados = DataRowParser.ToBool(datos["puntosDetallados"]); registroActivo = DataRowParser.ToBool(datos["registroActivo"]); diplomasOnline = DataRowParser.ToBool(datos["diplomasOnline"]); esOnline = DataRowParser.ToBool(datos["esOnline"]); registroSedes = DataRowParser.ToBool(datos["registroSedes"]); ordenarPorPuntos = DataRowParser.ToBool(datos["ordenarPorPuntos"]); claveEstado = DataRowParser.ToString(datos["estado"]); Estado estado = Estado.obtenerEstadoConClave(claveEstado); if (estado != null) { nombreEstado = estado.nombre; } claveEscuela = DataRowParser.ToInt(datos["escuela"]); Institucion institucion = Institucion.obtenerInstitucionConClave(claveEscuela); if (institucion != null) { nombreEscuela = institucion.nombreCorto; escuelaURL = institucion.nombreURL; nombreEscuelaCompleto = institucion.nombre; } if (inicio.Year > 1990) { if (inicio.Month == fin.Month) { friendlyDate = "Del " + inicio.Day + " al " + Fechas.friendlyString(fin); } else { friendlyDate = "Del " + Fechas.friendlyString(inicio) + " al " + Fechas.friendlyString(fin); } } if (Archivos.existeArchivo(Archivos.Folder.OLIMPIADAS, numero + ".png")) { logo = numero + ".png"; } else { logo = Archivos.OMI_LOGO; } if (numero != TEMP_CLAVE && (tipoOlimpiada == TipoOlimpiada.OMIP || tipoOlimpiada == TipoOlimpiada.OMIS || tipoOlimpiada == TipoOlimpiada.OMIPO || tipoOlimpiada == TipoOlimpiada.OMISO)) { omisActualNumber = (Int32.Parse(numero) - OMIS_SIN_OMIPS).ToString(); } datosGenerales = Problema.obtenerProblema(numero, tipoOlimpiada, 0, 0); }