Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Activities;
- using Microsoft.Xrm.Sdk.Workflow;
- using Microsoft.Xrm.Sdk;
- using Microsoft.Xrm.Sdk.Query;
- namespace Federgon.ExtranetUsers.Workflows
- {
- public sealed class FindExtranetUserActivity : CodeActivity
- {
- [Input("Full Name")]
- public InArgument<string> FullName { get; set; }
- [Input("Account")]
- [ReferenceTarget("account")]
- [RequiredArgument]
- public InArgument<EntityReference> Account { get; set; }
- [Input("Company Grouping")]
- [ReferenceTarget("fed_companygrouping")]
- public InArgument<EntityReference> CompanyGrouping { get; set; }
- [Output("Extranet User")]
- [ReferenceTarget("fed_extranetuser")]
- public OutArgument<EntityReference> ExtranetUser { get; set; }
- [Output("Number of Extranet Users found")]
- public OutArgument<int> NumberOfExtranetUsersFound { get; set; }
- protected override void Execute(CodeActivityContext executionContext)
- {
- // Create the tracing service
- var tracingService = executionContext.GetExtension<ITracingService>();
- // Create the context
- var context = executionContext.GetExtension<IWorkflowContext>();
- var serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
- var service = serviceFactory.CreateOrganizationService(context.UserId);
- // Construct query
- var q = new QueryByAttribute("fed_extranetuser")
- {
- ColumnSet = new ColumnSet("fed_extranetuserid")
- };
- // Find by Account
- if (Account != null)
- {
- tracingService.Trace("Find Extranet User by Account");
- q.AddAttributeValue("fed_mainaccountid", Account.Get(executionContext));
- }
- // Find by Company Grouping
- if (CompanyGrouping != null)
- {
- tracingService.Trace("Find Extranet User by Company Grouping");
- q.AddAttributeValue("fed_companygroupingid", CompanyGrouping.Get(executionContext));
- }
- // Retrieve value and return first if single result
- var results = service.RetrieveMultiple(q);
- NumberOfExtranetUsersFound.Set(executionContext, results.Entities.Count);
- tracingService.Trace("Found {0} result(s)", results.Entities.Count);
- // Return 1 Extranet User if possible
- if (results.Entities.Count > 0) ExtranetUser.Set(executionContext, results.Entities[0].ToEntityReference());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement