예제 #1
0
 private void WriteContactToConsole(contactObject contact)
 {
     Console.WriteLine("First contact returned: {0} with ID {1} and Status {2}, created on {3}", contact.email, contact.id, contact.status, contact.created.ToBrontoString());
     if (contact.fields != null)
     {
         Console.WriteLine("Contact fields:");
         contact.fields.ToList().ForEach(field =>
         {
             Console.WriteLine("{0} ({1}/{3}) has the value '{2}'. ", fields.LabelOf(field), fields.NameOf(field), field.content, fields.TypeOf(field));
         });
     }
 }
예제 #2
0
        public void AddAndUpdateContact()
        {
            string        email    = Guid.NewGuid().ToString().Replace("{", "").Replace("}", "") + "@example.com";
            contactObject contact  = GetTestContact(email, "Michael", "Randrup");
            Contacts      contacts = new Contacts(Login);

            Console.WriteLine("Adding a contact with the email {0}", email);
            BrontoResult result = contacts.AddOrUpdate(contact);

            Assert.IsTrue(result.Items.Count(x => x.IsNew == true) == 1);
            contact = GetTestContact(email, "Michael", "Randrup " + DateTime.Now.ToString());
            result  = contacts.AddOrUpdate(contact);
            Assert.IsTrue(result.Items.Count(x => x.IsNew == true) == 0);
            contact.email = Guid.NewGuid().ToString().Replace("{", "").Replace("}", "") + "@example.com";
            contact.id    = result.Items.First().Id;
            Console.WriteLine("Updating the email from {0} to {1} for the created contact with id {2}", email, contact.email, contact.id);
            result = contacts.AddOrUpdate(contact);
            Assert.IsTrue(result.Items.Count(x => x.IsNew == true) == 0);
        }
예제 #3
0
        public contactObject TranslateContact(Contact contact, Dictionary <string, string> ContactFields = null)
        {
            var result = new contactObject();

            result.id = contact.Id;

            if (!String.IsNullOrEmpty(contact.MessagePreference))
            {
                result.msgPref = contact.MessagePreference.ToLower();
            }
            else
            {
                result.msgPref = "html";
            }


            if (contact.Fields.Count > 0)
            {
                if (ContactFields != null)
                {
                    List <contactField> fields = new List <contactField>();

                    foreach (KeyValuePair <string, string> kvp in ContactFields)
                    {
                        if (contact.Fields.ContainsKey(kvp.Value) && (contact.Fields[kvp.Value] != null))
                        {
                            fields.Add(new contactField {
                                fieldId = kvp.Key, content = contact.Fields[kvp.Value]
                            });
                        }
                    }

                    result.fields = fields.ToArray();
                }
            }

            result.status = contact.GetStatusString();

            result.email = contact.Email;

            return(result);
        }
