Ya hemos hablado en otras ocasiones de los Perfiles de Usuarios, hoy toca entrar un poco en detalle en la clase que define un perfil de usuario y la funcionalidad que nos expone.
La clase UserProfile nos permite trabajar con los datos un perfil de usuario, tanto para poder crearlo, modificar su información u obtener sus valores. Por ejemplo, nuestro departamento de RRHH quiere lanzar unas evaluaciones internas entre el personal y necesita que cada persona evalué a sus compañeros, que cada responsable evalúe a sus subordinados y que, a su vez, cada uno evalúe a su responsable directo. Para esto, prepararemos unos Web Parts que muestren a quien tienes que evaluar, con un enlace a la encuesta que le corresponde a cada uno.
El primer Web Part, mostrará los compañeros del usuario actual con un enlace a la encuesta, para esto, tenemos que poder obtener los compañeros del perfil de usuario actual.
GetPeers
//Instanciamos un Contexto de Servicio para el UserProfileManager
SPServiceContext serviceContext = SPServiceContext.GetContext(SPContext.Current.Site);
UserProfileManager myUpm = new UserProfileManager(serviceContext);
//Obtenemos el Perfil del usuario actual
var profile = myUpm.GetUserProfile(SPContext.Current.Web.CurrentUser.LoginName);
//Tenemos un método GetPeers, que nos devuelve los perfiles de usuario que comparten Manager
var peers = profile.GetPeers();
El segundo Web Part, deberá de mostrar los perfiles que reportan al usuario actual, usando el método siguiente:
GetDirectReports
SPServiceContext serviceContext = SPServiceContext.GetContext(SPContext.Current.Site);
UserProfileManager myUpm = new UserProfileManager(serviceContext);
var profile = myUpm.GetUserProfile(userName);
//Obtiene los perfiles de usuario que tienen como manager el usuario actual
var reports = profile.GetDirectReports();
Nos queda un Web Part que nos muestre quien es nuestro responsable y para eso tenemos el método GetManager.
En cada Web Part, se ha puesto un enlace a la encuesta a la que le pasamos por parámetro a quien se va a encuestar de la sigiuente forma:
http://sharepoint/lists/encuesta/NewForm.aspx?persona=dominiousuario
Editando el formulario NewForm.aspx, añadimos codigo Javascript para que lee el parámetro de la url y establezca el campo Encuestado, que es de tipo persona, con ese valor.
Cabe destacar la importancia de los datos de los perfiles y que se mantengan actualizados y al día con la información de la empresa, esto nos permitirá generar procesos de negocio como este ejemplo.
Saludos a todos…