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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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
            }
        }