예제 #4
0
        public void Send()
        {
            ///////////////////////////////////////////////////////////////////
            //
            // login, which creates the requisite header
            //
            ///////////////////////////////////////////////////////////////////

            sessionHeader header = new sessionHeader();
            BrontoSoapPortTypeClient client = new BrontoSoapPortTypeClient();
            header.sessionId = client.login(ConfigurationManager.AppSettings[GetType().Name]);

            ///////////////////////////////////////////////////////////////////
            //
            // add recipients to contact list
            //
            ///////////////////////////////////////////////////////////////////

            List<contactObject> contactValues = new List<contactObject>();

            foreach(string email in To)
            {
                contactObject co = new contactObject();
                co.email = email;
                contactValues.Add(co);
            }

            writeResult contacts = client.addOrUpdateContacts(header, contactValues.ToArray());

            ///////////////////////////////////////////////////////////////////
            //
            // using list of contacts, create list of recipients
            //
            ///////////////////////////////////////////////////////////////////

            List<deliveryRecipientObject> recipients = new List<deliveryRecipientObject>();

            foreach(resultItem item in contacts.results)
            {
                deliveryRecipientObject recipient = new deliveryRecipientObject();
                recipient.type = "contact";
                recipient.id = item.id;

                recipients.Add(recipient);
            }

            ///////////////////////////////////////////////////////////////////
            //
            // add email to message list
            //
            ///////////////////////////////////////////////////////////////////

            messageContentObject mco = new messageContentObject();
            mco.subject = Subject;
            mco.content = Body.Replace("\r\n", "<br>");
            mco.type = "html";

            messageObject mo = new messageObject();
            mo.name = string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now);
            mo.content = new messageContentObject[] { mco };

            writeResult messages = client.addMessages(header, new messageObject[] { mo });

            ///////////////////////////////////////////////////////////////////
            //
            // using list of messages, create list of deliveries
            //
            ///////////////////////////////////////////////////////////////////

            List<deliveryObject> deliveries = new List<deliveryObject>();

            foreach(resultItem item in messages.results)
            {
                deliveryObject delivery = new deliveryObject();
                delivery.start = DateTime.Now;
                delivery.startSpecified = true;
                delivery.messageId = item.id;
                delivery.fromEmail = From;
                delivery.fromName = From.Substring(0, From.IndexOf('@'));
                delivery.recipients = recipients.ToArray();

                deliveries.Add(delivery);
            }

            // send the deliveries!
            client.addDeliveriesAsync(header, deliveries.ToArray());
        }
        /// <summary>
        /// Parse the umbraco form values to a bronto contact 'contactObject' model
        /// </summary>
        /// <param name="record"></param>
        /// <param name="listAndFieldMapping"></param>
        /// <returns>ParseContactResult</returns>
        public static ParseContactResult Contact(Record record, string listAndFieldMapping)
        {
            var result = new ParseContactResult();

            var settingValue = JsonConvert.DeserializeObject <SettingValueModel>(listAndFieldMapping);

            // get the list id
            var listId = settingValue.listId;

            // build bronto contact
            var newContact = new contactObject();

            // process standard contact fields
            if (!string.IsNullOrEmpty(listId))
            {
                newContact.listIds = new string[] { listId }
            }
            ;

            var emailAddress = GetMappedFieldAsString(settingValue, record, ContactDefaultFieldName.email.ToString());

            if (!string.IsNullOrEmpty(emailAddress))
            {
                newContact.email = emailAddress;
            }

            var mobileTel = GetMappedFieldAsString(settingValue, record, ContactDefaultFieldName.mobileNumber.ToString());

            if (!string.IsNullOrEmpty(mobileTel))
            {
                newContact.mobileNumber = mobileTel;
            }

            // the marketing source of the user - this could be passed from the 'phone manager' package
            var marketingSource = GetMappedFieldAsString(settingValue, record, ContactDefaultFieldName.customSource.ToString());

            if (!string.IsNullOrEmpty(marketingSource))
            {
                newContact.customSource = marketingSource;
            }

            // get list of ContactStandardFieldName enum names
            var standardFields = Enum.GetNames(typeof(ContactDefaultFieldName)).ToList();

            // remove standard fields from the remaining mapping data as they are no longer required
            settingValue.mappings.RemoveAll(x => standardFields.Contains(x.brontoFieldId));

            // Add custom fields
            var customFields = settingValue.mappings.Select(m =>
            {
                return(new contactField
                {
                    fieldId = m.brontoFieldId,
                    content = GetFieldValue(record, m)
                });
            }).ToArray();

            if (customFields.Count() > 0)
            {
                newContact.fields = customFields;
            }

            // add new contact to result
            result.contact = newContact;

            return(result);
        }
