private async Task AddContactToAMailingList(MailjetContact mailjetContact, int id) { try { var requestToContactList = new MailjetRequest { Resource = ContactManagecontactslists.Resource, ResourceId = ResourceId.Numeric(id) }.Property(ContactManagecontactslists.ContactsLists, new JArray { new JObject { { "Action", "addnoforce" }, { "ListID", mailjetContact.ContactListId } } }); var response = await _clientV3.PostAsync(requestToContactList); if (!response.IsSuccessStatusCode) { throw new MailjetApiClientException(response.FormatForLogs()); } } catch (Exception e) { throw new MailjetApiClientException(e.Message, e.InnerException); } }
private async Task <int> CreateContact(MailjetContact mailjetContact) { var request = new MailjetRequest { Resource = Contact.Resource, } .Property(Contact.IsExcludedFromCampaigns, mailjetContact.IsExcluded) .Property(Contact.Name, mailjetContact.ContactName) .Property(Contact.Email, mailjetContact.ContactEmail); var response = await _clientV3.PostAsync(request); if (!response.IsSuccessStatusCode) { throw new MailjetApiClientException(response.FormatForLogs()); } var responseData = response.GetData(); return((int)responseData[0]["ID"]); }
private async Task UpdateContactCustomProperties(int contactId, MailjetContact mailjetContact) { var enumerator = mailjetContact.CustomProperties.GetEnumerator(); var request = new MailjetRequest { Resource = new ResourceInfo("contactdata/" + contactId), } .Property(Contactdata.Data, new JArray { from key in mailjetContact.CustomProperties.Keys select new JObject(new JProperty("Name", key), new JProperty("Value", mailjetContact.CustomProperties[key])) } ); var response = await _clientV3.PutAsync(request); if (!response.IsSuccessStatusCode) { throw new MailjetApiClientException(response.FormatForLogs()); } }
public async Task AddOrUpdateContact(MailjetContact mailjetContact) { int?contactId = GetContactId(mailjetContact.ContactEmail).Result; if (contactId == null) { contactId = await CreateContact(mailjetContact); } //Add To a contact list if (!string.IsNullOrEmpty(mailjetContact.ContactListId)) { await AddContactToAMailingList(mailjetContact, contactId.Value); } //update custom contact properties if (mailjetContact.CustomProperties.Keys.Any()) { await UpdateContactCustomProperties(contactId.Value, mailjetContact); } }