public void FillMessageMergeVars(MandrillMessage message, Module.Models.LinkOrderCampaignProductRecord record) { var products = new Dictionary<string, object> { {"quantity", record.Count}, {"name", record.CampaignProductRecord.ProductRecord.Name}, {"description", record.CampaignProductRecord.ProductRecord.Details}, {"price", record.CampaignProductRecord.Price}, {"total_price", record.OrderRecord.TotalPrice} }; message.AddRcptMergeVars(record.OrderRecord.Email, "FNAME", record.OrderRecord.FirstName); message.AddRcptMergeVars(record.OrderRecord.Email, "LNAME", record.OrderRecord.LastName); message.AddRcptMergeVars(record.OrderRecord.Email, "CITY", record.OrderRecord.City); message.AddRcptMergeVars(record.OrderRecord.Email, "STATE", record.OrderRecord.State); message.AddRcptMergeVars(record.OrderRecord.Email, "COUNTRY", record.OrderRecord.Country); if (record.OrderRecord.TotalPriceWithPromo > 0.0) { message.AddRcptMergeVars(record.OrderRecord.Email, "TOTALPRICE", record.OrderRecord.TotalPriceWithPromo.ToString()); } else { message.AddRcptMergeVars(record.OrderRecord.Email, "TOTALPRICE", record.OrderRecord.TotalPrice.ToString()); } message.AddRcptMergeVars(record.OrderRecord.Email, "PRODUCTS", products); }
public async void Can_send_template() { var message = new MandrillMessage { FromEmail = "*****@*****.**", Subject = "test", Tags = new List<string>() {"test-send-template", "mandrill-net"}, To = new List<MandrillMailAddress>() { new MandrillMailAddress("*****@*****.**", "Test1 User"), new MandrillMailAddress("*****@*****.**", "Test2 User") }, }; message.AddGlobalMergeVars("ORDERDATE", DateTime.UtcNow.ToShortDateString()); message.AddRcptMergeVars("*****@*****.**", "INVOICEDETAILS", "invoice for [email protected]"); message.AddRcptMergeVars("*****@*****.**", "INVOICEDETAILS", "invoice for [email protected]"); var result = await Api.Messages.SendTemplateAsync(message, TestTemplateName); result.Should().HaveCount(2); result[0].Status.Should().NotBe(MandrillSendMessageResponseStatus.Invalid); result[0].Status.Should().NotBe(MandrillSendMessageResponseStatus.Rejected); result[0].Id.Should().NotBeEmpty(); result[1].Id.Should().NotBeEmpty(); result[1].Status.Should().NotBe(MandrillSendMessageResponseStatus.Invalid); result[1].Status.Should().NotBe(MandrillSendMessageResponseStatus.Rejected); }
public async void Can_send_template_object_list() { var message = new MandrillMessage { FromEmail = "*****@*****.**", Subject = "test", Tags = new List<string>() { "test-send-template", "mandrill-net", "handlebars" }, MergeLanguage = MandrillMessageMergeLanguage.Handlebars, To = new List<MandrillMailAddress>() { new MandrillMailAddress("*****@*****.**", "Test1 User"), new MandrillMailAddress("*****@*****.**", "Test2 User") }, }; var data1 = new[] { new Dictionary<string, object> { {"sku", "APL43"}, {"name", "apples"}, {"description", "Granny Smith Apples"}, {"price", 0.20}, {"qty", 8}, {"ordPrice", 1.60}, }, new Dictionary<string, object> { {"sku", "ORA44"}, {"name", "Oranges"}, {"description", "Blood Oranges"}, {"price", 0.30}, {"qty", 3}, {"ordPrice", 0.93}, } }; var data2 = new[] { new Dictionary<string, object> { {"sku", "APL54"}, {"name", "apples"}, {"description", "Red Delicious Apples"}, {"price", 0.22}, {"qty", 9}, {"ordPrice", 1.98}, }, new Dictionary<string, object> { {"sku", "ORA53"}, {"name", "Oranges"}, {"description", "Sunkist Oranges"}, {"price", 0.20}, {"qty", 1}, {"ordPrice", 0.20}, } }; message.AddGlobalMergeVars("ORDERDATE", DateTime.UtcNow.ToShortDateString()); message.AddRcptMergeVars("*****@*****.**", "PRODUCTS", data1); message.AddRcptMergeVars("*****@*****.**", "PRODUCTS", data2); var result = await Api.Messages.SendTemplateAsync(message, TestTemplateName); result.Should().HaveCount(2); result[0].Status.Should().Be(MandrillSendMessageResponseStatus.Sent); result[0].Id.Should().NotBeEmpty(); result[1].Id.Should().NotBeEmpty(); result[1].Status.Should().Be(MandrillSendMessageResponseStatus.Sent); }
private void FillCampaignProductsMergeVars(MandrillMessage message, IList<CampaignProductRecord> campaignProducts, string pathToMedia, string email) { string baseUrl = _wca.GetContext().CurrentSite.BaseUrl + "/"; List<Dictionary<string, object>> products = new List<Dictionary<string, object>>(); foreach (var item in campaignProducts) { string side = ""; var campaign = _campaignRepository.Get(item.CampaignRecord_Id); if (campaign.BackSideByDefault) { side = "back"; } else { side = "front"; } products.Add(new Dictionary<string, object>{ {"name", item.ProductRecord.Name}, {"price", item.Price}, {"currency", item.CurrencyRecord.Code}, {"preview_url", baseUrl + "/Media/campaigns/" + item.CampaignRecord_Id + "/" + item.Id + "/normal/"+side+".png"} }); } var arr = products.ToArray(); message.AddRcptMergeVars(email, "PRODUCTS", products.ToArray()); }
private void FillSellerToBuyersProductsMergeVars(MandrillMessage message, IList<LinkOrderCampaignProductRecord> orderedProducts, string pathToMedia, string email, string orderPublicId) { string products = ""; var i = 0; //List<Dictionary<string, object>> products = new List<Dictionary<string, object>>(); foreach (var item in orderedProducts) { int index = orderedProducts.IndexOf(item); int idSize = item.ProductSizeRecord.Id; float costSize = item.CampaignProductRecord.ProductRecord.SizesAvailable.Where(c => c.ProductSizeRecord.Id == idSize).First().SizeCost; float price = (float)item.CampaignProductRecord.Price + costSize; if (i > 0) { products += item.Count.ToString() + " x " + item.ProductSizeRecord.SizeCodeRecord.Name + " " + item.CampaignProductRecord.ProductRecord.Name + ", " + Environment.NewLine; } else { products += item.Count.ToString() + " x " + item.ProductSizeRecord.SizeCodeRecord.Name + " " + item.CampaignProductRecord.ProductRecord.Name + Environment.NewLine; } i++; } message.AddRcptMergeVars(email, "PRODUCTS", products); message.AddRcptMergeVars(email, "orderPublicId", orderPublicId); }
private void FillUserMergeVars(MandrillMessage message, OrderRecord record, string adminEmail) { message.AddRcptMergeVars(adminEmail, "FNAME", record.FirstName); message.AddRcptMergeVars(adminEmail, "LNAME", record.LastName); message.AddRcptMergeVars(adminEmail, "CITY", record.City); message.AddRcptMergeVars(adminEmail, "CLIENT_EMAIL", record.Email); message.AddRcptMergeVars(adminEmail, "STATE", record.State); message.AddRcptMergeVars(adminEmail, "PHONE", record.PhoneNumber); message.AddRcptMergeVars(adminEmail, "STREET_ADDRESS", record.StreetAddress); message.AddRcptMergeVars(adminEmail, "COUNTRY", record.Country); double totalPrice; if (record.TotalPriceWithPromo > 0.0) { totalPrice = record.TotalPriceWithPromo + record.Delivery; message.AddRcptMergeVars(adminEmail, "TOTALPRICE", totalPrice.ToString("F", CultureInfo.InvariantCulture)); } else { totalPrice = record.TotalPrice + record.Delivery; message.AddRcptMergeVars(adminEmail, "TOTALPRICE", totalPrice.ToString("F", CultureInfo.InvariantCulture)); } if (record.Delivery > 0.0) { message.AddRcptMergeVars(adminEmail, "DELIVERYPRICE", record.Delivery.ToString("F", CultureInfo.InvariantCulture)); } if (record.Promotion > 0.0) { message.AddRcptMergeVars(record.Email, "PROMOTIONSIZE", record.Promotion.ToString("F", CultureInfo.InvariantCulture)); } }
private void FillProductsMergeVars(MandrillMessage message, IList<LinkOrderCampaignProductRecord> orderedProducts, string pathToMedia, string email, string orderPublicId) { string baseUrl = _wca.GetContext().CurrentSite.BaseUrl + "/"; List<Dictionary<string, object>> products = new List<Dictionary<string, object>>(); foreach (var item in orderedProducts) { string side = ""; var campaign = _campaignRepository.Get(item.CampaignProductRecord.CampaignRecord_Id); if (campaign.BackSideByDefault) { side = "back"; } else { side = "front"; } int index = orderedProducts.IndexOf(item); int idSize = item.ProductSizeRecord.Id; float costSize = item.CampaignProductRecord.ProductRecord.SizesAvailable.Where(c => c.ProductSizeRecord.Id == idSize).First().SizeCost; float price = (float)item.CampaignProductRecord.Price + costSize; string prodColor = ""; if (item.ProductColorRecord != null) { if (item.CampaignProductRecord.ProductColorRecord.Id == item.ProductColorRecord.Id) { prodColor = item.CampaignProductRecord.Id.ToString(); } else { prodColor = item.CampaignProductRecord.Id + "_" + item.ProductColorRecord.Id.ToString(); } } else { prodColor = item.CampaignProductRecord.Id.ToString(); } products.Add(new Dictionary<string, object>{ {"quantity", item.Count}, {"name", item.CampaignProductRecord.ProductRecord.Name}, {"description", item.CampaignProductRecord.ProductRecord.Details}, {"price", price}, {"size", item.ProductSizeRecord.SizeCodeRecord.Name}, {"currency", item.OrderRecord.CurrencyRecord.Code}, {"total_price", (price* item.Count).ToString("F", CultureInfo.InvariantCulture)}, {"preview_url", baseUrl + "/Media/campaigns/" + item.CampaignProductRecord.CampaignRecord_Id + "/" + prodColor + "/normal/"+side+".png"} }); } var arr = products.ToArray(); message.AddRcptMergeVars(email, "PRODUCTS", products.ToArray()); message.AddRcptMergeVars(email, "orderPublicId", orderPublicId); }
private void FillPayoutRequestMergeVars(MandrillMessage message, string adminEmail, int userId, string accountNumber, string bankName, string accHoldName, string contNum, string messAdmin, double amount, string currencyCode) { var baseUrl = ""; if (HttpContext.Current != null) { var request = HttpContext.Current.Request; baseUrl = request.Url.Scheme + "://" + request.Url.Authority + request.ApplicationPath.TrimEnd('/') + "/"; } else { baseUrl = _wca.GetContext().CurrentSite.BaseUrl + "/"; } var requester = _contentManager.Get<TeeyootUserPart>(userId, VersionOptions.Latest); message.AddRcptMergeVars(adminEmail, "Requester_Name", requester.PublicName); message.AddRcptMergeVars(adminEmail, "AccountNumber", accountNumber); message.AddRcptMergeVars(adminEmail, "BankName", bankName); message.AddRcptMergeVars(adminEmail, "AccHolderName", accHoldName); message.AddRcptMergeVars(adminEmail, "ContactNumber", contNum); message.AddRcptMergeVars(adminEmail, "Text", messAdmin); message.AddRcptMergeVars(adminEmail, "Amount", amount.ToString("F", CultureInfo.InvariantCulture)); message.AddRcptMergeVars(adminEmail, "Currency", currencyCode); message.AddRcptMergeVars(adminEmail, "Url", baseUrl); }
private void FillAdditionalCampaignMergeVars(MandrillMessage message, int campaignId, string email, string pathToMedia, string pathToTemplates) { var campaign = _campaignRepository.Get(campaignId); message.AddRcptMergeVars(email, "Description", campaign.Description); message.AddRcptMergeVars(email, "Expiration", campaign.EndDate.ToShortDateString()); message.AddRcptMergeVars(email, "Profit", campaign.CampaignProfit); }
private void FillRelaunchCampaignMergeVars(MandrillMessage message, int campaignId, string email, string pathToMedia, string pathToTemplates) { var baseUrl = ""; string remaining = ""; if (HttpContext.Current != null) { var request = HttpContext.Current.Request; baseUrl = request.Url.Scheme + "://" + request.Url.Authority + request.ApplicationPath.TrimEnd('/') + "/"; } else { baseUrl = _wca.GetContext().CurrentSite.BaseUrl + "/"; } string side = ""; var campaign = _campaignRepository.Get(campaignId); if (campaign.EndDate.ToLocalTime().Subtract(DateTime.UtcNow).Days > 0) { remaining = campaign.EndDate.ToLocalTime().Subtract(DateTime.UtcNow).Days + " days"; } else if (campaign.EndDate.ToLocalTime().Subtract(DateTime.UtcNow).Days <= -1) { remaining = Math.Abs(campaign.EndDate.ToLocalTime().Subtract(DateTime.UtcNow).Days) + "days ago"; } else { if (campaign.EndDate.ToLocalTime().Subtract(DateTime.UtcNow).Hours > 0) { remaining = campaign.EndDate.ToLocalTime().Subtract(DateTime.UtcNow).Hours + "hours"; } else { remaining = Math.Abs(campaign.EndDate.ToLocalTime().Subtract(DateTime.UtcNow).Hours) + "hours ago"; } } if (campaign.BackSideByDefault) { side = "back"; } else { side = "front"; } message.AddRcptMergeVars(email, "CampaignTitle", campaign.Title); message.AddRcptMergeVars(email, "Url", baseUrl); message.AddRcptMergeVars(email, "Campaignremaining", remaining); message.AddRcptMergeVars(email, "CampaignEndDate", campaign.EndDate.ToLocalTime().ToShortDateString()); message.AddRcptMergeVars(email, "CampaignAlias", campaign.Alias); message.AddRcptMergeVars(email, "CampaignPreviewUrl", baseUrl + "/Media/campaigns/" + campaign.Id + "/" + campaign.Products.First(p => p.WhenDeleted == null).Id + "/normal/" + side + ".png"); message.AddRcptMergeVars(email, "CurrencyFlagFileName", baseUrl.TrimEnd('/') + campaign.CurrencyRecord.FlagFileName); }
private void FillCampaignMergeVars(MandrillMessage message, int campaignId, string email, string pathToMedia, string pathToTemplates) { var baseUrl = ""; string remaining = ""; if (HttpContext.Current != null) { var request = HttpContext.Current.Request; baseUrl = request.Url.Scheme + "://" + request.Url.Authority + request.ApplicationPath.TrimEnd('/') + "/"; } else { baseUrl = _wca.GetContext().CurrentSite.BaseUrl + "/"; } string side = ""; var campaign = _campaignRepository.Get(campaignId); if (campaign.EndDate.ToLocalTime().Subtract(DateTime.UtcNow).Days > 0) { remaining = campaign.EndDate.ToLocalTime().Subtract(DateTime.UtcNow).Days + " days"; } else if (campaign.EndDate.ToLocalTime().Subtract(DateTime.UtcNow).Days <= -1) { remaining = Math.Abs(campaign.EndDate.ToLocalTime().Subtract(DateTime.UtcNow).Days) + "days ago"; } else { if (campaign.EndDate.ToLocalTime().Subtract(DateTime.UtcNow).Hours > 0) { remaining = campaign.EndDate.ToLocalTime().Subtract(DateTime.UtcNow).Hours + "hours"; } else { remaining = Math.Abs(campaign.EndDate.ToLocalTime().Subtract(DateTime.UtcNow).Hours) + "hours ago"; } } if (campaign.BackSideByDefault) { side = "back"; } else { side = "front"; } message.AddRcptMergeVars(email, "CampaignTitle", campaign.Title); message.AddRcptMergeVars(email, "Campaignremaining", remaining); message.AddRcptMergeVars(email, "Url", baseUrl); message.AddRcptMergeVars(email, "CampaignAlias", campaign.Alias); message.AddRcptMergeVars(email, "ReservedCount", campaign.ProductCountSold.ToString()); message.AddRcptMergeVars(email, "Goal", campaign.ProductCountGoal.ToString()); message.AddRcptMergeVars(email, "SellerEmail", _contentManager.Query<UserPart, UserPartRecord>().List().FirstOrDefault(user => user.Id == campaign.TeeyootUserId).Email); message.AddRcptMergeVars(email, "CampaignPreviewUrl", baseUrl + "/Media/campaigns/" + campaign.Id + "/" + campaign.Products.First(p => p.WhenDeleted == null).Id + "/normal/" + side + ".png"); message.AddRcptMergeVars(email, "VideoPreviewUrl", baseUrl + "/Media/Default/images/video_thumbnail_521x315.jpg/"); message.AddRcptMergeVars(email, "CurrencyFlagFileName", baseUrl.TrimEnd('/') + campaign.CurrencyRecord.FlagFileName); }
private void FillOrdersMergeVars(MandrillMessage message, IList<OrderRecord> orders, string email, string orderPublicId) { List<Dictionary<string, object>> ordersList = new List<Dictionary<string, object>>(); foreach (var item in orders) { int index = orders.IndexOf(item); int quantity = item.Products.Sum(m => m.Count); var campaign = _campaignRepository.Get(item.Products.FirstOrDefault().CampaignProductRecord.CampaignRecord_Id); ordersList.Add(new Dictionary<string, object>{ {"id", item.OrderPublicId}, {"quantity", quantity}, {"campaign", campaign.Title}, {"created", item.Created.ToLocalTime().ToString()} }); } var arr = ordersList.ToArray(); message.AddRcptMergeVars(email, "ORDERS", ordersList.ToArray()); }