@inherits Dynamicweb.Rendering.RazorTemplateBase> @using System.Text @using Dynamicweb @using Dynamicweb.Frontend @using Dynamicweb.Ecommerce.Orders @functions { public static string GetEmailContent(PageView pageView, string orderId) { var emailContent = ""; if (string.IsNullOrEmpty(orderId)) { return emailContent; } var order = Dynamicweb.Ecommerce.Services.Orders.GetById(orderId); var area = pageView != null ? pageView.Area : PageView.GetAreaByDomain() ?? Dynamicweb.Content.Services.Areas.GetAreas().First(); var page = Dynamicweb.Content.Services.Pages.GetPageByNavigationTag(area.ID, "Email_" + order.StateId); if (page == null) { return emailContent; } using (new PageViewIsolation(page.ID)) { var template = PageView.GetPageviewAsTemplate(page.ID, new Dictionary { { "Order", order }, { "OrderID", order.Id } }); var renderer = new Dynamicweb.Ecommerce.Frontend.Renderer(PageView.Current()); renderer.RenderOrderDetails(template, order, true); if (order.Complete && order.CheckoutPageId > 0) { template.SetTag("Ecom:Order.ReceiptURL", CartUrl(order, order.CheckoutPageId)); } emailContent = OutputReplacer.InsertGlobalParagraphs(template.Output()); } return emailContent; } private static string CartUrl(Order order, int pageId) { // Build url var url = Context.Current.Request.Url; bool disablePortNumber = Dynamicweb.Configuration.SystemConfiguration.Instance.GetValue("/Globalsettings/System/http/DisableBaseHrefPort") == "True"; string port = (disablePortNumber ? "" : url.IsDefaultPort ? "" : string.Format(":{0}", url.Port)).ToString(); var urlString = new StringBuilder(string.Format("{0}://{1}{2}", url.Scheme, url.Host, port)); // Page id // Please notice: We need the ID in the URL even if Request("ID") is null. Otherwise custom urls may fail!!! urlString.AppendFormat("/Default.aspx?ID={0}", pageId); // Complete order query if (order.Complete || order.IsQuote) { urlString.AppendFormat("&{1}={0}", order.Id, "CompletedOrderId"); urlString.AppendFormat("&CompletedOrderSecret={0}", order.Secret); } return urlString.ToString(); } } @GetEmailContent(Pageview, GetString("Ecom:Order.ID"))