/// <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"); } }
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)); }
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); }
/// <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)); }
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); } }
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)); }
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)); }
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)); }
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> }
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); } } }