Exemplo n.º 1
0
        public void RefreshFromSdkMessage(SdkMessage msg)
        {
            if (msg == null)
            {
                throw new ArgumentNullException("msg");
            }

            if (msg.SdkMessageId != null)
            {
                MessageId = msg.SdkMessageId.Value;
            }

            if (msg.Name != null)
            {
                Name = msg.Name;
            }

            if (msg.CustomizationLevel != null)
            {
                CustomizationLevel = msg.CustomizationLevel.Value;
            }

            if (msg.CreatedOn != null && (msg.CreatedOn.HasValue))
            {
                m_createdOn = msg.CreatedOn.Value;
            }

            if (msg.ModifiedOn != null && (msg.ModifiedOn.HasValue))
            {
                m_modifiedOn = msg.ModifiedOn.Value;
            }
        }
Exemplo n.º 2
0
        private static void MapPluginAssemblyStepObject(PluginType pluginType
                                                        , SdkMessageProcessingStep pluginStep
                                                        , SdkMessage sdkMessage
                                                        , SdkMessageFilter filter
                                                        , List <SdkMessageProcessingStepImage> images
                                                        , Assembly pluginAssemblyTemp
                                                        , Type pluginAssemblyTypeTemp)
        {
            var pluginAssemblyStepTemp = pluginAssemblyTemp.PluginTypes.FirstOrDefault(item1 => item1.Name == pluginType.Name)
                                         .Steps.FirstOrDefault <Step>(item => item.Name == pluginStep.Name);

            if (pluginAssemblyStepTemp == null)
            {
                pluginAssemblyStepTemp = new Step()
                {
                    Id = pluginStep.SdkMessageProcessingStepId.ToString(),
                    CustomConfiguration = pluginStep.Configuration,
                    Name                      = pluginStep.Name,
                    Description               = pluginStep.Description,
                    FilteringAttributes       = pluginStep.FilteringAttributes,
                    ImpersonatingUserFullname = pluginStep.ImpersonatingUserId == null ? string.Empty : pluginStep.ImpersonatingUserId.Name,
                    MessageName               = sdkMessage != null ? sdkMessage.CategoryName : null,
                    Mode                      = ((SdkMessageProcessingStep_Mode)pluginStep.Mode.Value).ToString(),
                    PrimaryEntityName         = filter.PrimaryObjectTypeCode,
                    Rank                      = pluginStep.Rank,
                    Stage                     = ((SdkMessageProcessingStep_Stage)pluginStep.Stage.Value).ToString(),
                    SupportedDeployment       = ((SdkMessageProcessingStep_SupportedDeployment)pluginStep.SupportedDeployment.Value).ToString(),
                    Images                    = new List <Image>()
                };
                MapImagesObject(images, pluginStep, pluginAssemblyStepTemp);
                pluginAssemblyTypeTemp.Steps.Add(pluginAssemblyStepTemp);
            }
        }
        public override bool GenerateSdkMessage(SdkMessage sdkMessage, IServiceProvider services)
        {
            bool whitelist, blacklist = false;

            whitelist = _whitelistFilters.Any(filter => filter.GenerateSdkMessage(sdkMessage, services));

            if (whitelist)
            {
                Trace.TraceInformation($"Whitelist: {sdkMessage.Name} is on the whitelist and will be generated.");
            }
            else
            {
                if (Configuration.Filtering.HasWhitelist && Configuration.Filtering.Whitelist.Filter == WhitelistFilter.Exclusive)
                {
                    return(false);
                }

                blacklist = _blacklistFilters.Any(filter => filter.GenerateSdkMessage(sdkMessage, services));

                if (!blacklist)
                {
                    Trace.TraceInformation($"Blacklist: {sdkMessage.Name} is on the blacklist and will not be generated.");
                }
            }

            return(whitelist || blacklist);
        }
        private static void MapPluginAssemblyStepObject(SdkMessageProcessingStep pluginStep
                                                        , SdkMessage sdkMessage
                                                        , SdkMessageFilter filter
                                                        , List <SdkMessageProcessingStepImage> images
                                                        , Assembly pluginAssembly
                                                        , Type pluginType)
        {
            var step = new Step()
            {
                Id = pluginStep.SdkMessageProcessingStepId,
                CustomConfiguration = pluginStep.Configuration,
                Name                      = pluginStep.Name,
                Description               = pluginStep.Description,
                FilteringAttributes       = pluginStep.FilteringAttributes,
                ImpersonatingUserFullname = pluginStep.ImpersonatingUserId?.Name ?? string.Empty,
                MessageName               = sdkMessage?.Name,
                Mode                      = pluginStep.ModeEnum,
                PrimaryEntityName         = filter.PrimaryObjectTypeCode,
                Rank                      = pluginStep.Rank,
                Stage                     = pluginStep.StageEnum,
                SupportedDeployment       = pluginStep.SupportedDeploymentEnum,
                Images                    = new List <Image>()
            };

            MapImagesObject(images, pluginStep, step);
            pluginType.Steps.Add(step);
        }
        async Task <bool> ICodeWriterMessageFilterService.GenerateSdkMessageAsync(SdkMessage message,
                                                                                  IServiceProvider services)
        {
            await CrmSvcUtil.CrmSvcUtilLogger.TraceMethodStartAsync("Entering {0}", MethodBase.GetCurrentMethod().Name);

            await CrmSvcUtil.CrmSvcUtilLogger.TraceMethodStopAsync("Exiting {0}", MethodBase.GetCurrentMethod().Name);

            return((this._generateMessages || this._generateCustomActions) && !message.IsPrivate && message.SdkMessageFilters.Count != 0);
        }
        internal SdkMessageResponse ToSdk(SdkMessage sdk)
        {
            var response = new SdkMessageResponse(Id);

            foreach (var field in ResponseFields)
            {
                response.ResponseFields[field.Key] = field.Value;
            }
            return(response);
        }
