/// <summary> /// Regresa la tabla de asistentes en un formato tabulado con comas /// para la edición manual para admins /// </summary> /// <returns>La tabla tabulada con comas</returns> public string obtenerTablaAsistentes(bool esParaRegistro = false, bool incluirCabeceras = false, bool esParaOmegaUp = false) { List <MiembroDelegacion> asistentes = MiembroDelegacion.cargarAsistentesOMI(numero, tipoOlimpiada, esParaRegistro: true); StringBuilder tabla = new StringBuilder(); if (incluirCabeceras) { // Incluimos cabeceras de datos tabla.Append("nivel omi, nombre, estado, tipo asistente, clave, fecha nacimiento, "); tabla.Append(" genero, correo, escuela, nivel escuela, año escolar, publica o privada, "); tabla.Append(" celular, telefono, direccion, omegaup, emergencia, parentesco, "); tabla.Append(" telefono emergencia, medicina, alergias"); if (this.esOnline) { tabla.Append(", sede"); } tabla.Append("\n"); } if (esParaOmegaUp) { tabla.Append("username,name,country_id,state_id,gender,school_name\n"); foreach (MiembroDelegacion asistente in asistentes) { if (asistente.tipo == MiembroDelegacion.TipoAsistente.COMPETIDOR) { Persona p = Persona.obtenerPersonaConClave(asistente.claveUsuario, completo: true, incluirDatosPrivados: true); Estado e = Estado.obtenerEstadoConClave(asistente.estado); tabla.Append(asistente.clave); tabla.Append(","); tabla.Append(p.nombreCompleto); tabla.Append(","); if (e.extranjero) { tabla.Append(e.sitio); // Guardamos el ISO necesario para el país en este campo dado que no se usa para extranjeros } else { tabla.Append("MX"); tabla.Append(","); tabla.Append(e.ISO); } tabla.Append(","); tabla.Append(p.genero == "M" ? "male" : "female"); tabla.Append(","); tabla.Append(asistente.nombreEscuela); tabla.Append("\n"); } } } else { foreach (MiembroDelegacion asistente in asistentes) { if (esParaRegistro) { tabla.Append(tipoOlimpiada); tabla.Append(","); } tabla.Append(asistente.obtenerLineaAdmin(esParaRegistro: esParaRegistro)); if (esParaRegistro) { Persona p = Persona.obtenerPersonaConClave(asistente.claveUsuario, completo: true, incluirDatosPrivados: true); tabla.Append(p.obtenerLineaAdmin()); if (this.esOnline) { tabla.Append(","); SedeOnline so = SedeOnline.obtenerSedeConClave(asistente.sede); if (so != null) { tabla.Append(Cadenas.comillas(so.nombre, "\"")); } } } tabla.Append("\n"); } } return(tabla.ToString()); }