Created
July 17, 2019 04:59
-
-
Save muhammad-naderi/cdf1ef63dfde131327a1cd2da28c1a45 to your computer and use it in GitHub Desktop.
Dynamics365 - Check if a user exists in a team
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Activities; | |
using System.Linq; | |
using Microsoft.Xrm.Sdk; | |
using Microsoft.Xrm.Sdk.Workflow; | |
namespace GeneralTools | |
{ | |
public class UserExistsInTeam : CodeActivity | |
{ | |
public IWorkflowContext context; | |
public IOrganizationServiceFactory serviceFactory; | |
public IOrganizationService service; | |
protected override void Execute(CodeActivityContext executionContext) | |
{ | |
context = executionContext.GetExtension<IWorkflowContext>(); | |
serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>(); | |
service = serviceFactory.CreateOrganizationService(context.UserId); | |
var userEr = UserArgument.Get<EntityReference>(executionContext); | |
var teamEr = TeamArg.Get<EntityReference>(executionContext); | |
var teamUsers = GetTeamMembers(teamEr.Id, service); | |
var existence = teamUsers?.Entities?.ToList().Any(user => userEr.Id.Equals(user.Id)) ?? false; | |
ExistenceArg.Set(executionContext, existence); | |
} | |
private static EntityCollection GetTeamMembers(Guid teamGuid, IOrganizationService service) | |
{ | |
var userQuery = new QueryExpression("systemuser"); | |
userQuery.ColumnSet = new ColumnSet(true); | |
var teamLink = new LinkEntity("systemuser", "teammembership", "systemuserid", "systemuserid", JoinOperator.Inner); | |
var teamCondition = new ConditionExpression("teamid", ConditionOperator.Equal, teamGuid); | |
teamLink.LinkCriteria.AddCondition(teamCondition); | |
userQuery.LinkEntities.Add(teamLink); | |
var retrievedUsers = service.RetrieveMultiple(userQuery); | |
return retrievedUsers; | |
} | |
[Input("User")] | |
[ReferenceTarget("systemuser")] | |
[RequiredArgument] | |
public InArgument<EntityReference> UserArgument { get; set; } | |
[Input("Team")] | |
[ReferenceTarget("team")] | |
[RequiredArgument] | |
public InArgument<EntityReference> TeamArg { get; set; } | |
[Output("Exists")] | |
public OutArgument<bool> ExistenceArg { get; set; } | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment