private List <MetaPlugin> GetPlugins(string[] solutions) { var plugins = new List <MetaPlugin>(); if (solutions == null || solutions.Length == 0) { return(plugins); } var pluginSteps = GetPluginSteps(solutions); //get the images var images = GetImages(solutions); foreach (var pluginStep in pluginSteps.Entities) { var metaPlugin = new MetaPlugin() { Name = pluginStep.GetAttributeValue <string>("name"), Rank = pluginStep.GetAttributeValue <int>("rank"), FilteredAttributes = pluginStep.GetAttributeValue <string>("filteringattributes"), Mode = pluginStep.GetAttributeValue <OptionSetValue>("mode").Value, Stage = pluginStep.GetAttributeValue <OptionSetValue>("stage").Value, MessageName = pluginStep.GetAttributeValue <EntityReference>("sdkmessageid").Name, AssemblyName = pluginStep.GetAttributeValue <EntityReference>("eventhandler").Name, PluginTypeAssemblyName = pluginStep.GetAttributeValue <AliasedValue>("plugintype.assemblyname").Value.ToString(), ImpersonatingUserId = pluginStep.Contains("impersonatinguserid") ? pluginStep.GetAttributeValue <EntityReference>("impersonatinguserid").Id : (Guid?)null, PrimaryEntity = pluginStep.GetAttributeValue <AliasedValue>("sdkmessagefilter.primaryobjecttypecode")?.Value as string ?? "", // In case of AnyEntity use "" Images = images.Entities .Where(x => x.GetAttributeValue <EntityReference>("sdkmessageprocessingstepid").Id == pluginStep.Id) .Select(x => new MetaImage { Attributes = x.GetAttributeValue <string>("attributes"), EntityAlias = x.GetAttributeValue <string>("entityalias"), ImageType = x.GetAttributeValue <OptionSetValue>("imagetype").Value, Name = x.GetAttributeValue <string>("name") }) .ToList() }; if (metaPlugin.PrimaryEntity == "none") { metaPlugin.PrimaryEntity = ""; } plugins.Add(metaPlugin); } return(plugins); }
private List <MetaPlugin> GetPlugins(string[] solutions) { if (solutions == null || solutions.Length == 0) { return(new List <MetaPlugin>()); } var pluginQuery = new QueryExpression("sdkmessageprocessingstep") { ColumnSet = new ColumnSet("eventhandler", "stage", "mode", "rank", "sdkmessageid", "filteringattributes", "name"), Criteria = new FilterExpression() }; pluginQuery.Criteria.AddCondition("statecode", ConditionOperator.Equal, 0); var sdkMessageFilterQuery = new LinkEntity("sdkmessageprocessingstep", "sdkmessagefilter", "sdkmessagefilterid", "sdkmessagefilterid", JoinOperator.Inner) { Columns = new ColumnSet("primaryobjecttypecode"), EntityAlias = "sdkmessagefilter", LinkCriteria = new FilterExpression() }; pluginQuery.LinkEntities.Add(sdkMessageFilterQuery); var solutionComponentQuery = new LinkEntity("sdkmessageprocessingstep", "solutioncomponent", "sdkmessageprocessingstepid", "objectid", JoinOperator.Inner) { Columns = new ColumnSet(), LinkCriteria = new FilterExpression() }; pluginQuery.LinkEntities.Add(solutionComponentQuery); var solutionQuery = new LinkEntity("solutioncomponent", "solution", "solutionid", "solutionid", JoinOperator.Inner) { Columns = new ColumnSet(), LinkCriteria = new FilterExpression() }; solutionQuery.LinkCriteria.AddCondition("uniquename", ConditionOperator.In, solutions); solutionComponentQuery.LinkEntities.Add(solutionQuery); var imagesQuery = new QueryExpression { EntityName = "sdkmessageprocessingstepimage", ColumnSet = new ColumnSet("attributes", "entityalias", "name", "imagetype", "sdkmessageprocessingstepid"), LinkEntities = { new LinkEntity("sdkmessageprocessingstepimage", "sdkmessageprocessingstep", "sdkmessageprocessingstepid", "sdkmessageprocessingstepid", JoinOperator.Inner) { LinkEntities = { new LinkEntity("sdkmessageprocessingstep", "solutioncomponent", "sdkmessageprocessingstepid", "objectid", JoinOperator.Inner) { LinkEntities = { new LinkEntity("solutioncomponent", "solution", "solutionid", "solutionid", JoinOperator.Inner) { LinkCriteria = { Conditions = { new ConditionExpression("uniquename", ConditionOperator.In, new [] { "PwCOrlenFlotaRelease001" }) } } } } } } } } }; var images = service.RetrieveMultiple(imagesQuery); var plugins = new List <MetaPlugin>(); foreach (var plugin in service.RetrieveMultiple(pluginQuery).Entities) { var metaPlugin = new MetaPlugin() { Name = plugin.GetAttributeValue <string>("name"), Rank = plugin.GetAttributeValue <int>("rank"), FilteredAttributes = plugin.GetAttributeValue <string>("filteringattributes"), Mode = plugin.GetAttributeValue <OptionSetValue>("mode").Value, Stage = plugin.GetAttributeValue <OptionSetValue>("stage").Value, MessageName = plugin.GetAttributeValue <EntityReference>("sdkmessageid").Name, AssemblyName = plugin.GetAttributeValue <EntityReference>("eventhandler").Name, PrimaryEntity = plugin.GetAttributeValue <AliasedValue>("sdkmessagefilter.primaryobjecttypecode").Value as string, Images = images.Entities .Where(x => x.GetAttributeValue <EntityReference>("sdkmessageprocessingstepid").Id == plugin.Id) .Select(x => new MetaImage { Attributes = x.GetAttributeValue <string>("attributes"), EntityAlias = x.GetAttributeValue <string>("entityalias"), ImageType = x.GetAttributeValue <OptionSetValue>("imagetype").Value, Name = x.GetAttributeValue <string>("name") }) .ToList() }; plugins.Add(metaPlugin); } return(plugins); }
public static void InitializeMockup(TestContext context) { var additionalPluginMetadata = new MetaPlugin(); additionalPluginMetadata.AssemblyName = "DG.Some.Namespace.ContactIPluginDirectPreOp"; additionalPluginMetadata.MessageName = "Create"; additionalPluginMetadata.PrimaryEntity = "contact"; additionalPluginMetadata.Rank = 10; additionalPluginMetadata.Stage = 20; //pre op as it only updates a field name var additionalPluginMetadata2 = new MetaPlugin(); additionalPluginMetadata2.AssemblyName = "DG.Some.Namespace.ContactIPluginDirectPostOp"; additionalPluginMetadata2.MessageName = "Create"; additionalPluginMetadata2.PrimaryEntity = "contact"; additionalPluginMetadata2.Rank = 10; additionalPluginMetadata2.Stage = 40; //postOp var settings = new XrmMockupSettings { BasePluginTypes = new Type[] { typeof(Plugin), typeof(PluginNonDaxif), typeof(ContactIPluginDirectPreOp) }, CodeActivityInstanceTypes = new Type[] { typeof(AccountWorkflowActivity) }, EnableProxyTypes = true, IncludeAllWorkflows = false, ExceptionFreeRequests = new string[] { "TestWrongRequest" }, MetadataDirectoryPath = "../../../Metadata", IPluginMetadata = new MetaPlugin[] { additionalPluginMetadata, additionalPluginMetadata2 } //MetadataDirectoryPath = @"C:\dev\MOD\CAMS\Plugins\XrmMockupTests\Metadata" , DatabaseConnectionString = "Server=.;Database=XrmMockup;Trusted_Connection=True;" , RecreateDatabase = false //,RetainTables = new string[] { "fax" ,"goal","lead"} // ,AppendAndAppendToPrivilegeCheck = false }; #if XRM_MOCKUP_TEST_2011 crm = XrmMockup2011.GetInstance(settings); #elif XRM_MOCKUP_TEST_2013 crm = XrmMockup2013.GetInstance(settings); #elif XRM_MOCKUP_TEST_2015 crm = XrmMockup2015.GetInstance(settings); #elif XRM_MOCKUP_TEST_2016 crm = XrmMockup2016.GetInstance(settings); #elif XRM_MOCKUP_TEST_365 crm = XrmMockup365.GetInstance(settings); #endif try { var realDataSettings = new XrmMockupSettings { BasePluginTypes = settings.BasePluginTypes, CodeActivityInstanceTypes = settings.CodeActivityInstanceTypes, EnableProxyTypes = settings.EnableProxyTypes, IncludeAllWorkflows = settings.IncludeAllWorkflows, ExceptionFreeRequests = settings.ExceptionFreeRequests, OnlineEnvironment = new Env { providerType = AuthenticationProviderType.OnlineFederation, uri = "https://exampleURL/XRMServices/2011/Organization.svc", username = "******", password = "******" } }; #if XRM_MOCKUP_TEST_2011 crmRealData = XrmMockup2011.GetInstance(realDataSettings); #elif XRM_MOCKUP_TEST_2013 crmRealData = XrmMockup2013.GetInstance(realDataSettings); #elif XRM_MOCKUP_TEST_2015 crmRealData = XrmMockup2015.GetInstance(realDataSettings); #elif XRM_MOCKUP_TEST_2016 crmRealData = XrmMockup2016.GetInstance(realDataSettings); #elif XRM_MOCKUP_TEST_365 crmRealData = XrmMockup365.GetInstance(realDataSettings); #endif } catch { // ignore } }