/// <inheritdoc/> public void SendFormData(IDictionary <string, string> data, ConnectorFormDataContext dataContext) { try { string listId = this.GetListId(dataContext); string email = data[FieldNameConstants.Email]; data.Remove(FieldNameConstants.Email); data = this.ReplaceKeysWithMergeFieldTags(listId, data); MailchimpListMember mailchimpListMember = new MailchimpListMember(); mailchimpListMember.Email = email; mailchimpListMember.MergeFields = data; mailchimpListMember.Status = SubscriberStatus.Subscribed; this.mailchimpListsClient.CreateMember(listId, mailchimpListMember); } catch (Exception ex) { Log.Write(ex, TraceEventType.Error); } }
/// <inheritdoc/> public MailchimpListMember CreateMember(string id, MailchimpListMember mailchimpListMember) { if (string.IsNullOrWhiteSpace(id)) { throw new ArgumentNullException("id"); } if (mailchimpListMember == null) { throw new ArgumentNullException("mailchimpListMember"); } string url = string.Format( CultureInfo.InvariantCulture, "/{0}/{1}/{2}/{3}", MailchimpListClient.ApiVersion, MailchimpListClient.ListsApiUrlSegment, id, MailchimpListClient.MembersApiUrlSegment); var settings = new JsonSerializerSettings(); settings.Converters.Add(new StringEnumConverter(true)); var mailchimpListJson = JsonConvert.SerializeObject(mailchimpListMember, settings); var mailchimpFormHttpContent = new StringContent(mailchimpListJson, Encoding.UTF8, ApplicationJsonContentType); HttpResponseMessage httpResponseMessage = this.httpClient.PostAsync(url, mailchimpFormHttpContent).Result; httpResponseMessage.EnsureSuccessStatusCode(); string responseContent = httpResponseMessage.Content.ReadAsStringAsync().Result; MailchimpListMember mailchimpListMemberResult = JsonConvert.DeserializeObject <MailchimpListMember>(responseContent); return(mailchimpListMemberResult); }
public IActionResult AddListMembers([FromBody] MailchimpListMember member, string listId) { var service = new MailchimpService(_settings); if (member.Interest != null) { var interests = service.Read($"/lists/{listId}/interest-categories", null); var interestObject = (ApiResponse)interests; var dataString = JsonConvert.SerializeObject(interestObject.Data); var categories = JObject.Parse(dataString)["categories"].ToObject <List <Category> >(); foreach (var category in categories) { if (category.Title == "Interest") { var groups = service.Read($"/lists/{listId}/interest-categories/{category.Id}/interests", null); var groupResponseObject = (ApiResponse)groups; var groupString = JsonConvert.SerializeObject(groupResponseObject.Data); var groupInterests = JObject.Parse(groupString)["interests"].ToObject <List <DTO.Mailchimp.Interest> >(); var selectedInterest = groupInterests.Where(i => i.name == member.Interest).FirstOrDefault(); var memberInterests = new ExpandoObject(); memberInterests.TryAdd(selectedInterest.id, true); var memberObject = new { email_address = member.Email, status = "subscribed", merge_fields = new { FNAME = member.FirstName, LNAME = member.LastName, }, interests = memberInterests, timestamp_signup = DateTime.UtcNow.ToString("yyyy-MM-dd hh:mm:ss"), tags = member.Tags, }; var response = service.Create($"/lists/{listId}/members", memberObject); return(Ok(response)); } } return(Ok("Provided Interest not found. No contact Added")); } else { var memberObject = new { email_address = member.Email, status = "subscribed", timestamp_signup = DateTime.Now.ToString(), tags = member.Tags.ToArray(), }; var response = service.Create($"/lists/{listId}/members", memberObject); return(Ok(response)); } }