/// <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"]); } } }
public ActionResult Edit(HttpPostedFileBase file, Persona p, string tipoUsuario) { if (!estaLoggeado() || p == null) { return(RedirectTo(Pagina.HOME)); } Persona current = getUsuario(); bool esSuperUsuario = current.esSuperUsuario(); if (p.clave != current.clave) { if (!esSuperUsuario) { return(RedirectTo(Pagina.ERROR, 403)); } current = Persona.obtenerPersonaConClave(p.clave); } if (!ModelState.IsValid) { return(Edit(current.usuario)); } limpiarErroresViewBag(); #if !DEBUG if (!esSuperUsuario && !revisaCaptcha()) { ViewBag.errorCaptcha = true; return(Edit(current.usuario)); } #endif // Validaciones foto if (file != null) { Archivos.ResultadoImagen resultado = Archivos.esImagenValida(file, Peticion.TamañoFotoMaximo); if (resultado != Archivos.ResultadoImagen.VALIDA) { ViewBag.errorImagen = resultado.ToString().ToLower(); return(Edit(current.usuario)); } } // Validacion genero if (String.IsNullOrEmpty(p.genero) || p.genero.Equals("M")) { p.genero = "M"; } else { p.genero = "F"; } // Validación permisos if (esSuperUsuario && tipoUsuario != null && tipoUsuario != "") { Persona.TipoPermisos permisos; permisos = DataRowParser.ToTipoPermisos(tipoUsuario); if (permisos == Persona.TipoPermisos.ADMIN && !esAdmin()) { return(RedirectTo(Pagina.ERROR, 403)); } p.permisos = permisos; } else { p.permisos = current.permisos; } // Se copian los datos que no se pueden modificar p.clave = current.clave; if (!esAdmin()) { p.ioiID = current.ioiID; p.oculta = current.oculta; } p.usuario = current.usuario; p.omips = current.omips; // Se guarda la imagen en disco if (file != null) { p.foto = Archivos.guardaArchivo(file); } // Se guardan los datos if (p.guardarDatos(generarPeticiones: !esSuperUsuario, currentValues: current)) { if (!esSuperUsuario) { Log.add(Log.TipoLog.USUARIO, p.nombreCompleto + " actualizó sus datos"); } // Se modificaron los datos del usuario, tenemos que recargarlos en la variable de sesion recargarDatos(); if (esSuperUsuario) { if (file != null) { string oldFoto = p.foto; p.foto = Archivos.copiarArchivo(p.foto, Archivos.Folder.TEMPORAL, p.clave.ToString(), Archivos.Folder.USUARIOS); Archivos.eliminarArchivo(oldFoto, Archivos.Folder.TEMPORAL); p.guardarDatos(); } guardarParams(Pagina.SAVED_PROFILE, OK); return(RedirectTo(Pagina.SAVED_PROFILE, current.usuario)); } if (file != null || p.nombreCompleto != current.nombreCompleto) { guardarParams(Pagina.SAVED_PROFILE, ADMIN); return(RedirectTo(Pagina.SAVED_PROFILE)); } else { guardarParams(Pagina.SAVED_PROFILE, OK); return(RedirectTo(Pagina.SAVED_PROFILE)); } } else { guardarParams(Pagina.SAVED_PROFILE, ERROR); return(RedirectTo(Pagina.SAVED_PROFILE)); } }