Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }