private List <SubscriberDetail> GenerateSubscribersList(IEnumerable <Entity> contacts, string primaryEmail, MetadataHelper mdh) { trace.Trace("Generating Subscriber List"); var subscribers = new List <SubscriberDetail>(); foreach (Entity contact in contacts) { // remove the primary email field, it's sent as a separate param and we don't want duplicate fields var email = contact[primaryEmail].ToString(); var name = contact["fullname"].ToString(); // check to make sure this contact isn't duplicated within the filter for the config if (!config.SyncDuplicateEmails && SharedLogic.CheckEmailIsDuplicate(orgService, config, primaryEmail, email)) { continue; } var fields = SharedLogic.ContactAttributesToSubscriberFields(orgService, trace, contact, contact.Attributes.Keys); fields = SharedLogic.PrettifySchemaNames(mdh, fields); subscribers.Add(new SubscriberDetail { EmailAddress = email, Name = name, CustomFields = fields }); } return(subscribers); }
private void SendSubscriberToList(string listId, string emailField, List <SubscriberCustomField> fields) { // send subscriber to campaign monitor list using CM API var name = fields.Where(f => f.Key == "fullname").FirstOrDefault(); var email = fields.Where(f => f.Key == emailField).FirstOrDefault(); MetadataHelper mdh = new MetadataHelper(orgService, tracer); fields = SharedLogic.PrettifySchemaNames(mdh, fields); Subscriber subscriber = new Subscriber(authDetails, listId); subscriber.Add(email?.Value, name?.Value, fields, false, false); }