private void SendOrderMail(Order order, ShoppingCart shoppingCart) { var htmlOrderTable = OrderService.GenerateHtmlOrderTable(order.OrderItems, CurrencyService.CurrentCurrency, shoppingCart.TotalPrice, shoppingCart.DiscountPercentOnTotalPrice, order.Coupon, order.Certificate, shoppingCart.TotalDiscount, order.ShippingCost, order.PaymentCost, order.TaxCost, order.BonusCost, PageData.OrderConfirmationData.BonusPlus); // Build a new mail var customerSb = new StringBuilder(); customerSb.AppendFormat(SettingsOrderConfirmation.CustomerFirstNameField + ": {0}<br/>", PageData.OrderConfirmationData.Customer.FirstName); if (SettingsOrderConfirmation.IsShowLastName) { customerSb.AppendFormat(Resource.Client_Registration_Surname + ": {0}<br/>", PageData.OrderConfirmationData.Customer.LastName); } if (SettingsOrderConfirmation.IsShowPatronymic) { customerSb.AppendFormat(Resource.Client_Registration_Patronymic + ": {0}<br/>", PageData.OrderConfirmationData.Customer.Patronymic); } if (SettingsOrderConfirmation.IsShowPhone) { customerSb.AppendFormat(SettingsOrderConfirmation.CustomerPhoneField + ": {0}<br/>", PageData.OrderConfirmationData.Customer.Phone); } if (SettingsOrderConfirmation.IsShowCountry) { customerSb.AppendFormat(Resource.Client_Registration_Country + ": {0}<br/>", PageData.OrderConfirmationData.ShippingContact.Country); } if (SettingsOrderConfirmation.IsShowState && PageData.OrderConfirmationData.ShippingContact.RegionName.IsNotEmpty()) { customerSb.AppendFormat(Resource.Client_Registration_State + ": {0}<br/>", PageData.OrderConfirmationData.ShippingContact.RegionName); } if (SettingsOrderConfirmation.IsShowCity) { customerSb.AppendFormat(Resource.Client_Registration_City + ": {0}<br/>", PageData.OrderConfirmationData.ShippingContact.City); } if (SettingsOrderConfirmation.IsShowZip && PageData.OrderConfirmationData.ShippingContact.Zip.IsNotEmpty()) { customerSb.AppendFormat(Resource.Client_Registration_Zip + ": {0}<br/>", PageData.OrderConfirmationData.ShippingContact.Zip); } if (SettingsOrderConfirmation.IsShowAddress) { customerSb.AppendFormat(Resource.Client_Registration_Address + ": {0}<br/>", string.IsNullOrEmpty(PageData.OrderConfirmationData.ShippingContact.Address) ? Resource.Client_OrderConfirmation_NotDefined : PageData.OrderConfirmationData.ShippingContact.Address); } if (SettingsOrderConfirmation.IsShowCustomShippingField1 && PageData.OrderConfirmationData.ShippingContact.CustomField1.IsNotEmpty()) { customerSb.AppendFormat(SettingsOrderConfirmation.CustomShippingField1 + ": {0}<br/>", PageData.OrderConfirmationData.ShippingContact.CustomField1); } if (SettingsOrderConfirmation.IsShowCustomShippingField2 && PageData.OrderConfirmationData.ShippingContact.CustomField2.IsNotEmpty()) { customerSb.AppendFormat(SettingsOrderConfirmation.CustomShippingField2 + ": {0}<br/>", PageData.OrderConfirmationData.ShippingContact.CustomField2); } if (SettingsOrderConfirmation.IsShowCustomShippingField3 && PageData.OrderConfirmationData.ShippingContact.CustomField3.IsNotEmpty()) { customerSb.AppendFormat(SettingsOrderConfirmation.CustomShippingField3 + ": {0}<br/>", PageData.OrderConfirmationData.ShippingContact.CustomField3); } customerSb.AppendFormat("Email: {0}<br/>", PageData.OrderConfirmationData.Customer.EMail); var email = PageData.OrderConfirmationData.Customer.EMail; var orderMailTemplate = new NewOrderMailTemplate(order.OrderID.ToString(), order.Number, email, customerSb.ToString(), PageData.OrderConfirmationData.SelectedShippingItem .MethodNameRate + (PageData.OrderConfirmationData.SelectedShippingItem.Ext != null && PageData.OrderConfirmationData.SelectedShippingItem.Ext.PickpointAddress.IsNotEmpty() ? "<br />" + PageData.OrderConfirmationData.SelectedShippingItem.Ext.PickpointAddress : ""), PageData.OrderConfirmationData.SelectedPaymentItem.Name, htmlOrderTable, CurrencyService.CurrentCurrency.Iso3, order.Sum.ToString(), order.CustomerComment, OrderService.GetBillingLinkHash(order)); orderMailTemplate.BuildMail(); var paymentMethod = PaymentService.GetPaymentMethod(order.PaymentMethodId); if (!CustomerContext.CurrentCustomer.IsVirtual) { // TODO check it if (paymentMethod != null) { SendMail.SendMailNow(email, orderMailTemplate.Subject, orderMailTemplate.Body, true); SendMail.SendMailNow(SettingsMail.EmailForOrders, orderMailTemplate.Subject, orderMailTemplate.Body, true); } else { SendMail.SendMailNow(SettingsMail.EmailForOrders, orderMailTemplate.Subject, " ERROR: paymentMethod is not exist. " + orderMailTemplate.Body, true); } } }
protected int CreateCertificateOrder() { var certificate = new GiftCertificate { CertificateCode = GiftCertificateService.GenerateCertificateCode(), ToName = txtTo.Text, FromName = txtFrom.Text, Sum = Convert.ToSingle(txtSum.Text.Trim()), CertificateMessage = txtMessage.Text, Enable = true, ToEmail = txtEmail.Text }; var orderContact = new OrderContact { Address = string.Empty, City = string.Empty, Country = string.Empty, Name = string.Empty, Zip = string.Empty, Zone = string.Empty }; var taxes = TaxServices.CalculateCertificateTaxes(certificate.Sum); var taxOverPay = taxes.Where(tax => !tax.Key.ShowInPrice).Sum(tax => tax.Value); float orderSum = certificate.Sum + taxOverPay; var payment = PaymentService.GetPaymentMethod(hfPaymentMethod.Value.TryParseInt()); float paymentPrice = payment.Extracharge == 0 ? 0 : (payment.ExtrachargeType == ExtrachargeType.Fixed ? payment.Extracharge : payment.Extracharge / 100 * certificate.Sum + taxOverPay); var baseCurrency = CurrencyService.BaseCurrency; var order = new Order { OrderDate = DateTime.Now, OrderCustomer = new OrderCustomer { CustomerID = CustomerContext.CurrentCustomer.Id, Email = txtEmailFrom.Text, FirstName = CustomerContext.CurrentCustomer.FirstName, LastName = CustomerContext.CurrentCustomer.LastName, CustomerIP = HttpContext.Current.Request.UserHostAddress }, OrderCurrency = new OrderCurrency { //CurrencyCode = CurrencyService.CurrentCurrency.Iso3, //CurrencyNumCode = CurrencyService.CurrentCurrency.NumIso3, //CurrencyValue = CurrencyService.CurrentCurrency.Value, //CurrencySymbol = CurrencyService.CurrentCurrency.Symbol, //IsCodeBefore = CurrencyService.CurrentCurrency.IsCodeBefore CurrencyCode = baseCurrency.Iso3, CurrencyValue = baseCurrency.Value, CurrencySymbol = baseCurrency.Symbol, CurrencyNumCode = baseCurrency.NumIso3, IsCodeBefore = baseCurrency.IsCodeBefore }, OrderStatusId = OrderService.DefaultOrderStatus, AffiliateID = 0, ArchivedShippingName = Resource.Client_GiftCertificate_DeliveryByEmail, PaymentMethodId = Convert.ToInt32(hfPaymentMethod.Value), ArchivedPaymentName = payment.Name, PaymentDetails = null, Sum = orderSum + paymentPrice, PaymentCost = paymentPrice, OrderCertificates = new List <GiftCertificate> { certificate }, TaxCost = taxes.Sum(tax => tax.Value), Taxes = taxes.Select(tax => new OrderTax() { TaxID = tax.Key.TaxId, TaxName = tax.Key.Name, TaxShowInPrice = tax.Key.ShowInPrice, TaxSum = tax.Value }).ToList(), ShippingContact = orderContact, BillingContact = orderContact, Number = OrderService.GenerateNumber(1) }; if (order.PaymentMethod.Type == PaymentType.QIWI) { order.PaymentDetails = new PaymentDetails() { Phone = txtPhone.Text }; } OrderId = order.OrderID = OrderService.AddOrder(order); OrderNumber = order.Number = OrderService.GenerateNumber(order.OrderID); OrderService.UpdateNumber(order.OrderID, order.Number); OrderService.ChangeOrderStatus(order.OrderID, OrderService.DefaultOrderStatus); string email = txtEmailFrom.Text; string htmlOrderTable = OrderService.GenerateHtmlOrderCertificateTable(order.OrderCertificates, CurrencyService.CurrentCurrency, order.PaymentCost, order.TaxCost); var orderMailTemplate = new NewOrderMailTemplate(order.OrderID.ToString(), order.Number, email, string.Empty, order.ArchivedShippingName, order.ArchivedPaymentName, htmlOrderTable, CurrencyService.CurrentCurrency.Iso3, order.Sum.ToString(), order.CustomerComment, OrderService.GetBillingLinkHash(order)); orderMailTemplate.BuildMail(); SendMail.SendMailNow(email, orderMailTemplate.Subject, orderMailTemplate.Body, true); SendMail.SendMailNow(SettingsMail.EmailForOrders, orderMailTemplate.Subject, orderMailTemplate.Body, true); return(OrderId); }