Existen muchas situaciones a lo largo de un desarrollo a medida en SharePoint que es necesario acceder programáticamente a los valores de las propiedades del perfil del usuario. En esta entrada vamos a ver como podemos leer y escribir valores en dichas propiedades.
El motivo por el cual se recomienda el uso de estas propiedades es, entre otras, lo eficiente que es su uso. El acceso es muy rápido, y el coste computacional es muy bajo comparado con el resto de propiedades.
Para poder acceder al perfil emplearemos la clase UserProfileManager, que nos proporciona la posibilidad de realizar acciones sobre los perfiles, como la creación, la recuperación o el borrado. Una vez recuperado un perfil en concreto, accederemos a la propiedad como si de una colección se tratase. El código es el siguiente:
public string LeerPropiedadPerfil(string loginUsuario, string propiedad)
{
string contenidoPropiedad = string.Empty;
try
{
//Leer de la propiedad
ServerContext context = ServerContext.GetContext(SPContext.Current.Site);
UserProfileManager profileManager = new UserProfileManager(context);
UserProfile up = profileManager.GetUserProfile(loginUsuario);
contenidoPropiedad = up[propiedad].Value.ToString();
}
catch (NullReferenceException ex)
{
//Existe la propiedad pero esta vacia. Esto provoca una excepcion que capturamos y controlamos
contenidoPropiedad = string.Empty;
}
catch (Exception ex)
{
//se ha producido un error en la lectura
//Controlamos el error de una forma adecuada.
}
return contenidoPropiedad;
} Para escribir en el perfil seguiremos un procedimiento análogo al de la lectura. El código es el siguiente:
public bool EscribirEnPropiedadPerfil(string nombrePropiedad,
string contenidoPropiedad, string loginUsuario)
{
bool exito = false;
try
{
//Escribir en la propiedad
ServerContext context = ServerContext.GetContext(SPContext.Current.Site);
UserProfileManager profileManager = new UserProfileManager(context);
UserProfile up = profileManager.GetUserProfile(loginUsuario);
up[nombrePropiedad].Value = contenidoPropiedad;
up.Commit();
exito = true;
}
catch (Exception ex)
{
//se ha producido un error de escritura
exito= false;
//Controlamos el error de una forma adecuada.
}
return exito
}
Otros artículos relacionados:

0 comentarios:
Publicar un comentario en la entrada