public static string FillEmailVariables(OrderConfirmationEmailRequest request)
        {
            var sbTemp = new StringBuilder(request.HtmlBody);

            var cityName = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(request.CityName.ToLower());

            sbTemp
            .Replace("[@App_Store@]", request.AppStoreLink)
            .Replace("[@Google_Play@]", request.GooglePlayLink)
            .Replace("[@View_In_Browser@]", request.ViewInBrowserLink)
            .Replace("[Email_Subject]", request.EmailSubject)
            .Replace("[Customer_First_Name]", request.ReceiverFirstname)
            .Replace("[City_Name]", cityName)
            .Replace("[Order_Number]", request.OrderNumber)
            .Replace("[@View_And_print_ticket@]", request.ViewAndPrintTicketLink)
            .Replace("[Ticket_Details]", request.TicketDetails)
            .Replace("[User_Full_Name]", request.UserFullName)
            .Replace("[Date_Of_Order]", request.DateOfOrder)
            .Replace("[Order_Total]", request.OrderTotal)
            .Replace("[Ticket_Quantity]", request.TicketQuantity)
            .Replace("[@terms_and_conditions@]", request.TermsAndConditionsLink)
            .Replace("[@privacy_policy@]", request.PrivacyPolicyLink)
            .Replace("[@App_Store@]", request.AppStoreLink)
            .Replace("[@Google_Play@]", request.GooglePlayLink)
            .Replace("[City_Number]", request.CityNumber)
            .Replace("[City_Email]", request.CityEmail)
            .Replace("[@Contact_Us@]", request.ContactUsLink)
            .Replace("[@Faqs@]", request.FaqLink)
            .Replace("[@Download_Map@]", request.DownloadMapLink)
            .Replace("[@Trip_Advisor@]", request.TripAdvisorLink)
            .Replace("[@Trust_Pilot@]", request.TrustPilotLink);

            return(sbTemp.ToString());
        }
        public virtual string CreateOrderConfirmationEmail(OrderConfirmationEmailRequest request)
        {
            var email = new Email
            {
                HTMLBody      = FillEmailVariables(request),
                DateCreated   = DateTime.Now,
                Subject       = request.EmailSubject,
                FromAddress   = request.SenderEmail,
                ToAddresses   = request.ReceiverEmail,
                BCCAddresses  = request.CcEmails,
                PriorityLevel = 3,
                ReadyToSend   = true,
                OrderId       = request.OrderId
            };

            EmailRepository.Add(email);

            return(string.Empty);
        }
        private bool GetTemplate(OrderConfirmationEmailRequest request)
        {
            var siteTemlate = NotificationService.GetSiteEmailTemplate(MicrositeId, CurrentLanguageId);

            if (siteTemlate == null)
            {
                Log("Site template not found BasePage => GetTemplate() id:" + _externalSessionId);
                return(false);
            }

            //populate trip advisor and trust pilot variables
            request.TripAdvisorLink = siteTemlate.TripAdvisorLink;
            request.TrustPilotLink  = siteTemlate.TrustPilotLink;

            //attempt to get related email template
            var template = NotificationService.GetEmailTemplate(siteTemlate.EmailTemplateId.ToString());

            if (template == null)
            {
                Log("Email template not found BasePage => GetTemplate() id:" + siteTemlate.EmailTemplateId);
                return(false);
            }

            var htmlFilePath = Server.MapPath(EmailTemplatePath + template.ContentFile);

            using (var reader = File.OpenText(htmlFilePath)) // Path to your
            {
                request.HtmlBody = reader.ReadToEnd();
            }

            if (string.IsNullOrEmpty(request.HtmlBody) || request.HtmlBody.Length < 200)
            {
                Log("Email template return invalid body BasePage => GetTemplate() id:" + siteTemlate.EmailTemplateId);
                return(false);
            }
            return(true);
        }
        public void CreateOrderConfirmationEmail(Order order)
        {
            if (order == null)
            {
                return;
            }

            var eVoucherPage   = EnumHelper.GetDescription(EmailTemplatePages.EVoucher);
            var contactData    = NotificationService.GetSiteContactData(MicrositeId, eVoucherPage);
            var rootUrl        = UrlHelper.GetRootUrl(Request.Url.AbsoluteUri);
            var defaultRootUrl = ConfigurationManager.AppSettings["BaseUrl"];
            var eVoucherLink   = (string.IsNullOrEmpty(rootUrl) ? defaultRootUrl : rootUrl) + "/" +
                                 string.Format(ConfigurationManager.AppSettings["View.Voucher"], order.Id);
            var bornUrlRoot = string.Format(ConfigurationManager.AppSettings["BornBaseInsecureUrl"], CurrentLanguageId,
                                            MicrositeId);

            var currency = CurrencyService.GetCurrencyById(order.CurrencyId.ToString());

            var request = new OrderConfirmationEmailRequest
            {
                ReceiverFirstname      = order.User.Firstname,
                EmailSubject           = MakeSubject(order.OrderNumber),
                SenderEmail            = "\"BigBus Admin\" <" + contactData.Email + ">",
                ReceiverEmail          = order.EmailAddress,
                CcEmails               = contactData.Email,
                CityName               = MicrositeId,
                LanguageId             = CurrentLanguageId,
                OrderNumber            = order.OrderNumber.ToString(),
                OrderId                = order.Id.ToString(),
                ViewAndPrintTicketLink = eVoucherLink,
                UserFullName           = order.UserName,
                DateOfOrder            = LocalizationService.GetLocalDateTime(MicrositeId).ToString("dd MMM yyyy"), //*** format to local date
                TicketDetails          = FormatOrderDetails(order),
                OrderTotal             = currency.Symbol + order.Total,
                TicketQuantity         = order.TotalQuantity.ToString(),
                TermsAndConditionsLink = bornUrlRoot + ConfigurationManager.AppSettings["TermAndCo.Url"],
                PrivacyPolicyLink      = bornUrlRoot + ConfigurationManager.AppSettings["Privacy.Url"],
                ContactUsLink          = bornUrlRoot + ConfigurationManager.AppSettings["ContactUs.Url"],
                FaqLink                = bornUrlRoot + ConfigurationManager.AppSettings["Faqs.Url"],
                DownloadMapLink        = bornUrlRoot + ConfigurationManager.AppSettings["RoutMap.Url"],
                AppStoreLink           = MakeAppleDownloadUrl(),
                GooglePlayLink         = MakeGooglePlayDownloadUrl(),
                CityNumber             = ConfigurationManager.AppSettings[string.Format("{0}_Telephone", MicrositeId)],
                CityEmail              = ConfigurationManager.AppSettings[string.Format("{0}_Email", MicrositeId)],
                ViewInBrowserLink      = BaseUrl + "ViewEmail.aspx?oid=" + order.Id
            };

            var templateSuccessful = GetTemplate(request);

            if (!templateSuccessful)
            {
                return;
            }

            var result = NotificationService.CreateOrderConfirmationEmail(request);

            if (!string.IsNullOrEmpty(result))
            {
                Log(result);
            }
        }