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 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"]); }
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) { } }
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); }
public ActionResult Asistente(HttpPostedFileBase file, Persona p, string omi, string tipoOriginal, string estado, string claveSelect, int persona, string claveOriginal, int selectEscuela = 0, string nombreEscuela = null, int selectAnioEscolar = 0, Institucion.NivelInstitucion selectNivelEscolar = Institucion.NivelInstitucion.NULL, TipoOlimpiada tipo = TipoOlimpiada.NULL, bool selectPublica = true, MiembroDelegacion.TipoAsistente tipoAsistente = MiembroDelegacion.TipoAsistente.NULL, int sede = -1) { // Se valida que el usuario tenga permiso para realizar esta acción Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(omi, tipo == TipoOlimpiada.NULL ? TipoOlimpiada.OMI : tipo); if (String.IsNullOrEmpty(estado) || tipo == TipoOlimpiada.NULL || tipoAsistente == MiembroDelegacion.TipoAsistente.NULL || o == null) { return(RedirectTo(Pagina.HOME)); } failSafeViewBag(); ViewBag.omi = o; if (!tienePermisos(o.registroActivo || o.registroSedes, estado)) { ViewBag.errorInfo = "permisos"; return(View(new Persona())); } bool modifyMode = !String.IsNullOrEmpty(claveOriginal); // Se valida que haya espacio para registrar otro competidor if (!esAdmin() && !modifyMode && tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR && !puedeRegistrarOtroMas(o, tipo, estado)) { ViewBag.errorInfo = "limite"; return(View(new Persona())); } // Se valida que el miembro delegacion que se está modificando (en caso de update), exista MiembroDelegacion md = null; TipoOlimpiada tipoO = TipoOlimpiada.NULL; Institucion i = null; if (modifyMode) { tipoO = DataRowParser.ToTipoOlimpiada(tipoOriginal); var temp = MiembroDelegacion.obtenerMiembrosConClave(omi, tipoO, claveOriginal); if (temp.Count == 0) { ViewBag.errorInfo = "invalido"; return(View(new Persona())); } if (temp.Count > 1) { ViewBag.errorInfo = "duplicado"; return(View(new Persona())); } md = temp[0]; if (!p.esSuperUsuario() && md.estado != estado) { ViewBag.errorInfo = "permisos"; return(View(new Persona())); } } // Se valida que la clave que se eligió sea valida para el estado Estado e = Estado.obtenerEstadoConClave(estado); if (claveSelect != null && tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR && !claveSelect.StartsWith(e.ISO)) { claveSelect = ""; } if (persona != 0) { p.clave = persona; } // Se regresan todos los valores al viewbag en caso de error ViewBag.claveDisponible = claveSelect; ViewBag.estado = e; ViewBag.md = md; ViewBag.omi = o; ViewBag.tipo = tipo; ViewBag.estados = Estado.obtenerEstados(); ViewBag.tipoAsistente = tipoAsistente; limpiarErroresViewBag(); ViewBag.resubmit = true; bool hayResultados = Resultados.hayResultadosParaOMI(o.numero); ViewBag.hayResultados = hayResultados; if (o.esOnline && !p.esSuperUsuario()) { ViewBag.sedes = SedeOnline.obtenerSedes(o.numero, estado, tipo); } if (tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR) { ViewBag.escuelas = Institucion.obtenerEscuelasDeEstado(tipo, estado); ViewBag.claveEscuela = selectEscuela; ViewBag.añoEscuela = selectAnioEscolar; ViewBag.nivelEscuela = selectNivelEscolar.ToString(); if (selectEscuela > 0) { i = Institucion.obtenerInstitucionConClave(selectEscuela); if (i == null) { ViewBag.nombreEscuela = ""; ViewBag.claveEscuela = 0; } else { ViewBag.nombreEscuela = i.nombre; } } else { ViewBag.nombreEscuela = nombreEscuela; ViewBag.publica = selectPublica; } } // Validaciones extra de la foto if (file != null) { var valida = Archivos.esImagenValida(file, Peticion.TamañoFotoMaximo); if (valida != Archivos.ResultadoImagen.VALIDA) { ViewBag.errorImagen = valida.ToString().ToLower(); return(View(p)); } } // Validaciones del modelo if (!ModelState.IsValid) { return(View(p)); } bool isOMIPOS = TableManager.isOMIPOS(tipo); if ((tipo == TipoOlimpiada.OMIP || tipo == TipoOlimpiada.OMIS || isOMIPOS) && tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR) { p.omips = true; } List <MiembroDelegacion> miembrosExistentes = MiembroDelegacion.obtenerMiembrosDelegacion(omi, estado, tipo); bool registroCerrado = false; if (miembrosExistentes.Count > 0) { registroCerrado = miembrosExistentes[0].cerrado; } // Validaciones terminadas, guardamos persona y miembro delegacion // Primero en caso de que sea un nuevo miembro de la delegación if (md == null) { // Si la persona es 0, intentamos hacer match basándonos en el nombre, y solamente en el nombre if (persona == 0) { Persona pe = Persona.obtenerPersonaConNombre(p.nombreCompleto); if (pe != null) { persona = pe.clave; } } // Nuevo asistente if (persona == 0) { // Si no hay clave de persona previa, se agrega una nueva persona p.nuevoUsuario(); } else { // Si tengo clave, se intenta conseguir Persona per = Persona.obtenerPersonaConClave(persona); if (per == null) { ViewBag.errorInfo = "persona"; return(View(new Persona())); } p.clave = per.clave; p.oculta = per.oculta; p.omips = per.omips; } if (tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR) { if (isOMIPOS) { if (persona == 0) { p.oculta = true; } } else { p.oculta = false; } } p.foto = guardaFoto(file, p.clave); p.guardarDatos(generarPeticiones: false, lugarGuardado: Persona.LugarGuardado.REGISTRO); // Se genera un nuevo miembro delegacion md = new MiembroDelegacion(); md.olimpiada = o.numero; md.tipoOlimpiada = tipo; md.estado = estado; md.clave = claveSelect; md.tipo = tipoAsistente; md.claveUsuario = p.clave; md.sede = sede; md.cerrado = registroCerrado; md.nuevo(); // Se registra la telemetria Log.add(Log.TipoLog.REGISTRO, "Usuario " + getUsuario().nombreCompleto + " registró a " + p.nombreCompleto + " en el estado " + md.estado + " con clave " + md.clave + " en la categoría " + md.tipoOlimpiada.ToString()); } else { // Si ya hay resultados no podemos cambiar la clave, estado, o tipo de OMI if (hayResultados) { tipo = md.tipoOlimpiada; claveSelect = md.clave; estado = md.estado; // Adicionalmente si es competidor, no se piuede cambiar su tipo de asistencia // ni volver a alguien mas competidor if (md.tipo == MiembroDelegacion.TipoAsistente.COMPETIDOR || tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR) { tipoAsistente = md.tipo; } } // Modificando asistente // Primero los datos de persona Persona per = Persona.obtenerPersonaConClave(md.claveUsuario); if (!modifyMode && tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR && !isOMIPOS) { per.oculta = false; } p.clave = per.clave; p.oculta = per.oculta; p.omips = per.omips; p.foto = guardaFoto(file, p.clave); p.guardarDatos(generarPeticiones: false, lugarGuardado: Persona.LugarGuardado.REGISTRO); // Luego el miembro delegacion md.tipoOlimpiada = tipo; md.estado = estado; md.clave = claveSelect; md.tipo = tipoAsistente; md.sede = sede; md.cerrado = registroCerrado; md.guardarDatos(claveOriginal, tipoO); // Se registra la telemetria Log.add(Log.TipoLog.REGISTRO, "Usuario " + getUsuario().nombreCompleto + " actualizó a " + p.nombreCompleto + " en el estado " + md.estado + " con clave " + md.clave + " en la categoría " + md.tipoOlimpiada.ToString()); } // Ahora se guarda la escuela if (tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR) { // La escuela ya se consultó en la sección de viewbag, si es null, se llenó la sección de escuela nueva if (i == null) { if (!String.IsNullOrEmpty(nombreEscuela)) { // La escuela aun puede ya existir pero no la vieron y la volvieron a escribir, // aqui tratamos de ver si ya existe i = Institucion.buscarInstitucionConNombre(nombreEscuela); if (i == null) { // Se genera una nueva escuela vacía y se asignan los datos que tenemos i = new Institucion(); i.nuevaInstitucion(); i.nombre = nombreEscuela; i.publica = selectPublica; } } } // Si en este punto tenemos una escuela, actualizamos los datos de la escuela y // actualizamos el miembro delegacion if (i != null) { switch (selectNivelEscolar) { case Institucion.NivelInstitucion.PRIMARIA: i.primaria = true; break; case Institucion.NivelInstitucion.SECUNDARIA: i.secundaria = true; break; case Institucion.NivelInstitucion.PREPARATORIA: i.preparatoria = true; break; } i.guardar(generarPeticiones: false); md.claveEscuela = i.clave; md.nivelEscuela = selectNivelEscolar; md.añoEscuela = selectAnioEscolar; md.guardarDatosEscuela(); } } ViewBag.guardado = true; return(View(p)); }