예제 #6
0
        public void AddContactWithListReference()
        {
            MailLists lists    = new MailLists(Login);
            Contacts  contacts = new Contacts(Login);

            List <mailListObject> mailLists = new List <mailListObject>()
            {
                new mailListObject()
                {
                    name   = "Test list A" + DateTime.Now,
                    label  = "Test list A",
                    status = Bronto.API.ListStatus.Active
                },
                new mailListObject()
                {
                    name   = "Test list B" + DateTime.Now,
                    label  = "Test list B",
                    status = Bronto.API.ListStatus.Active
                }
            };

            BrontoResult listResult = lists.Add(mailLists);

            Assert.IsFalse(listResult.HasErrors, "The two test lists was not created");
            mailLists[0].id = listResult.Items[0].Id;
            mailLists[1].id = listResult.Items[1].Id;


            contactObject contact = GetTestContacts(1, new Random()).First();

            contact.listIds = listResult.Items.Select(x => x.Id).ToArray();
            BrontoResult contactResult = contacts.Add(contact);

            Assert.IsFalse(contactResult.HasErrors, "The contact was not created");

            contactFilter filter = new contactFilter();

            filter.listId        = listResult.Items.Select(x => x.Id).ToArray();
            filter.type          = filterType.OR;
            filter.typeSpecified = true;
            List <contactObject> listContacts = contacts.Read(filter, Contacts.ReadOptions.IncludeAll().IncludeFields(fields));

            Assert.IsTrue(listContacts.Count == 1);


            contact.listIds = new string[] { listResult.Items.Select(x => x.Id).First() };
            contactResult   = contacts.AddOrUpdate(contact);
            contact.id      = contactResult.Items[0].Id;
            Assert.IsFalse(contactResult.HasErrors, "The contact was not updated");
            Assert.IsTrue(contactResult.Items.Count(x => x.IsNew) == 0, "The contact was created instead of being updated");



            filter        = new contactFilter();
            filter.listId = new string[] { listResult.Items.Select(x => x.Id).First() };
            listContacts  = contacts.Read(filter, new readContacts().IncludeAll().IncludeFields(fields));
            Assert.IsTrue(listContacts.Count == 1);

            filter.listId = new string[] { listResult.Items.Select(x => x.Id).Last() };
            listContacts  = contacts.Read(filter, new readContacts().IncludeAll().IncludeFields(fields));
            Assert.IsTrue(listContacts.Count == 0);

            listResult = lists.Delete(mailLists);
            Assert.IsFalse(listResult.HasErrors, "Unable to delete the lists");
            contactResult = contacts.Delete(new List <contactObject>()
            {
                contact
            });
            Assert.IsFalse(contactResult.HasErrors, "Unable to delete the contact");
        }
예제 #7
0
 /// <summary>
 /// Add a new contact to Bronto
 /// </summary>
 /// <param name="contact">The contact to add</param>
 /// <returns>The result of the add operation <seealso cref="BrontoResult"/></returns>
 public async Task <BrontoResult> AddAsync(contactObject contact)
 {
     return(await AddAsync(new contactObject[] { contact }));
 }
예제 #8
0
 /// <summary>
 /// Update a contact in Bronto
 /// </summary>
 /// <param name="contact">The contact to update</param>
 /// <returns>The result of the add operation <seealso cref="BrontoResult"/></returns>
 public BrontoResult Update(contactObject contact)
 {
     return(Update(new contactObject[] { contact }));
 }
예제 #9
0
 /// <summary>
 /// Add a new contact to Bronto
 /// </summary>
 /// <param name="contact">The contact to add</param>
 /// <returns>The result of the add operation <seealso cref="BrontoResult"/></returns>
 public BrontoResult Add(contactObject contact)
 {
     return(Add(new contactObject[] { contact }));
 }
예제 #10
0
 /// <summary>
 /// Add or updates a contact in Bronto
 /// </summary>
 /// <param name="contact">The contact to add or update</param>
 /// <returns>The result of the add or update operation <seealso cref="BrontoResult"/></returns>
 public BrontoResult AddOrUpdateIncremental(contactObject contact)
 {
     return(AddOrUpdateIncremental(new contactObject[] { contact }));
 }