Páginas

segunda-feira, 25 de junho de 2012

Recuperando dados de um usuário do SharePoint programaticamente, usando PeopleEditor e web.SiteUserInfoList.

Em algum momento, você já precisou acessar informações de um usuário do SharePoint? Informações como cidade, estado, endereço, escritório... Detalhes que podem ser introduzidos manualmente, bem como importados do Active Directory. Neste tutorial, mostrarei como é possível recuperar estas informações, através de um controle PeopleEditor e de uma lista oculta do SharePoint.

Vamos começar, então...

Suponho que você já registrou os assemblies do SharePoint (caso contrário, favor ver o tutorial do dia 30/11/2010, onde mostro como usar controles do SharePoint em uma application page). Desta forma, adicione um controle PeopleEditor em sua page:
<SharePoint:PeopleEditor ID="peopleEditor" AllowEmpty="false" ValidatorEnabled="true" MultiSelect="false" runat="server" SelectionSet="User" Width="300px" />
A propriedade AllowEmpty indica se este campo poderá ficar vazio. ValidatorEnabled permite a exibição de uma mensagem de erro, pedindo que o campo seja preenchido. MultiSelect torna possível selecionar mais de um usuário.

Buscando um usuário na lista oculta do SharePoint

Navegue até /_catalogs/users/detail.aspx e veja os registros de usuários no portal, com atributos como Imagem, Nome, Cargo, entre outros. Para acessar programaticamente estas informações através do usuário escolhido no PeopleEditor, podemos usar uma consulta CAML ou percorrer cada um dos registros da lista, "manualmente". Não deveria, mas escolhi a segunda opção. Veja o código abaixo:

string nome;
string departamento;
string cidade;
SPListItemCollection usuarios = web.SiteUserInfoList.Items;
foreach (SPListItem user in usuarios)
{
//se encontrou o usuário no SharePoint, recupera o nome, departamento e cidade dele.
if (user["Name"].ToString() == peopleEditor.CommaSeparatedAccounts)
{
nome = user["Name"].ToString();
departamento = user["Department"].ToString();
cidade = user["City"].ToString();
}
}

Lembrando que não tratei exceções no código acima. Caso uma das propriedades (nome, departamento ou cidade) esteja vazia no SharePoint, uma exceção será lançada, portanto, pense nesta situação.

Mais atributos dentro de um registro em web.SiteUserInfoList podem ser referenciados: Office (escritório), JobTitle (função na empresa), Address (endereço), Picture (imagem usada no perfil), entre outros. Lembre sempre de tratar possíveis exceções lançadas em uma consulta deste tipo.
Estas informações do usuário podem ser editadas no próprio SharePoint. Basta clicar no seu nome de usuário (no topo da página), e depois em "Minhas definições".

Críticas são muito bem-vindas. Aguardo sua opinião sobre o artigo no diego@sharepointhelp.com.br.

Nenhum comentário:

Postar um comentário