// nueva funcionalidad public SendGridCampaignRequest FillSendinBlueRequestFromCosmos(List <CampaignSettingDocument> campaignSettings) { SendGridCampaignRequest request = new SendGridCampaignRequest(); // get data from product settings if (this.settings != null && this.settings.Any()) { foreach (var item in this.settings) { request.ApiKey = item.Name.Equals("sendGridApiToken") ? item.Value : request.ApiKey; request.ListId = item.Name.Equals("sendGridList") ? item.Value : request.ListId; request.SenderId = item.Name.Equals("sendGridSender") ? item.Value : request.SenderId; request.UnsubscriberGroupId = item.Name.Equals("sendGridUnsubscribeGroup") ? item.Value : request.UnsubscriberGroupId; } } // get data from campaign settings if (campaignSettings != null && campaignSettings.Any()) { foreach (var setting in campaignSettings) { request.Subject = setting.Name.Equals("sendGridSubject") ? setting.Value : request.Subject; } } return(request); }
// nueva funcionalidad public SendGridCampaignRequest getRequestData(CampaignDocument campaign, List <CampaignSettingDocument> campaignSettings) { SendGridCampaignRequest request = FillSendinBlueRequestFromCosmos(campaignSettings); request.Text = campaign.Text; request.Name = campaign.Name; return(request); }
// nueva funcionalidad public string SendCampaign(SendGridCampaignRequest request) { string Id = string.Empty; try { var headers = new Dictionary <string, string> { { "X-Mock", "201" } }; var sg = new SendGridClient(request.ApiKey, apiHost, headers); JsonCampaign jsonCampaign = new JsonCampaign() { categories = new List <string>(), custom_unsubscribe_url = "", html_content = "<html><head><title></title></head><body>" + request.Text + "[unsubscribe]</body></html>", list_ids = new List <int>() { Convert.ToInt32(request.ListId) }, plain_content = "", segment_ids = new List <int>(), sender_id = Convert.ToInt32(request.SenderId), subject = request.Subject, suppression_group_id = Convert.ToInt32(request.UnsubscriberGroupId), title = request.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)) { Id = Convert.ToString(deserializeBody["id"]); SendCampaign(request.ApiKey, Id); } } catch (Exception ex) { var messageException = telemetria.MakeMessageException(ex, System.Reflection.MethodBase.GetCurrentMethod().Name); telemetria.Critical(messageException); } return(Id); }