static void Main(string[] args) { var CampaignContent = new CampaignContent(); CampaignContent.CustomerMailList = new List <string>() { "*****@*****.**", "*****@*****.**" }; CampaignContent.ProductList = new Dictionary <int, string>() { { 20, "Product A" }, { 30, "Product B" } }; var campaignMailSender = new CampaignMailSender(CampaignContent); campaignMailSender.SendMail(); var OrderContent = new OrderContent(); OrderContent.CustomerMail = "*****@*****.**"; OrderContent.ProductList = new Dictionary <int, string>() { { 20, "Product A" }, { 30, "Product B" } }; var orderMailSender = new OrderMailSender(OrderContent); orderMailSender.SendMail(); }
public ActionResult DeleteConfirmed(int?campaignId, int?contentId) { CampaignContent campaignContent = db.CampaignContents.FirstOrDefault(c => c.CampaignID == campaignId && c.ContentID == contentId); db.CampaignContents.Remove(campaignContent); db.SaveChanges(); return(RedirectToAction("Index")); }
public void GetCampaignContent_Successful() { // Arrange MailChimpManager mc = new MailChimpManager(TestGlobal.Test_APIKey); string campaignId = "yourcampaignidhere"; // Act CampaignContent details = mc.GetCampaignContent(campaignId); // Assert Assert.IsFalse(string.IsNullOrWhiteSpace(details.Html)); }
public ActionResult Edit([Bind(Include = "CampaignID,ContentID,CreateDate,ActivationDate,ExpirationDate,UserContentInd")] CampaignContent campaignContent) { if (ModelState.IsValid) { db.Entry(campaignContent).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.CampaignID = new SelectList(db.Campaigns, "CampaignID", "CampaignDesc", campaignContent.CampaignID); ViewBag.ContentID = new SelectList(db.ContentTranslations, "ContentID", "ContentTitle", campaignContent.ContentID); return(View(campaignContent)); }
public CampaignContent AddCampaignContent(CampaignContent cont, out HttpStatusCode status, out string statusMessage) { long campaignID = cont.CampaignID; if (campaignID <= 0) { throw new Exception("Invalid Campaign ID in Content Object"); } RestClient restClient = createClient(); RestRequest restRequest = new RestRequest { Resource = "data/campaign/campaign_id/{campaign_id}/content", RequestFormat = DataFormat.Json, Method = Method.POST }; restRequest.AddUrlSegment("campaign_id", campaignID.ToString()); // we handle our own serialization instead of calling AddBody JsonSerializerSettings serSettings = new JsonSerializerSettings(); serSettings.DefaultValueHandling = DefaultValueHandling.Ignore; serSettings.NullValueHandling = NullValueHandling.Ignore; string serialized = JsonConvert.SerializeObject(cont, serSettings); restRequest.AddParameter("application/json", serialized, ParameterType.RequestBody); // // NOTE: The JSON deserializer built into the RestSharp // package does not work well, so we use Newtonsoft instead. // IRestResponse restResponse = restClient.Execute(restRequest); status = restResponse.StatusCode; if (status != HttpStatusCode.OK) { statusMessage = restResponse.Content; return(null); } else { statusMessage = null; } string content = restResponse.Content; CampaignContent cont2 = JsonConvert.DeserializeObject <CampaignContent>(content); return(cont2); }
public void GetCampaignContent_Successful() { // Arrange MailChimpManager mc = new MailChimpManager(TestGlobal.Test_APIKey); string campaignId = "yourcampaignidhere"; // Act CampaignContent details = mc.GetCampaignContent(campaignId); // Assert // Changed from IsNullOrWhiteSpace to IsNullOrEmpty for .NET 3.5 compatibility. Consider using extension method // for IsNullOrWhiteSpace support Assert.IsFalse(string.IsNullOrEmpty(details.Html)); }
public ActionResult Create([Bind(Include = "CampaignID,ContentID,CreateDate,ActivationDate,ExpirationDate,UserContentInd")] CampaignContent campaignContent) { campaignContent.CreateDate = DateTime.Now; if (ModelState.IsValid) { db.CampaignContents.Add(campaignContent); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.CampaignID = new SelectList(db.Campaigns, "CampaignID", "CampaignDesc", campaignContent.CampaignID); ViewBag.ContentID = new SelectList(db.ContentTranslations, "ContentID", "ContentTitle", campaignContent.ContentID); return(View(campaignContent)); }
// GET: CampaignContents/Details/5 public ActionResult Details(int?campaignId, int?contentId) { if (campaignId == null || contentId == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } CampaignContent campaignContent = db.CampaignContents.FirstOrDefault(c => c.CampaignID == campaignId && c.ContentID == contentId); if (campaignContent == null) { return(HttpNotFound()); } return(View(campaignContent)); }
// GET: CampaignContents/Edit/5 public ActionResult Edit(int?campaignId, int?contentId) { if (campaignId == null || contentId == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } CampaignContent campaignContent = db.CampaignContents.FirstOrDefault(c => c.CampaignID == campaignId && c.ContentID == contentId); if (campaignContent == null) { return(HttpNotFound()); } ViewBag.CampaignID = new SelectList(db.Campaigns, "CampaignID", "CampaignDesc", campaignContent.CampaignID); ViewBag.ContentID = new SelectList(db.ContentTranslations, "ContentID", "ContentTitle", campaignContent.ContentID); return(View(campaignContent)); }
public CampaignContent GetCampaignContent(long campaignID, long contentID, out HttpStatusCode status, out string statusMessage) { if (campaignID <= 0) { throw new Exception("Invalid Campaign ID"); } if (contentID <= 0) { throw new Exception("Invalid Content ID"); } RestClient restClient = createClient(); RestRequest restRequest = new RestRequest { Resource = "data/campaign/campaign_id/{campaign_id}/content/id/{content_id}", RequestFormat = DataFormat.Json, Method = Method.GET }; restRequest.AddUrlSegment("campaign_id", campaignID.ToString()); restRequest.AddUrlSegment("content_id", contentID.ToString()); // // NOTE: The JSON deserializer built into the RestSharp // package does not work well with our classes, so we use Newtonsoft instead. // IRestResponse restResponse = restClient.Execute(restRequest); status = restResponse.StatusCode; if (status != HttpStatusCode.OK) { statusMessage = restResponse.Content; return(null); } else { statusMessage = null; } string content = restResponse.Content; CampaignContent cont = JsonConvert.DeserializeObject <CampaignContent>(content); return(cont); }
public void EventReceiptTest() { BrickStreetConnect brickst = makeClient(); HttpStatusCode status; string statusMessage = null; // // verify that conversation exists // // CONV NAME: "TEST ERECEIPT CONVERSATION" // // SPENTLY: SHOULD CREATE A CONVERSATION OBJECT FOR EACH SPENTLY ACCOUNT Conversation conv = brickst.GetConversationByName("TEST ERECEIPT CONVERSATION", out status, out statusMessage); if (status == HttpStatusCode.NotFound) { // conversation not found; create it Assert.IsNull(conv, "Expected null conversation"); conv = new Conversation(); conv.Name = "TEST ERECEIPT CONVERSATION"; conv.DepartmentID = ConnectDepartmentID; Conversation conv2 = brickst.AddConversation(conv, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(conv2); Assert.IsNotNull(conv2.Id); Assert.AreEqual(conv.Name, conv2.Name); conv = conv2; } Assert.IsNotNull(conv); // // create new campaign // string campaignName = "TEST ERECEIPT " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); EventMaster eventMaster = new EventMaster() { Name = campaignName, IncludeXML = true }; // NO EVENT PARAMS EventCampaign camp = new EventCampaign() { Name = campaignName, Type = Campaign.EVENT_CAMPAIGN, ConversationID = conv.Id, DepartmentID = ConnectDepartmentID, Event = eventMaster }; EventCampaign savedCamp = brickst.AddEventCampaign(camp, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(savedCamp); Assert.IsNotNull(savedCamp.Id); Assert.AreEqual(ConnectDepartmentID, savedCamp.DepartmentID); camp = savedCamp; // // create content // CampaignContent cont = new CampaignContent() { Name = campaignName + " CONTENT", Type = CampaignContent.TYPE_XSL, Subject = "TEST SUBJ LINE FOR " + campaignName, // // NOTE: THIS URL SHOULD BE THE URL OF THE RECEIPT TEMPLATE XSL !!! /// HtmlContentURL = "http://content.brickst.net/eNotify/spently/eReceipt/spently-receipt2.xsl", CampaignID = (long)camp.Id }; CampaignContent cont2 = brickst.AddCampaignContent(cont, out status, out statusMessage); if (statusMessage != null) { Console.WriteLine("ERROR SAVING CONTENT: " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(cont2); Assert.IsNotNull(cont2.Id); cont = cont2; // // create message interaction to use the content // CampaignInteraction inter = new CampaignInteraction() { Name = "Test Interaction 1", Type = CampaignInteraction.TYPE_MAIN_MESSAGE, CampaignID = (long)camp.Id, ContentID = (long)cont.Id, SegmentID = 1 }; CampaignInteraction inter2 = brickst.AddMessage(inter, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(inter2); Assert.IsNotNull(inter2.Id); inter = inter2; // // Prepare to Launch the Interaction // RolloutAction raction = new RolloutAction() { Action = RolloutAction.ACTION_PREPARE_LAUNCH, EffectiveDate = DateTime.Now.ToUniversalTime() }; RolloutActionResponse raresp = brickst.DoRolloutAction((long)camp.Id, (long)inter.Id, raction, out status, out statusMessage); if (statusMessage != null) { Console.WriteLine("ERROR ROLLOUT ACTION 1: " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(raresp); Assert.AreEqual(RolloutActionResponse.STATUS_OK, raresp.Status); raction = new RolloutAction() { Action = RolloutAction.ACTION_LAUNCH }; raresp = brickst.DoRolloutAction((long)camp.Id, (long)inter.Id, raction, out status, out statusMessage); if (statusMessage != null) { Console.WriteLine("ERROR ROLLOUT ACTION 2: " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(raresp); Assert.AreEqual(RolloutActionResponse.STATUS_OK, raresp.Status); // // event campaign is active; create a customer and submit events // string altCustId = "TEST" + DateTime.Now.Ticks.ToString(); string email = altCustId + "@cmaeda.com"; Customer cust = new Customer { AltCustomerId = altCustId, StatusCode = 1, EmailAddress = email, FirstName = "Test", LastName = "Testman" }; Customer dbCust = brickst.AddCustomer(cust, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNull(statusMessage); Assert.IsNotNull(dbCust); Assert.IsNotNull(dbCust.Id); Assert.AreEqual(cust.AltCustomerId, dbCust.AltCustomerId); Assert.AreEqual(cust.EmailAddress, dbCust.EmailAddress); Assert.AreEqual(cust.LastName, dbCust.LastName); Assert.AreEqual(cust.FirstName, dbCust.FirstName); cust = dbCust; // // have customer, submit event // StringBuilder bld = new StringBuilder(); bld.Append("<purchase>"); bld.Append("<customer_name>"); bld.Append(cust.FirstName).Append(" ").Append(cust.LastName); bld.Append("</customer_name>"); bld.Append("<line_items>"); // LINE ITEM... bld.Append("<item>"); bld.Append("<item_name>Hat</item_name>"); bld.Append("<item_quantity>1</item_quantity>"); bld.Append("<item_price>9.95</item_price>"); bld.Append("</item>"); // LINE ITEM... bld.Append("<item>"); bld.Append("<item_name>Shoes</item_name>"); bld.Append("<item_quantity>1</item_quantity>"); bld.Append("<item_price>19.95</item_price>"); bld.Append("</item>"); bld.Append("</line_items>"); bld.Append("</purchase>"); string xml = bld.ToString(); Event tstEvent = new Event { EventName = campaignName, CustomerId = (long)cust.Id, Xml = xml, Subscribe = true }; Event dbEvent = brickst.AddEvent(tstEvent, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNull(statusMessage); Assert.IsNotNull(dbEvent); Assert.IsNotNull(dbEvent.Id); Assert.AreEqual(tstEvent.EventName, dbEvent.EventName); Assert.AreEqual(tstEvent.CustomerId, dbEvent.CustomerId); Assert.AreEqual("1", dbEvent.Status); Console.WriteLine("SUBMITTED EVENT " + dbEvent.Id); }
public void CampaignEventTriggeredForReceipt() { BrickStreetConnect brickst = makeClient(); // // verify that conversation exists // // CONV NAME: "TEST ERECEIPT CONVERSATION" // // SPENTLY: SHOULD CREATE A CONVERSATION OBJECT FOR EACH SPENTLY ACCOUNT HttpStatusCode status; string statusMessage = null; Conversation conv = brickst.GetConversationByName("TEST ERECEIPT CONVERSATION", out status, out statusMessage); if (status == HttpStatusCode.NotFound) { // conversation not found; create it Assert.IsNull(conv, "Expected null conversation"); conv = new Conversation(); conv.Name = "TEST ERECEIPT CONVERSATION"; conv.DepartmentID = ConnectDepartmentID; Conversation conv2 = brickst.AddConversation(conv, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(conv2); conv = conv2; } Assert.IsNotNull(conv); // // create new campaign // string campaignName = "TEST ERECEIPT " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); EventMaster eventMaster = new EventMaster() { Name = campaignName, IncludeXML = true }; // // create event params // EventParameterMaster evParam; evParam = new EventParameterMaster() { Name = "shopName", DataType = EventParameterMaster.TYPE_STRING }; eventMaster.Parameters.Add(evParam); evParam = new EventParameterMaster() { Name = "shopAddress", DataType = EventParameterMaster.TYPE_STRING }; eventMaster.Parameters.Add(evParam); evParam = new EventParameterMaster() { Name = "shopPhone", DataType = EventParameterMaster.TYPE_STRING }; eventMaster.Parameters.Add(evParam); EventCampaign camp = new EventCampaign() { Name = campaignName, Type = Campaign.EVENT_CAMPAIGN, ConversationID = conv.Id, DepartmentID = ConnectDepartmentID, Event = eventMaster }; EventCampaign savedCamp = brickst.AddEventCampaign(camp, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(savedCamp); Assert.IsNotNull(savedCamp.Id); Assert.AreEqual(ConnectDepartmentID, savedCamp.DepartmentID); camp = savedCamp; // // create content // CampaignContent cont = new CampaignContent() { Name = campaignName + " CONTENT", Type = CampaignContent.TYPE_XSL, Subject = "TEST SUBJ LINE FOR " + campaignName, // // NOTE: THIS URL SHOULD BE THE URL OF THE RECEIPT TEMPLATE XSL !!! /// //HtmlContentURL = "http://content.brickst.net/eNotify/spently/eReceipt/spently-receipt2.xsl", HtmlContentURL = "http://www.geocities.jp/bssjapantest01/ereceipt/proj1.xsl", CampaignID = (long)camp.Id }; CampaignContent cont2 = brickst.AddCampaignContent(cont, out status, out statusMessage); if (statusMessage != null) { Console.WriteLine("ERROR SAVING CONTENT: " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(cont2); Assert.IsNotNull(cont2.Id); cont = cont2; // // create message interaction to use the content // CampaignInteraction inter = new CampaignInteraction() { Name = "Test Interaction 1", Type = CampaignInteraction.TYPE_MAIN_MESSAGE, CampaignID = (long)camp.Id, ContentID = (long)cont.Id, SegmentID = 1 }; CampaignInteraction inter2 = brickst.AddMessage(inter, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(inter2); Assert.IsNotNull(inter2.Id); inter = inter2; // // Prepare to Launch the Interaction // RolloutAction raction = new RolloutAction() { Action = RolloutAction.ACTION_PREPARE_LAUNCH, EffectiveDate = DateTime.Now.ToUniversalTime() }; RolloutActionResponse raresp = brickst.DoRolloutAction((long)camp.Id, (long)inter.Id, raction, out status, out statusMessage); if (statusMessage != null) { Console.WriteLine("ERROR ROLLOUT ACTION 1: " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(raresp); Assert.AreEqual(RolloutActionResponse.STATUS_OK, raresp.Status); raction = new RolloutAction() { Action = RolloutAction.ACTION_LAUNCH }; raresp = brickst.DoRolloutAction((long)camp.Id, (long)inter.Id, raction, out status, out statusMessage); if (statusMessage != null) { Console.WriteLine("ERROR ROLLOUT ACTION 2: " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(raresp); Assert.AreEqual(RolloutActionResponse.STATUS_OK, raresp.Status); }