Exemplo n.º 1
0
        /// <summary>
        /// O gün doğum günü olan Kişi'leri yaratılan Pazarlama Listesi(SMS)'ne ekler.
        /// </summary>
        /// <param name="service"></param>
        /// <param name="ListId"></param>
        /// <param name="CampaignActivityId"></param>
        private static void CreateListContactConnectionForSmsList(IOrganizationService service, Guid ListId, Guid CampaignActivityId)
        {
            #region | Members |

            DataTable GetContacts = new DataTable();
            GetContacts = GetContactsForSmsCampaignActivityList();

            #endregion | Members |

            try
            {
                if (GetContacts.Rows.Count > 0)
                {
                    foreach (DataRow contact in GetContacts.Rows)
                    {
                        Guid ContactId = new Guid(contact["ContactId"].ToString());

                        AddListMembersListRequest req = new AddListMembersListRequest();
                        req.ListId    = ListId;
                        req.MemberIds = new Guid[] { ContactId };
                        AddListMembersListResponse response = (AddListMembersListResponse)service.Execute(req);
                    }
                }

                // SendSmsIntegration(service, ListId, CampaignActivityId);
            }
            catch (Exception ex)
            {
                throw new Exception("CreateListContactConnectionForSmsList");
            }
        }
Exemplo n.º 2
0
        public void When_a_member_is_added_to_an_existing_list_without_membercode_exception_is_thrown()
        {
            var ctx     = new XrmFakedContext();
            var service = ctx.GetOrganizationService();

            var list = new List
            {
                Id       = Guid.NewGuid(),
                ListName = "Some list"
            };

            ctx.Initialize(new List <Entity>
            {
                list
            });

            AddListMembersListRequest addListMembersListRequest = new AddListMembersListRequest
            {
                MemberIds = new[]
                {
                    Guid.NewGuid()
                },
                ListId = list.ToEntityReference().Id
            };

            Assert.Throws <FaultException <OrganizationServiceFault> >(() => service.Execute(addListMembersListRequest));
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Add members (bulk) to marketing list.
        /// Please note that you can not perform this action if marketing list is <c>locked</c>, please check <c>lockstatus</c> property.
        /// You can also call <see cref="Unlock(Guid)"/> method.
        /// </summary>
        /// <param name="listId">Marketing List Id</param>
        /// <param name="memberIdList">
        /// Member Id List.
        /// Please note that all members must be same type (<c>Account</c>, <c>Contact</c> or <c>Lead</c>), otherwise you will get an exception.
        /// <para>
        /// For more information look at https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.addlistmemberslistrequest(v=crm.7).aspx
        /// </para>
        /// </param>
        /// <returns><see cref="AddListMembersListResponse"/></returns>
        public AddListMembersListResponse AddMember(Guid listId, List <Guid> memberIdList)
        {
            ExceptionThrow.IfGuidEmpty(listId, "listId");
            ExceptionThrow.IfNullOrEmpty(memberIdList, "memberIdList");

            AddListMembersListRequest request = new AddListMembersListRequest()
            {
                ListId    = listId,
                MemberIds = memberIdList.ToArray()
            };

            return((AddListMembersListResponse)this.OrganizationService.Execute(request));
        }
Exemplo n.º 5
0
        public void When_a_member_is_added_to_an_existing_list_member_is_added_successfully_lead()
        {
            var ctx     = new XrmFakedContext();
            var service = ctx.GetOrganizationService();

            var list = new List()
            {
                Id              = Guid.NewGuid(),
                ListName        = "Some list",
                CreatedFromCode = new OptionSetValue((int)ListCreatedFromCode.Lead)
            };

            var lead = new Lead()
            {
                Id = Guid.NewGuid()
            };

            ctx.Initialize(new List <Entity>
            {
                list,
                lead
            });

            AddListMembersListRequest addListMembersListRequest = new AddListMembersListRequest
            {
                MemberIds = new[]
                {
                    lead.Id
                },
                ListId = list.ToEntityReference().Id
            };

            service.Execute(addListMembersListRequest);

            using (var context = new XrmServiceContext(service))
            {
                var member = (from lm in context.CreateQuery <ListMember>()
                              join l in context.CreateQuery <Crm.List>() on lm.ListId.Id equals l.ListId.Value
                              join le in context.CreateQuery <Lead>() on lm.EntityId.Id equals le.LeadId.Value
                              where lm.EntityId.Id == lead.Id
                              where lm.ListId.Id == list.Id
                              select lm
                              ).FirstOrDefault();

                Assert.NotNull(member);
            }
        }
Exemplo n.º 6
0
        public void When_a_request_is_called_with_an_empty_memberid_parameter_exception_is_thrown()
        {
            var ctx     = new XrmFakedContext();
            var service = ctx.GetOrganizationService();

            AddListMembersListRequest addListMembersListRequest = new AddListMembersListRequest
            {
                MemberIds = new[]
                {
                    Guid.Empty
                },
                ListId = Guid.NewGuid()
            };

            // Execute the request.
            Assert.Throws <FaultException <OrganizationServiceFault> >(() => service.Execute(addListMembersListRequest));
        }
Exemplo n.º 7
0
        public void When_a_member_is_added_to_a_non_existing_list_exception_is_thrown()
        {
            var ctx     = new XrmFakedContext();
            var service = ctx.GetOrganizationService();

            AddListMembersListRequest addListMembersListRequest = new AddListMembersListRequest
            {
                MemberIds = new[]
                {
                    Guid.NewGuid()
                },
                ListId = Guid.NewGuid()
            };

            // Execute the request.
            Assert.Throws <FaultException <OrganizationServiceFault> >(() => service.Execute(addListMembersListRequest));
        }
Exemplo n.º 8
0
        public void When_different_membertypes_are_added_to_an_existing_list_exception_is_thrown()
        {
            var ctx     = new XrmFakedContext();
            var service = ctx.GetOrganizationService();

            var list = new List
            {
                Id              = Guid.NewGuid(),
                ListName        = "Some list",
                CreatedFromCode = new OptionSetValue((int)ListCreatedFromCode.Account)
            };

            var account = new Account
            {
                Id = Guid.NewGuid()
            };

            var contact = new Contact
            {
                Id = Guid.NewGuid()
            };

            ctx.Initialize(new List <Entity>
            {
                list,
                account,
                contact
            });

            AddListMembersListRequest addListMembersListRequest = new AddListMembersListRequest
            {
                MemberIds = new[]
                {
                    account.Id,
                    contact.Id
                },
                ListId = list.ToEntityReference().Id
            };

            Assert.Throws <FaultException <OrganizationServiceFault> >(() => service.Execute(addListMembersListRequest));
        }
Exemplo n.º 9
0
        public void Import()
        {
            using (var reader = new StreamReader(filePath, Encoding.Default))
            {
                string line;
                int    lineNumber = 0;
                while ((line = reader.ReadLine()) != null)
                {
                    lineNumber++;
                    try
                    {
                        string[] data = new string[2];

                        using (TextFieldParser parser = new TextFieldParser(new StringReader(line))
                        {
                            HasFieldsEnclosedInQuotes = true
                        })
                        {
                            parser.SetDelimiters(",");

                            while (!parser.EndOfData)
                            {
                                data = parser.ReadFields();
                            }
                        }

                        Guid firstGuid  = Guid.Empty;
                        Guid secondGuid = Guid.Empty;

                        if (settings.FirstAttributeIsGuid)
                        {
                            firstGuid = new Guid(data[0]);
                        }
                        else
                        {
                            var records = service.RetrieveMultiple(new QueryExpression(settings.FirstEntity)
                            {
                                Criteria =
                                {
                                    Conditions =
                                    {
                                        new ConditionExpression(settings.FirstAttributeName, ConditionOperator.Equal,
                                                                data[0])
                                    }
                                }
                            });

                            if (records.Entities.Count == 1)
                            {
                                firstGuid = records.Entities.First().Id;
                            }
                            else if (records.Entities.Count > 1)
                            {
                                RaiseError(this,
                                           new ResultEventArgs
                                {
                                    LineNumber = lineNumber,
                                    Message    = string.Format("More than one record ({0}) were found with the value specified", settings.FirstEntity)
                                });

                                continue;
                            }
                            else
                            {
                                RaiseError(this,
                                           new ResultEventArgs
                                {
                                    LineNumber = lineNumber,
                                    Message    = string.Format("No record ({0}) was found with the value specified", settings.FirstEntity)
                                });

                                continue;
                            }
                        }

                        if (settings.SecondAttributeIsGuid)
                        {
                            secondGuid = new Guid(data[1]);
                        }
                        else
                        {
                            var records = service.RetrieveMultiple(new QueryExpression(settings.SecondEntity)
                            {
                                Criteria =
                                {
                                    Conditions =
                                    {
                                        new ConditionExpression(settings.SecondAttributeName, ConditionOperator.Equal,
                                                                data[1])
                                    }
                                }
                            });

                            if (records.Entities.Count == 1)
                            {
                                secondGuid = records.Entities.First().Id;
                            }
                            else if (records.Entities.Count > 1)
                            {
                                RaiseError(this,
                                           new ResultEventArgs
                                {
                                    LineNumber = lineNumber,
                                    Message    = string.Format("More than one record ({0}) were found with the value specified", settings.SecondEntity)
                                });

                                continue;
                            }
                            else
                            {
                                RaiseError(this,
                                           new ResultEventArgs
                                {
                                    LineNumber = lineNumber,
                                    Message    = string.Format("No record ({0}) was found with the value specified", settings.SecondEntity)
                                });

                                continue;
                            }
                        }

                        if (settings.Relationship == "listcontact_association" ||
                            settings.Relationship == "listaccount_association" ||
                            settings.Relationship == "listlead_association")
                        {
                            var request = new AddListMembersListRequest
                            {
                                ListId    = settings.FirstEntity == "list" ? firstGuid : secondGuid,
                                MemberIds = new[] { settings.FirstEntity == "list" ? secondGuid : firstGuid }
                            };

                            service.Execute(request);
                        }
                        else
                        {
                            var request = new AssociateRequest
                            {
                                Target          = new EntityReference(settings.FirstEntity, firstGuid),
                                Relationship    = new Relationship(settings.Relationship),
                                RelatedEntities = new EntityReferenceCollection
                                {
                                    new EntityReference(settings.SecondEntity, secondGuid)
                                }
                            };

                            if (request.Target.LogicalName == request.RelatedEntities.First().LogicalName)
                            {
                                request.Relationship.PrimaryEntityRole = EntityRole.Referenced;
                            }

                            service.Execute(request);
                        }

                        OnRaiseSuccess(new ResultEventArgs {
                            LineNumber = lineNumber
                        });
                    }
                    catch (FaultException <OrganizationServiceFault> error)
                    {
                        if (error.Detail.ErrorCode.ToString("X") == "80040237")
                        {
                            OnRaiseError(new ResultEventArgs {
                                LineNumber = lineNumber, Message = "Relationship was not created because it already exists"
                            });
                        }
                        else
                        {
                            OnRaiseError(new ResultEventArgs {
                                LineNumber = lineNumber, Message = error.Message
                            });
                        }
                    }
                }
            }
        }
        private void CreateMarketingList()
        {
            Console.WriteLine("=== Creating the Marketing List ===");
            // Create the marketing list.  Make it static because members are going to be
            // added to the list.
            var list = new List
            {
                CreatedFromCode = new OptionSetValue((int)ListCreatedFromCode.Contact),
                ListName = "Sample Contact Marketing List",
                Type = MarketingListType.Static
            };
            
            _marketingListId = _serviceProxy.Create(list);

            NotifyEntityCreated(List.EntityLogicalName, _marketingListId);

            //<snippetDistributeCampaignFromMarketingList6>
            // Add a list of contacts to the marketing list.
            var addMemberListReq = new AddListMembersListRequest
            {
                MemberIds = new[] { _contactIdList[0], _contactIdList[2] },
                ListId = _marketingListId
            };

            _serviceProxy.Execute(addMemberListReq);

            Console.WriteLine("  Contacts with GUIDs \r\n\t{{{0}}}\r\n\tand {{{1}}}\r\n  were added to the list.",
                _contactIdList[0], _contactIdList[1]);
            //</snippetDistributeCampaignFromMarketingList6>

            //<snippetDistributeCampaignFromMarketingList7>
            // Copy the marketing list.  First create a new one, and then copy over the
            // members.
            list.ListName = list.ListName + " Copy";
            _copiedMarketingListId = _serviceProxy.Create(list);
            var copyRequest = new CopyMembersListRequest
            {
                SourceListId = _marketingListId,
                TargetListId = _copiedMarketingListId
            };

            _serviceProxy.Execute(copyRequest);
            //</snippetDistributeCampaignFromMarketingList7>

            //<snippetDistributeCampaignFromMarketingList8>
            // Add a single contact to the copied marketing list.
            var addMemberReq = new AddMemberListRequest
            {
                EntityId = _contactIdList[1],
                ListId = _copiedMarketingListId
            };

            _serviceProxy.Execute(addMemberReq);

            Console.WriteLine("  Contact with GUID\r\n\t{{{0}}}\r\n  was added to the list.",
                _contactIdList[1]);
            //</snippetDistributeCampaignFromMarketingList8>

            //<snippetDistributeCampaignFromMarketingList9>
            // Qualify the marketing list.
            var qualifyRequest = new QualifyMemberListRequest
            {
                OverrideorRemove = OverrideOrRemove.Override,
                MembersId = new[] { _contactIdList[0], _contactIdList[1] },
                ListId = _copiedMarketingListId
            };

            _serviceProxy.Execute(qualifyRequest);

            Console.WriteLine("  Qualified the copied marketing list so that it only\r\n    includes the first two members.");
            //</snippetDistributeCampaignFromMarketingList9>
        }
Exemplo n.º 11
0
        private void CreateMarketingList()
        {
            Console.WriteLine("=== Creating the Marketing List ===");
            // Create the marketing list.  Make it static because members are going to be
            // added to the list.
            var list = new List
            {
                CreatedFromCode = new OptionSetValue((int)ListCreatedFromCode.Contact),
                ListName        = "Sample Contact Marketing List",
                Type            = MarketingListType.Static
            };

            _marketingListId = _serviceProxy.Create(list);

            NotifyEntityCreated(List.EntityLogicalName, _marketingListId);

            //<snippetDistributeCampaignFromMarketingList6>
            // Add a list of contacts to the marketing list.
            var addMemberListReq = new AddListMembersListRequest
            {
                MemberIds = new[] { _contactIdList[0], _contactIdList[2] },
                ListId    = _marketingListId
            };

            _serviceProxy.Execute(addMemberListReq);

            Console.WriteLine("  Contacts with GUIDs \r\n\t{{{0}}}\r\n\tand {{{1}}}\r\n  were added to the list.",
                              _contactIdList[0], _contactIdList[1]);
            //</snippetDistributeCampaignFromMarketingList6>

            //<snippetDistributeCampaignFromMarketingList7>
            // Copy the marketing list.  First create a new one, and then copy over the
            // members.
            list.ListName          = list.ListName + " Copy";
            _copiedMarketingListId = _serviceProxy.Create(list);
            var copyRequest = new CopyMembersListRequest
            {
                SourceListId = _marketingListId,
                TargetListId = _copiedMarketingListId
            };

            _serviceProxy.Execute(copyRequest);
            //</snippetDistributeCampaignFromMarketingList7>

            //<snippetDistributeCampaignFromMarketingList8>
            // Add a single contact to the copied marketing list.
            var addMemberReq = new AddMemberListRequest
            {
                EntityId = _contactIdList[1],
                ListId   = _copiedMarketingListId
            };

            _serviceProxy.Execute(addMemberReq);

            Console.WriteLine("  Contact with GUID\r\n\t{{{0}}}\r\n  was added to the list.",
                              _contactIdList[1]);
            //</snippetDistributeCampaignFromMarketingList8>

            //<snippetDistributeCampaignFromMarketingList9>
            // Qualify the marketing list.
            var qualifyRequest = new QualifyMemberListRequest
            {
                OverrideorRemove = OverrideOrRemove.Override,
                MembersId        = new[] { _contactIdList[0], _contactIdList[1] },
                ListId           = _copiedMarketingListId
            };

            _serviceProxy.Execute(qualifyRequest);

            Console.WriteLine("  Qualified the copied marketing list so that it only\r\n    includes the first two members.");
            //</snippetDistributeCampaignFromMarketingList9>
        }
Exemplo n.º 12
0
        public void Import()
        {
            using (var reader = new StreamReader(filePath, Encoding.Default))
            {
                string line;
                int lineNumber = 0;
                while ((line = reader.ReadLine()) != null)
                {
                    lineNumber++;
                    try
                    {
                        var data = line.Split(',');

                        Guid firstGuid = Guid.Empty;
                        Guid secondGuid = Guid.Empty;

                        if (settings.FirstAttributeIsGuid)
                        {
                            firstGuid = new Guid(data[0]);
                        }
                        else
                        {
                            var records = service.RetrieveMultiple(new QueryExpression(settings.FirstEntity)
                            {
                                Criteria =
                                {
                                    Conditions =
                                    {
                                        new ConditionExpression(settings.FirstAttributeName, ConditionOperator.Equal,
                                            data[0])
                                    }
                                }
                            });

                            if (records.Entities.Count == 1)
                            {
                                firstGuid = records.Entities.First().Id;
                            }
                            else if (records.Entities.Count > 1)
                            {
                                RaiseError(this,
                                    new ResultEventArgs
                                    {
                                        LineNumber = lineNumber,
                                        Message = string.Format("More than one record ({0}) were found with the value specified", settings.FirstEntity)
                                    });

                                continue;
                            }
                            else
                            {
                                RaiseError(this,
                                    new ResultEventArgs
                                    {
                                        LineNumber = lineNumber,
                                        Message = string.Format("No record ({0}) was found with the value specified", settings.FirstEntity)
                                    });

                                continue;
                            }
                        }

                        if (settings.SecondAttributeIsGuid)
                        {
                            secondGuid = new Guid(data[1]);
                        }
                        else
                        {
                            var records = service.RetrieveMultiple(new QueryExpression(settings.SecondEntity)
                            {
                                Criteria =
                                {
                                    Conditions =
                                    {
                                        new ConditionExpression(settings.SecondAttributeName, ConditionOperator.Equal,
                                            data[1])
                                    }
                                }
                            });

                            if (records.Entities.Count == 1)
                            {
                                secondGuid = records.Entities.First().Id;
                            }
                            else if (records.Entities.Count > 1)
                            {
                                RaiseError(this,
                                    new ResultEventArgs
                                    {
                                        LineNumber = lineNumber,
                                        Message = string.Format("More than one record ({0}) were found with the value specified", settings.SecondEntity)
                                    });

                                continue;
                            }
                            else
                            {
                                RaiseError(this,
                                    new ResultEventArgs
                                    {
                                        LineNumber = lineNumber,
                                        Message = string.Format("No record ({0}) was found with the value specified", settings.SecondEntity)
                                    });

                                continue;
                            }
                        }

                        if (settings.Relationship == "listcontact_association"
                            || settings.Relationship == "listaccount_association"
                            || settings.Relationship == "listlead_association")
                        {
                            var request = new AddListMembersListRequest
                            {
                                ListId = settings.FirstEntity == "list" ? firstGuid : secondGuid,
                                MemberIds = new[] { settings.FirstEntity == "list" ? secondGuid : firstGuid }
                            };

                            service.Execute(request);
                        }
                        else
                        {
                            var request = new AssociateRequest
                            {
                                Target = new EntityReference(settings.FirstEntity, firstGuid),
                                Relationship = new Relationship(settings.Relationship),
                                RelatedEntities = new EntityReferenceCollection
                                {
                                    new EntityReference(settings.SecondEntity, secondGuid)
                                }
                            };

                            if (request.Target.LogicalName == request.RelatedEntities.First().LogicalName)
                            {
                                request.Relationship.PrimaryEntityRole = EntityRole.Referenced;
                            }

                            service.Execute(request);
                        }

                        OnRaiseSuccess(new ResultEventArgs { LineNumber = lineNumber });
                    }
                    catch (FaultException<OrganizationServiceFault> error)
                    {
                        if (error.Detail.ErrorCode.ToString("X") == "80040237")
                        {
                            OnRaiseError(new ResultEventArgs { LineNumber = lineNumber, Message = "Relationship was not created because it already exists" });
                        }
                        else
                        {
                            OnRaiseError(new ResultEventArgs { LineNumber = lineNumber, Message = error.Message });
                        }
                    }
                }
            }
        }
        public override void ProcessItemSetChanges()
        {
            var orgContex              = this.PluginContext.OrgCtx;
            var savedEntityId          = this.EntityRef.Id;
            var savedEntityLogicalName = this.EntityRef.LogicalName;
            var itemSetsConfig         =
                orgContex.pavelkh_advancedmultiselectitemsetconfigurationSet.Where(
                    r => r.pavelkh_ItemSetName == this.ItemSetName)
                .Select(r => new pavelkh_advancedmultiselectitemsetconfiguration
            {
                pavelkh_EntityName           = r.pavelkh_EntityName,
                pavelkh_ItemSetEntityName    = r.pavelkh_ItemSetEntityName,
                pavelkh_FetchXmlForIntersect = r.pavelkh_FetchXmlForIntersect
            }).FirstOrDefault();

            if (itemSetsConfig == null)
            {
                throw new NullReferenceException(nameof(itemSetsConfig));
            }

            var fetchXmlQuery = itemSetsConfig.pavelkh_FetchXmlForIntersect.Replace(
                ItemSetBuilder.FetchXmlEntityIdPlaceHolder,
                savedEntityId.ToString("D"));
            var fetchExpression  = new FetchExpression(fetchXmlQuery);
            var service          = this.PluginContext.Service;
            var entityCollection = service.RetrieveMultiple(fetchExpression);
            var existingSelected = entityCollection.Entities.Select(r => r.Id).ToList();
            var itemsToAssociate = this.SelectedIdList
                                   .Except(existingSelected)
                                   .ToArray();
            var itemsToDisassociate = existingSelected
                                      .Except(this.SelectedIdList)
                                      .ToArray();
            var associateRequest    = new AddListMembersListRequest();
            var disassociateRequest = new RemoveMemberListRequest();

            if (savedEntityLogicalName == MarketingListEntityName)
            {
                if (itemsToAssociate.Any())
                {
                    associateRequest.ListId    = savedEntityId;
                    associateRequest.MemberIds = itemsToAssociate;
                    service.Execute(associateRequest);
                }

                disassociateRequest.ListId = savedEntityId;
                foreach (var entityId in itemsToDisassociate)
                {
                    disassociateRequest.EntityId = entityId;
                    service.Execute(disassociateRequest);
                }
            }
            else
            {
                associateRequest.MemberIds = new[] { savedEntityId };
                foreach (var listId in itemsToAssociate)
                {
                    associateRequest.ListId = listId;
                    service.Execute(associateRequest);
                }

                disassociateRequest.EntityId = savedEntityId;
                foreach (var listId in itemsToDisassociate)
                {
                    disassociateRequest.ListId = listId;
                    service.Execute(disassociateRequest);
                }
            }
        }