コード例 #1
0
ファイル: MandrillService.cs プロジェクト: omidam81/Ver1.0
        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);
        }
コード例 #2
0
ファイル: Messages.cs プロジェクト: abhishekbedi/Mandrill.net
            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);
            }
コード例 #3
0
ファイル: Messages.cs プロジェクト: abhishekbedi/Mandrill.net
            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);
            }
コード例 #4
0
        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());
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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));
            }

        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);

         

        }
コード例 #9
0
        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);

        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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());           
        }