Esempio n. 1
0
        public string CreateCampaignSendGrid(string idCampaign)
        {
            string apiKey              = null;
            string idList              = null;
            string idSender            = null;
            string idUnsubscriberGroup = null;
            string subject             = null;
            string idCampaignSendGrid  = null;

            var campaign = _campaignService.GetCampaignById(idCampaign);
            var product  = _campaignService.GetProductByIdProduct(campaign.PRODUCT.IdProduct);

            if (product.PRODUCT_SETTINGS != null && product.PRODUCT_SETTINGS.Any())
            {
                foreach (var item in product.PRODUCT_SETTINGS)
                {
                    apiKey              = item.SettingName.Equals("sendGridApiToken") ? item.SettingValue : apiKey;
                    idList              = item.SettingName.Equals("sendGridList") ? item.SettingValue : idList;
                    idSender            = item.SettingName.Equals("sendGridSender") ? item.SettingValue : idSender;
                    idUnsubscriberGroup = item.SettingName.Equals("sendGridUnsubscribeGroup") ? item.SettingValue : idUnsubscriberGroup;
                }
            }

            if (campaign.CAMPAIGN_SETTINGS != null && campaign.CAMPAIGN_SETTINGS.Any())
            {
                foreach (var setting in campaign.CAMPAIGN_SETTINGS)
                {
                    subject = setting.SettingName.Equals("sendGridSubject") ? setting.SettingValue : subject;
                }
            }

            var headers = new Dictionary <string, string> {
                { "X-Mock", "201" }
            };
            var          sg           = new SendGridClient(apiKey, apiHost, headers);
            JsonCampaign jsonCampaign = new JsonCampaign()
            {
                categories             = new List <string>(),
                custom_unsubscribe_url = "",
                html_content           = "<html><head><title></title></head><body>" + campaign.AdText + "[unsubscribe]</body></html>",
                list_ids = new List <int>()
                {
                    Convert.ToInt32(idList)
                },
                plain_content        = "",
                segment_ids          = new List <int>(),
                sender_id            = Convert.ToInt32(idSender),
                subject              = subject,
                suppression_group_id = Convert.ToInt32(idUnsubscriberGroup),
                title = campaign.Name
            };
            var data            = JsonConvert.SerializeObject(jsonCampaign);
            var response        = sg.RequestAsync(method: SendGridClient.Method.POST, urlPath: "campaigns", requestBody: data).GetAwaiter().GetResult();
            var deserializeBody = response.DeserializeResponseBody(response.Body);

            if (response.StatusCode.Equals(HttpStatusCode.Created))
            {
                idCampaignSendGrid = Convert.ToString(deserializeBody["id"]);
                SendCampaign(apiKey, idCampaignSendGrid);
            }

            return(idCampaignSendGrid);
        }
Esempio n. 2
0
        public string CreateCampaign(string idCampaign)
        {
            dynamic json              = new ExpandoObject();
            dynamic fromField         = new ExpandoObject();
            dynamic campaign          = new ExpandoObject();
            dynamic content           = new ExpandoObject();
            dynamic sendSettings      = new ExpandoObject();
            dynamic selectedCampaigns = new List <string>();

            string apiKey      = null;
            string idList      = null;
            string idFromField = null;
            string subject     = null;

            var _campaign = _campaignService.GetCampaignById(idCampaign);
            var _product  = _campaign.PRODUCT;

            if (_product.PRODUCT_SETTINGS != null && _product.PRODUCT_SETTINGS.Any())
            {
                foreach (var item in _product.PRODUCT_SETTINGS)
                {
                    apiKey      = item.SettingName.Equals("getResponseApiToken") ? item.SettingValue : apiKey;
                    idList      = item.SettingName.Equals("getResponseList") ? item.SettingValue : idList;
                    idFromField = item.SettingName.Equals("getResponseFromField") ? item.SettingValue : idFromField;
                }
            }

            if (_campaign.CAMPAIGN_SETTINGS != null && _campaign.CAMPAIGN_SETTINGS.Any())
            {
                foreach (var setting in _campaign.CAMPAIGN_SETTINGS)
                {
                    subject = setting.SettingName.Equals("getResponseSubject") ? setting.SettingValue : subject;
                }
            }

            json.name    = _campaign.Name;
            json.type    = "broadcast";
            json.subject = subject;

            fromField.fromFieldId = idFromField;
            json.fromField        = fromField;

            campaign.campaignId = idList;
            json.campaign       = campaign;

            content.html  = _campaign.AdText;
            content.plain = null;
            json.content  = content;

            json.replyTo = fromField;

            selectedCampaigns.Add(idList);
            sendSettings.timeTravel           = "false";
            sendSettings.perfectTiming        = "true";
            sendSettings.selectedCampaigns    = selectedCampaigns;
            sendSettings.selectedSegments     = new List <string>();
            sendSettings.selectedSuppressions = new List <string>();
            sendSettings.excludedCampaigns    = new List <string>();
            sendSettings.excludedSegments     = new List <string>();
            sendSettings.selectedContacts     = new List <string>();

            json.sendSettings = sendSettings;
            var     result = MethodPost(apiKey, "newsletters", (IDictionary <string, object>)json);
            dynamic data   = JsonConvert.DeserializeObject(result.Data);

            return((string)data.newsletterId);
        }