viernes, 21 de septiembre de 2007

Como Obtener el rol de un usuario de CRM

Hola mis queridos CRM'eros, espero que como yo algun día ocupen estas funciones para obtener el rol de el usuario que esta logeado en crm y alguna operación ejecuta un WS.


//Para obtener el Guid Id del usuario que ejecuta el WS.
WhoAmIRequest userRequest = new WhoAmIRequest();
WhoAmIResponse userResp = (WhoAmIResponse)
oCrmService.Execute(userRequest);
userResp.UserId;
string UserRole=GetRole(userResp.UserId;)


private String GetRole(Guid UserID) {
CrmService oCrmService = new CrmService();
oCrmService.Credentials = System.Net.CredentialCache.DefaultCredentials;
QueryExpression qe = new QueryExpression();
qe.EntityName = "role";
qe.ColumnSet = new AllColumns();
LinkEntity le = new LinkEntity();
le.LinkFromEntityName = "role";
le.LinkFromAttributeName = "roleid";
le.LinkToEntityName = "systemuserroles";
le.LinkToAttributeName = "roleid";

LinkEntity le2 = new LinkEntity();
le2.LinkFromEntityName = "systemuserroles";
le2.LinkFromAttributeName = "systemuserid";
le2.LinkToEntityName = "systemuser";
le2.LinkToAttributeName = "systemuserid";
ConditionExpression ce = new ConditionExpression();
ce.AttributeName = "systemuserid";
ce.Operator = ConditionOperator.Equal;
ce.Values = new object[]{UserID};

le2.LinkCriteria = new FilterExpression();
le2.LinkCriteria.Conditions = new ConditionExpression[]{ce};

le.LinkEntities = new LinkEntity[]{le2};
qe.LinkEntities = new LinkEntity[]{le};

BusinessEntityCollection bec = oCrmService.RetrieveMultiple(qe);
if (bec.BusinessEntities.Length > 0) {
return ((role)bec.BusinessEntities[0]).name.ToString();
}
else
throw new Exception("User not found");
}


Saludos!!!

No hay comentarios: