public Segment(MailingList mailingList, String name, SegmentMatchType matchType = SegmentMatchType.All) { Criteria = new List<SegmentCriteria>(); this.MailingListID = mailingList.ID; this.Name = name; this.MatchType = matchType; }
public Guid Update(MailingList list) { return _Manager.MakeRequest<Guid>(HttpMethod.POST, String.Format( "/lists/{0}/update", list.ID), list); }
public void Save(MailingList list) { // do some validation foreach (CustomFieldDefinition customField in list.CustomFieldsDefinition) { if (customField.MailingListID != list.ID && customField.MailingListID != Guid.Empty) { throw new InvalidOperationException("Cannot save custom field that belongs to another mailing list"); } } if (list.ID == Guid.Empty) { list.ID = Create(list.Name, list.ConfirmationPage, list.RedirectAfterUnsubscribePage); foreach (CustomFieldDefinition customField in list.CustomFieldsDefinition) { CreateCustomField(list.ID, customField.Name, customField.Type, customField.IsRequired, customField.Context); } } else { Update(list); MailingList existing = FindByID(list.ID); List<Guid> existingCustomFieldIDs = existing.CustomFieldsDefinition.Select(x => x.ID).ToList(); List<Guid> currentCustomFieldIDs = list.CustomFieldsDefinition.Where(x => x.ID != Guid.Empty).Select(x => x.ID).ToList(); // find with custom fields where deleted foreach (Guid idToDelete in existingCustomFieldIDs.Where(id => !currentCustomFieldIDs.Contains(id))) { DeleteCustomField(list.ID, idToDelete); } // find which custom fields where modified foreach (Guid idToUpdate in currentCustomFieldIDs.Where(id => existingCustomFieldIDs.Contains(id))) { CustomFieldDefinition customField = list.CustomFieldsDefinition.Single(c => c.ID == idToUpdate); UpdateCustomField(list.ID, customField); } // find which custom fields where added foreach (CustomFieldDefinition customField in list.CustomFieldsDefinition.Where(x => x.ID == Guid.Empty)) { CreateCustomField(list.ID, customField.Name, customField.Type, customField.IsRequired, customField.Context); } } MailingList reloaded = FindByID(list.ID, true); Utilities.CopyProperties<MailingList>(reloaded, list); }