Exemplo n.º 7
0
        public SdkMessagePair ToSdk(SdkMessage sdk)
        {
            var pair = new SdkMessagePair(sdk, Id, MessageNamespace);

            pair.Request = Request.ToSdk(pair);
            if (Response != null)
            {
                pair.Response = Response.ToSdk(sdk);
            }
            return(pair);
        }
        private static void MapPluginAssemblyStepObject(SdkMessageProcessingStep pluginStep
                                                        , SdkMessage sdkMessage
                                                        , SdkMessageFilter filter
                                                        , List <SdkMessageProcessingStepImage> images
                                                        , Assembly pluginAssembly
                                                        , Type pluginType)
        {
            var step = MapStep(pluginStep, sdkMessage, filter);

            MapImagesObject(images, pluginStep, step);
            pluginType.Steps.Add(step);
        }
Exemplo n.º 9
0
        protected override bool?GenerateSdkMessage(SdkMessage sdkMessage)
        {
            if (sdkMessage.IsCustomAction && FilterConfiguration.Customizations.CustomizationStrategy == CustomizationStrategy.UncustomizedOnly)
            {
                return(false);
            }
            else if (!sdkMessage.IsCustomAction && FilterConfiguration.Customizations.CustomizationStrategy == CustomizationStrategy.CustomOnly)
            {
                return(false);
            }

            return(FilterConfiguration.Customizations.CustomizationStrategy == CustomizationStrategy.Default ? (bool?)null : true);
        }
Exemplo n.º 10
0
        public bool GenerateSdkMessage(SdkMessage message, IServiceProvider services)
        {
            List <string> lowerCaseMessages = (from x in _messageFilter select x.ToLower()).ToList <string>();

            if (!message.IsCustomAction)
            {
                return(false);
            }
            if (!lowerCaseMessages.Contains(message.Name.ToLower()))
            {
                return(false);
            }
            return(this.DefaultService.GenerateSdkMessage(message, services));
        }
 private static Step MapStep(SdkMessageProcessingStep pluginStep, SdkMessage sdkMessage, SdkMessageFilter filter) => new Step()
 {
     Id = pluginStep.SdkMessageProcessingStepId,
     CustomConfiguration = pluginStep.Configuration,
     Name                      = pluginStep.Name,
     Description               = pluginStep.Description,
     FilteringAttributes       = pluginStep.FilteringAttributes,
     ImpersonatingUserFullname = pluginStep.ImpersonatingUserId?.Name ?? string.Empty,
     MessageName               = sdkMessage?.Name,
     Mode                      = pluginStep.ModeEnum,
     PrimaryEntityName         = filter.PrimaryObjectTypeCode,
     Rank                      = pluginStep.Rank,
     Stage                     = pluginStep.StageEnum,
     SupportedDeployment       = pluginStep.SupportedDeploymentEnum,
     Images                    = new List <Image>()
 };
