Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.71 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Activities;
  6. using Microsoft.Xrm.Sdk.Workflow;
  7. using Microsoft.Xrm.Sdk;
  8. using Microsoft.Xrm.Sdk.Query;
  9.  
  10. namespace Federgon.ExtranetUsers.Workflows
  11. {
  12.     public sealed class FindExtranetUserActivity : CodeActivity
  13.     {
  14.         [Input("Full Name")]
  15.         public InArgument<string> FullName { get; set; }
  16.  
  17.         [Input("Account")]
  18.         [ReferenceTarget("account")]
  19.         [RequiredArgument]
  20.         public InArgument<EntityReference> Account { get; set; }
  21.  
  22.         [Input("Company Grouping")]
  23.         [ReferenceTarget("fed_companygrouping")]
  24.         public InArgument<EntityReference> CompanyGrouping { get; set; }
  25.  
  26.         [Output("Extranet User")]
  27.         [ReferenceTarget("fed_extranetuser")]
  28.         public OutArgument<EntityReference> ExtranetUser { get; set; }
  29.  
  30.         [Output("Number of Extranet Users found")]
  31.         public OutArgument<int> NumberOfExtranetUsersFound { get; set; }
  32.  
  33.         protected override void Execute(CodeActivityContext executionContext)
  34.         {
  35.             // Create the tracing service
  36.             var tracingService = executionContext.GetExtension<ITracingService>();
  37.  
  38.             // Create the context
  39.             var context = executionContext.GetExtension<IWorkflowContext>();
  40.             var serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
  41.             var service = serviceFactory.CreateOrganizationService(context.UserId);
  42.  
  43.             // Construct query
  44.             var q = new QueryByAttribute("fed_extranetuser")
  45.             {
  46.                 ColumnSet = new ColumnSet("fed_extranetuserid")
  47.             };
  48.  
  49.             // Find by Account
  50.             if (Account != null)
  51.             {
  52.                 tracingService.Trace("Find Extranet User by Account");
  53.                 q.AddAttributeValue("fed_mainaccountid", Account.Get(executionContext));
  54.             }
  55.  
  56.             // Find by Company Grouping
  57.             if (CompanyGrouping != null)
  58.             {
  59.                 tracingService.Trace("Find Extranet User by Company Grouping");
  60.                 q.AddAttributeValue("fed_companygroupingid", CompanyGrouping.Get(executionContext));
  61.             }
  62.  
  63.             // Retrieve value and return first if single result
  64.             var results = service.RetrieveMultiple(q);
  65.             NumberOfExtranetUsersFound.Set(executionContext, results.Entities.Count);
  66.  
  67.             tracingService.Trace("Found {0} result(s)", results.Entities.Count);
  68.  
  69.             // Return 1 Extranet User if possible
  70.             if (results.Entities.Count > 0) ExtranetUser.Set(executionContext, results.Entities[0].ToEntityReference());
  71.         }
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement