/// <summary> /// Gets the Mailchimp list id from the provided <see cref="ConnectorFormDataContext"/>. /// </summary> /// <param name="dataContext">The data context around the submitted form fields.</param> /// <returns>The Mailchimp list id.</returns> protected virtual string GetListId(ConnectorFormDataContext dataContext) { if (dataContext == null) { throw new ArgumentNullException("dataContext"); } string formFieldName = dataContext.FormDescriptionAttributeSettings[MailchimpFormsConnectorDefinitionsExtender.MailchimpListNameFieldName]; MailchimpList list = this.mailchimpListsClient.GetLists().FirstOrDefault(f => f.Name == formFieldName); return(list.Id); }
/// <inheritdoc/> public bool ShouldSendFormData(ConnectorFormDataContext dataContext) { bool shouldPostDataToMailchimp = bool.Parse(dataContext.WidgetDesignerSettings[MailchimpFormsConnectorDesignerExtender.PostDataToMailchimpPropertyName]); if (!shouldPostDataToMailchimp) { return(false); } string formName = dataContext.FormDescriptionAttributeSettings[MailchimpFormsConnectorDefinitionsExtender.MailchimpListNameFieldName]; if (string.IsNullOrWhiteSpace(formName)) { return(false); } return(true); }
/// <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); } }