Exemplo n.º 12
0
 public static string GetI18nString(SdkMessage sdkMessage)
 {
     if (!SdkUtil._isInitialised)
     {
         SdkUtil.Initialise();
     }
     try
     {
         return(SdkUtil._resourceBundle.GetString(sdkMessage.ToString()));
     }
     catch (MissingManifestResourceException ex)
     {
         Logger.Log(TraceLevel.Critical, ex.Message);
         return(ex.Message);
     }
 }
 public MetadataMessage(SdkMessage message)
 {
     Name           = message.Name;
     Id             = message.Id;
     IsPrivate      = message.IsPrivate;
     IsCustomAction = message.IsCustomAction;
     MetadataPairs  = new Dictionary <Guid, MetadataPair>();
     foreach (var pair in message.SdkMessagePairs)
     {
         MetadataPairs[pair.Key] = new MetadataPair(pair.Value);
     }
     MetadataFilters = new Dictionary <Guid, MetadataFilter>();
     foreach (var filter in message.SdkMessageFilters)
     {
         MetadataFilters[filter.Key] = new MetadataFilter(filter.Value);
     }
 }
        private static bool MapPluginObject(SdkMessageProcessingStep pluginStep
                                            , SdkMessage sdkMessage
                                            , SdkMessageFilter filter
                                            , List <SdkMessageProcessingStepImage> images
                                            , Assembly pluginAssemblyObject
                                            , PluginType pluginType
                                            )
        {
            var typeObject = MapPluginAssemblyTypeObject(pluginType, pluginAssemblyObject);

            if (pluginStep != null)
            {
                MapPluginAssemblyStepObject(pluginStep, sdkMessage, filter, images, pluginAssemblyObject, typeObject);
            }

            return(true);
        }
Exemplo n.º 15
0
 public void LogMessage(SdkMessage message)
 {
     if (Enabled)
     {
         if (MParticle.Instance.Identity.CurrentUser != null)
         {
             eventsApiManager.EnqueueMessage(CreateBatch(new SdkMessage[] { message }));
         }
         else
         {
             lock (pendingMessages)
             {
                 pendingMessages.Add(message);
             }
         }
     }
 }
Exemplo n.º 16
0
 private static Step MapStep(SdkMessageProcessingStep pluginStep, SdkMessage sdkMessage, SdkMessageFilter filter) => new Step()
 {
     Id = pluginStep.SdkMessageProcessingStepId,
     CustomConfiguration = pluginStep.Configuration,
     Name                = pluginStep.Name,
     Description         = pluginStep.Description,
     FilteringAttributes = pluginStep.FilteringAttributes != null?string.Join(",", pluginStep.FilteringAttributes.Split(',').OrderBy(a => a)) : null,
                               ImpersonatingUserFullname = pluginStep.ImpersonatingUserId?.Name ?? string.Empty,
                               MessageName         = sdkMessage?.Name,
                               Mode                = pluginStep.ModeEnum,
                               PrimaryEntityName   = filter?.PrimaryObjectTypeCode,
                               Rank                = pluginStep.Rank,
                               Stage               = pluginStep.StageEnum,
                               AsyncAutoDelete     = pluginStep.AsyncAutoDelete,
                               SupportedDeployment = pluginStep.SupportedDeploymentEnum,
                               StateCode           = pluginStep.StateCode,
                               Images              = new List <Image>()
 };
Exemplo n.º 17
0
        public Dictionary <string, object> GenerateCrmEntities()
        {
            var entityList = new Dictionary <string, object>();

            var entity = new SdkMessage();

            entity.SdkMessageId    = new Guid?();
            entity["sdkmessageid"] = MessageId;

            if (!string.IsNullOrEmpty(Name))
            {
                entity.Name = Name;
            }

            entityList.Add(SdkMessage.EntityLogicalName, entity);

            return(entityList);
        }
        public override bool GenerateSdkMessage(SdkMessage sdkMessage, IServiceProvider services)
        {
            if (DynamicsMetadataCache.SdkMessages.HasBy(sdkMessage))
            {
                return(true);
            }

            Services = services;
            bool?value = GenerateSdkMessage(sdkMessage);

            switch (Strategy)
            {
            case FilterListStrategy.Whitelist:
                var whitelistConfig = FilterConfiguration as WhitelistElement;

                if (value.HasValue)
                {
                    if (value.Value)
                    {
                        DynamicsMetadataCache.SdkMessages.AddBy(sdkMessage);
                    }

                    return(value.Value);
                }
                else
                {
                    if (whitelistConfig.Filter == WhitelistFilter.Inclusive)
                    {
                        DynamicsMetadataCache.SdkMessages.AddBy(sdkMessage);
                    }
                }

                return(whitelistConfig.Filter == WhitelistFilter.Inclusive);

            case FilterListStrategy.Blacklist:
                return(!value.HasValue ? true : !value.Value);
            }

            // never gets here.
            return(value.Value);
        }
