public static void RemoveFromMarketingList(Guid listMember, Guid listId)
        {
            RemoveMemberListRequest request = new RemoveMemberListRequest();

            request.EntityId = listMember;
            request.ListId   = listId;
            RemoveMemberListResponse response = XrmCore.Execute <RemoveMemberListRequest, RemoveMemberListResponse>(request);
        }
        public static void AddToMarketingList(Guid[] listMembers, Guid listId)
        {
            AddListMembersListRequest request = new AddListMembersListRequest();

            request.MemberIds = listMembers;
            request.ListId    = listId;
            AddListMembersListResponse response = XrmCore.Execute <AddListMembersListRequest, AddListMembersListResponse>(request);
        }
Beispiel #3
0
        public static void ApplyAction(this Entity entity, KeyValuePair <string, string> action)
        {
            string[] actionArgs = action.Value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            switch (action.Key.ToUpper())
            {
            case "APPLYWORKFLOW":
                InputArgumentCollection workflowArgs = null;
                if (actionArgs.Length > 1)
                {
                    workflowArgs = new InputArgumentCollection();
                    for (int i = 1; i < actionArgs.Length; i++)
                    {
                        string[] workflowArg = actionArgs[i].Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
                        workflowArgs.Add(workflowArg[0], workflowArg[1]);
                    }
                }
                Guid g;
                if (Guid.TryParse(actionArgs[0], out g))
                {
                    XrmCore.ApplyWorkFlow(entity, g, workflowArgs);
                }
                else
                {
                    XrmCore.ApplyWorkFlow(entity, actionArgs[0], workflowArgs);
                }
                break;

            case "ADDTOMARKETINGLIST":
            case "REMOVEFROMMARKETINGLIST":
                bool remove = action.Key.Equals("REMOVEFROMMARKETINGLIST", StringComparison.OrdinalIgnoreCase);
                for (int i = 0; i < actionArgs.Length; i++)
                {
                    Entity list = XrmCore.RetrieveByAttribute("list", "listname", actionArgs[i], new ColumnSet("listid")).Entities.FirstOrDefault();
                    if (list == null)
                    {
                        throw new ArgumentException(string.Format("The Marketing list {0} could not be found", actionArgs[0]));
                    }
                    else
                    {
                        if (remove)
                        {
                            XrmMarketing.RemoveFromMarketingList(entity.Id, list.Id);
                        }
                        else
                        {
                            XrmMarketing.AddToMarketingList(new Guid[] { entity.Id }, list.Id);
                        }
                    }
                }
                break;

            case "ASSIGN":
                FilterExpression filter = new FilterExpression(LogicalOperator.Or);
                filter.AddCondition("fullname", ConditionOperator.Like, new object[] { actionArgs[0] });
                filter.AddCondition("internalemailaddress", ConditionOperator.Like, new object[] { actionArgs[0] });
                Entity owner = XrmCore.RetrieveByFilter("systemuser", filter, new ColumnSet("systemuserid")).Entities.FirstOrDefault();
                if (owner == null)
                {
                    throw new ArgumentException(string.Format("The System user with the name or email {0} could not be found", actionArgs[0]));
                }
                else
                {
                    AssignRequest request = new AssignRequest()
                    {
                        Assignee = owner.ToEntityReference(),
                        Target   = entity.ToEntityReference()
                    };
                    XrmCore.Execute <AssignRequest, AssignResponse>(request);
                }
                break;

            default:
                break;
            }
        }