Exemplo n.º 19
0
        public Activity(SdkMessage message, string entityLogicalName, bool isActivityEntity)
        {
            this.PrimaryEntityLogicalName = entityLogicalName;
            this.LogicalName = entityLogicalName;

            List <Member> inputs  = new List <Member>();
            List <Member> outputs = new List <Member>();

            var inputFields = message.SdkMessagePairs?.Values?.FirstOrDefault()?.Request?.RequestFields?.Values;

            if (inputFields != null)
            {
                foreach (var input in inputFields)
                {
                    var name = input.Name;

                    if (!string.IsNullOrEmpty(entityLogicalName) && ($"{entityLogicalName}id" == name.ToLower() || (isActivityEntity && name.ToLower() == "activityid")))
                    {
                        name = "Target";
                    }

                    var next = new Member(name, input.CLRFormatter.ClrToDatatype(), !input.IsOptional, name);
                    inputs.Add(next);
                }
            }

            var outputFields = message.SdkMessagePairs?.Values?.FirstOrDefault()?.Response?.ResponseFields?.Values;

            if (outputFields != null)
            {
                foreach (var output in outputFields)
                {
                    var next = new Member(output.Name, output.CLRFormatter.ClrToDatatype(), true, output.Name);
                    outputs.Add(next);
                }
            }
            this.InputMembers  = inputs.ToArray();
            this.OutputMembers = outputs.ToArray();
        }
Exemplo n.º 20
0
        private static bool MapPluginObject(List <Assembly> pluginAssemblyList
                                            , PluginAssembly pluginAssembly
                                            , PluginType pluginType
                                            , SdkMessageProcessingStep pluginStep
                                            , SdkMessage sdkMessage
                                            , SdkMessageFilter filter
                                            , List <SdkMessageProcessingStepImage> images)
        {
            var pluginAssemblyTemp = MapPluginAssemblyObject(pluginAssemblyList, pluginAssembly);

            if (pluginAssemblyTemp == null)
            {
                return(false);
            }
            var pluginAssemblyTypeTemp = MapPluginAssemblyTypeObject(pluginType, pluginAssemblyTemp);

            if (pluginStep != null)
            {
                MapPluginAssemblyStepObject(pluginType, pluginStep, sdkMessage, filter, images, pluginAssemblyTemp, pluginAssemblyTypeTemp);
            }

            return(true);
        }
        public Microsoft.Xrm.Sdk.EntityReference GetFilterFor(SdkMessage sdkMessage, string logicalname)
        {
            var key = $"{sdkMessage.SdkMessageId.Value.ToString()}.{logicalname}";

            if (filters.ContainsKey(key))
            {
                var v = filters[key];
                if (v != null)
                {
                    return(v.ToEntityReference());
                }
                else
                {
                    return(null);
                }
            }

            filters[key] = (from f in uow.SdkMessageFilters.GetQuery()
                            where f.SdkMessageId.Id == sdkMessage.SdkMessageId &&
                            f.PrimaryObjectTypeCode == logicalname
                            select f).SingleOrDefault();

            return(GetFilterFor(sdkMessage, logicalname));
        }
Exemplo n.º 22
0
 public SdkMessageCacheItem(SdkMessage metadata) : this()
 {
     ParseMetadata(metadata);
 }
 public bool GenerateSdkMessage(SdkMessage sdkMessage, IServiceProvider services)
 {
     return(DefaultService.GenerateSdkMessage(sdkMessage, services));
 }
Exemplo n.º 24
0
 public CrmMessage(CrmOrganization org, SdkMessage msg)
     : this(org)
 {
     RefreshFromSdkMessage(msg);
 }
 protected override bool?GenerateSdkMessage(SdkMessage sdkMessage)
 {
     return(null);
 }
 public EntityViewItem(SdkMessage entity)
 {
     this.SdkMessage = entity;
 }
        private static bool MapWebHookObject(List <ServiceEndpt> webHookList, ServiceEndpoint serviceEndpoint, SdkMessageProcessingStep steps, SdkMessage message, SdkMessageFilter filters)
        {
            var webHook = MapWebHook(serviceEndpoint);

            webHook.Steps.Add(MapStep(steps, message, filters));
            webHookList.Add(webHook);

            return(true);
        }
 protected abstract bool?GenerateSdkMessage(SdkMessage sdkMessage);