public virtual ActionResult Confirm(OrderConfirmViewModel model) { var orderUtils = new OrderUtils(_context, CurrentUserId); if (!model.OrderConfirmed) { // Regenerate the model model = orderUtils.GetConfirmModel(model.ProductId); ModelState.AddModelError("OrderConfirmed", "You must check the confirmation box to activate this license"); return View(model); } var createdOrder = orderUtils.CreateOrder(model.ProductId); if (createdOrder.OrderStatus == OrderStatus.AwaitingPayment) return RedirectToAction(MVC.Products.Pay.Index(createdOrder.Id)); else if (createdOrder.OrderStatus != OrderStatus.Completed) throw new InvalidOperationException( string.Format("Order status of {0} is not supported", createdOrder.OrderStatus.ToString())); // Order was completed as it was free orderUtils.ActivateOrderedLicenses(createdOrder); string LicenseType = orderUtils.GetLicenseDescription(createdOrder.FillPerfectLicenses.First().LicenseType); return RedirectToAction( MVC.Products.FillPerfect.LicenseActivated( (Guid)_context.Users.Find(createdOrder.OrderedForId).FillPerfectKey, createdOrder.FillPerfectLicenses.First().EffectiveDate, createdOrder.FillPerfectLicenses.First().ExpirationDate, LicenseType)); }
//public static async Task<int> Send(OrderSummaryViewModel order) //{ // var body = "<p>Order number: {0} from customer {1} </p><p>Order Total:</p><p>{2}</p>"; // var message = new MailMessage(); // var email1 = ""; // var email2 = ""; // using (var context = new ShoppingCartContext()) // { // email1 = context.AppSettings.Single(a => a.Code == "NotificationEmail1").Value; // email2 = context.AppSettings.Single(a => a.Code == "NotificationEmail2").Value; // } // message.To.Add(new MailAddress(email1)); //send to company email // message.To.Add(new MailAddress(email2)); //send to company email // message.Subject = "An order has placed !!"; // message.Body = string.Format(body, order.OrderNumber, order.FullName, order.Total.ToString("N0")); // message.IsBodyHtml = true; // using (var smtp = new SmtpClient()) // { // await smtp.SendMailAsync(message); // } // //send to customer email // if (!string.IsNullOrEmpty(order.Email)) // { // body = CreateEmailTemplate(order); // message = new MailMessage(); // message.To.Add(new MailAddress(order.Email)); // message.Subject = "Cảm ơn bạn đã đặt hàng ở H.A Shop !"; // message.Body = body; // message.IsBodyHtml = true; // using (var smtp = new SmtpClient()) // { // await smtp.SendMailAsync(message); // } // } // return 1; //} public static string CreateEmailTemplate(OrderConfirmViewModel order, string orderNumber) { //var text = "Tin nhắn từ: {0}. Nội dung: {1}. {2}"; var contact = ""; var rootUrl = ""; using (var context = new ShoppingCartContext()) { var contactInfo = context.Contents.SingleOrDefault(c => c.TextLocation == "Order.Email.ContactInfo"); if (contactInfo != null) { contact = contactInfo.TextValue; } rootUrl = context.AppSettings.Single(a => a.Code == "RootUrl").Value; } var ret = "Thank you for shopping at J.A Shop. Your order number is: " + orderNumber; ret += "<p> ================================================================= </p>"; ret += "<p><b> ORDER RECEIPT " + orderNumber + "</b></p>"; foreach (var p in order.CartViewModel.CartItems) { ret += "<p> #" + p.Product.Code + " . <b>Product name:</b> " + p.Product.Description + " <b>Price/Per unit:</b>" + p.OriginalPrice.ToString("N0") + "usd . <b>Quantity:</b> " + p.Quantity + " </p>"; } ret += "<p><b>Shipping fee:</b> " + order.CartViewModel.CartTotalShippingCost.ToString("N0") + "usd </p>"; ret += "<p><b>Total amount:</b>" + order.CartViewModel.CartTotal.ToString("N0") + "usd </p>"; ret += string.Format("<p> <a href=\"{0}/OrderSummary?orderNumber={1}&guid={2}&firstTime=False\">Track order status</a></p>", rootUrl, orderNumber, order.OrderGuid); ret += "<p> ================================================================= </p>"; ret += contact; return(ret); }
public OrderConfirmViewModel ReviewOrder(string userId) { var user = this.context.Users.FirstOrDefault(x => x.Id == userId); var order = context.Orders.FirstOrDefault(x => x.OrderStage == Models.Enums.OrderStage.Active && x.ClientId == userId); var orderConfirmViewModel = new OrderConfirmViewModel() { Id = order.Id, ClientName = order.ClientName, DeliveryAddress = order.DeliveryAddress, Comment = order.Comment, ClientId = order.ClientId, Client = order.Client, DateOfCreation = order.DateOfCreation, Sum = order.Sum }; orderConfirmViewModel.Tyres = this.context.OrderTyres.Where(x => x.OrderId == order.Id).ToHashSet(); orderConfirmViewModel.WheelRims = this.context.OrderWheelRims.Where(x => x.OrderId == order.Id).ToHashSet(); orderConfirmViewModel.MotorOils = this.context.OrderMotorOils.Where(x => x.OrderId == order.Id).ToHashSet(); return(orderConfirmViewModel); }
public ActionResult Index() { OrderConfirmViewModel model = (OrderConfirmViewModel)TempData["OrderInfo"]; TempData["OrderConfirm"] = model; return(View(model)); }
public IActionResult PaymentInfoAcceptance(OrderConfirmViewModel model) { var ids = HttpContext.Session.Get <Dictionary <string, int> >("Card"); var unavaliableProds = BLL.OrderLogic.GetUnavaliableProducts(ids); if (unavaliableProds.Count != 0) { foreach (var unavaliableProd in unavaliableProds) { ids.Remove(unavaliableProd); } HttpContext.Session.SetOrUpdate("Card", ids); TempData["UnavaliableProdsMessage"] = "There were unavailable items in your shopping cart. They are removed from the card."; return(RedirectToAction("Card", "Order")); } var result = BLL.OrderLogic.CreateOrder(User.Identity.Name, model.Address, model.DelivetyType, ids, model.CardMonth, model.CardYear); result = "DDD"; if (result == "Ok") { _paymenet.Pay(); HttpContext.Session.SetOrUpdate("Card", new Dictionary <string, int>()); return(RedirectToAction("Success", "Order")); } if (result == "Card is not avaliable") { TempData["CardUnavaliable"] = "Card is not avaliable"; return(RedirectToAction("PaymentInfo", "Order", model)); } else { return(RedirectToAction("CreateOrderFail", "Order")); } }
public IActionResult Confirm(OrderConfirmViewModel vm) { var travelPackage = _travelPackageDataService.GetSingle(tp => tp.TravelPackageId == vm.TravelPackageId); // Sanity check. Check if the Travel Package is active if (travelPackage != null && travelPackage.Activated) { OrderConfirmViewModel vmConfirm = new OrderConfirmViewModel { Description = travelPackage.Description, Location = travelPackage.Location, Name = travelPackage.Name, NumPersons = vm.NumPersons, Price = travelPackage.Price, TravelPackageId = travelPackage.TravelPackageId, TotalPrice = (vm.NumPersons * travelPackage.Price) }; return(View(vmConfirm)); } ModelState.AddModelError("", "Travel Package is not active or does not exist. Unable to proceed with this Request."); return(View(new OrderConfirmViewModel { Price = 0 })); }
public async Task <ActionResult> Index(OrderConfirmViewModel model) { OrderConfirmViewModel m = (OrderConfirmViewModel)TempData["OrderConfirm"]; if (ModelState.IsValid) { var order = new Order() { OrderNumber = SeqHelper.Next("Order"), FullName = m.CheckOutInfo.Name, Address = m.CheckOutInfo.ShippingAddress, PaymentTransaction = m.CheckOutInfo.PaymentTransaction, Phone = m.CheckOutInfo.Phone, Email = m.CheckOutInfo.Email, OrderDate = DateTime.Now, OrderDetails = new List <LineOrderDetail>() }; //user who placed the order using (IdentityContext _idDb = new IdentityContext()) { var _currentUserId = User.Identity.GetUserId(); var _currentUser = _idDb.Users.FirstOrDefault(x => x.Id == _currentUserId); if (_currentUser != null) { order.UserName = _currentUser.UserName; } } if (User != null) { order.UserName = User.Identity.GetUserName(); } order.Guid = Guid.NewGuid().ToString(); var orderNumber = ShoppingCart.GetCart(this).CreateOrder(order); m.OrderGuid = order.Guid; int i = await EmailSender.SendMail(orderNumber.ToString(), m); if (User.Identity.IsAuthenticated) { if (User.IsInRole("Admin") || User.IsInRole("Consultant")) { return(RedirectToAction("Index", "OrderSummary", new { orderNumber = orderNumber, guid = "", firstTime = true })); } } return(RedirectToAction("Index", "OrderSummary", new { orderNumber = orderNumber, guid = order.Guid, firstTime = true })); } //TempData["OrderInfo"] = m; return(View()); }
public ActionResult CheckOut(FormCollection form) { var order = new OrderSummary(); order.OrderDate = DateTime.Now; if (TryUpdateModel(order)) { var orderViewModel = new OrderConfirmViewModel { Order = order, CartItems = this.CartItems }; return(View("Confirm", orderViewModel)); } return(View()); }
public IActionResult PaymentInfo(OrderConfirmViewModel model) { var ids = HttpContext.Session.Get <Dictionary <string, int> >("Card"); var unavaliableProds = BLL.OrderLogic.GetUnavaliableProducts(ids); if (unavaliableProds.Count != 0) { foreach (var unavaliableProd in unavaliableProds) { ids.Remove(unavaliableProd); } HttpContext.Session.SetOrUpdate("Card", ids); TempData["UnavaliableProdsMessage"] = "There were unavailable items in your shopping cart. They are removed from the card."; return(RedirectToAction("Card", "Order")); } return(View(model)); }
public virtual ActionResult Index(OrderConfirmViewModel model) { string paypalUrl = ConfigurationManager.AppSettings["PayPalRedirectUrl"]; if (string.IsNullOrWhiteSpace(paypalUrl)) { throw new InvalidOperationException("No paypal redirect url specified"); } var order = _context.Orders .Where(x => x.Id == model.OrderId && x.OrderedForId == CurrentUserId) .FirstOrDefault(); if (order == null || order.OrderStatus != DomainModel.Enums.OrderStatus.AwaitingPayment) { return(RedirectToAction(MVC.Home.Index())); } // Form long parameters string returnUrl = string.Concat(Request.Url.Scheme, "://", Request.Url.DnsSafeHost, ":", Request.Url.Port, Url.Action(MVC.Products.Pay.ProcessPayPal())); returnUrl = returnUrl.Replace(":80/", "/"); string cancelUrl = string.Concat(Request.Url.Scheme, "://", Request.Url.DnsSafeHost, ":", Request.Url.Port, Url.Action(MVC.Products.Pay.Index(model.OrderId))); cancelUrl = cancelUrl.Replace(":80/", "/"); // Start the workflow for paypal string tokenResponse = GetPaypalTransactionToken(order.TotalPrice, returnUrl, cancelUrl); if (string.IsNullOrWhiteSpace(tokenResponse)) { throw new InvalidOperationException("No paypal token was received"); } tokenResponse = HttpUtility.UrlDecode(tokenResponse).Replace("TOKEN=", ""); order.PayPalToken = tokenResponse; _context.SaveChanges(); // Redirect to paypal with the token paypalUrl = string.Concat(paypalUrl, "?cmd=_express-checkout&useraction=commit&token=", HttpUtility.UrlEncode(tokenResponse)); return(Redirect(paypalUrl)); }
public ActionResult Confirm(FormCollection form) { if (CartItems.Count <= 0) { return(RedirectToAction("Index", "Cart")); } var order = new OrderSummary(); order.OrderDate = DateTime.Now; if (TryUpdateModel(order)) { var orderViewModel = new OrderConfirmViewModel { Order = order, CartItems = this.CartItems }; return(View(orderViewModel)); } return(View("CheckOut")); }
private void reFreshData() { addfeeflag = false; if (model.dto != null) { if (model == null) { model = new OrderConfirmViewModel(Context.Org.Id_org, xapFormControl); } if (model.dto.Fg_sign != FBoolean.False || model.dto.Fg_stop != FBoolean.False || model.dto.Fg_canc != FBoolean.False) { model.GetOrConfirmList(model.dto); } else { model.OrderList.Clear(); } OnFillData(); } }
public async Task <IActionResult> Process(OrderConfirmViewModel vm) { try { var user = await _userDataService.GetUserAsync(User); var profile = _profileDataService.GetSingle(p => p.UserId == user.Id); var travelPackage = _travelPackageDataService.GetSingle(tp => tp.TravelPackageId == vm.TravelPackageId); Order order = new Order { ItemPrice = travelPackage.Price, NumberPersons = vm.NumPersons, OrderDate = DateTime.Now, ProfileId = profile.ProfileId, TotalPrice = vm.TotalPrice, TravelPackageId = travelPackage.TravelPackageId }; _orderDataService.Create(order); //TravelPackageOrder travelPackageOrder = new TravelPackageOrder //{ // OrderId = order.OrderId, // TravelPackageId = travelPackage.TravelPackageId //}; //_travelPackageOrderDataService.Create(travelPackageOrder); return(RedirectToAction("Index", "Home")); } catch (Exception ex) { var errorMessage = ex.Message; ModelState.AddModelError("", "Error while processing request: " + errorMessage); return(View()); } }
public virtual ActionResult Confirm(OrderConfirmViewModel model) { var orderUtils = new OrderUtils(_context, CurrentUserId); if (!model.OrderConfirmed) { // Regenerate the model model = orderUtils.GetConfirmModel(model.ProductId); ModelState.AddModelError("OrderConfirmed", "You must check the confirmation box to activate this license"); return(View(model)); } var createdOrder = orderUtils.CreateOrder(model.ProductId); if (createdOrder.OrderStatus == OrderStatus.AwaitingPayment) { return(RedirectToAction(MVC.Products.Pay.Index(createdOrder.Id))); } else if (createdOrder.OrderStatus != OrderStatus.Completed) { throw new InvalidOperationException( string.Format("Order status of {0} is not supported", createdOrder.OrderStatus.ToString())); } // Order was completed as it was free orderUtils.ActivateOrderedLicenses(createdOrder); string LicenseType = orderUtils.GetLicenseDescription(createdOrder.FillPerfectLicenses.First().LicenseType); return(RedirectToAction( MVC.Products.FillPerfect.LicenseActivated( (Guid)_context.Users.Find(createdOrder.OrderedForId).FillPerfectKey, createdOrder.FillPerfectLicenses.First().EffectiveDate, createdOrder.FillPerfectLicenses.First().ExpirationDate, LicenseType))); }
public ActionResult Index(CheckoutViewModel model) { string cartCode = ""; decimal cartTotal = 0m; var cart = ShoppingCart.GetCart(this.HttpContext); //to redirect if view is not valid cartCode = cart.ShoppingCartId; cartTotal = cart.GetTotal(); if (ModelState.IsValid) { // Set up our ViewModel var viewModel = new ShoppingCartViewModel { CartItems = cart.GetCartItems(), CartTotal = cart.GetTotal() + cart.GetTotalShippingCost(), CartTotalShippingCost = cart.GetTotalShippingCost(), }; //update the cart code to the user id if they are logged in //viewModel.CartItems.ForEach(c => c.Code = cart.GetCartId(HttpContext)); //string paymentTypeValue = Request.Form["paymentType"].ToString(); PaymentType paymentType; PaymentStatus paymentStatus; using (var context = new ShoppingCartContext()) { //paymentType = context.PaymentTypes.Single(t => t.Description == paymentTypeValue); paymentType = context.PaymentTypes.Single(t => t.Code == "PayLater"); paymentStatus = context.PaymentStatuses.Single(p => p.Code == "NotPaid"); } var m = new OrderConfirmViewModel() { CartViewModel = viewModel, CheckOutInfo = new CheckoutViewModel() { ShippingAddress = model.ShippingAddress, PaymentTransaction = new PaymentTransaction() { //todo: comment out this line, because we disabled the amount text box. //todo: when amount text box is enabled, uncomment this line to get the entered amount value //Amount = model.PaymentTransaction.Amount, Amount = 0m, //Amount = viewModel.CartTotal, Code = Guid.NewGuid().ToString(), PartialPayment = true, //PartialPayment = (model.PaymentTransaction.Amount < viewModel.CartTotal), //todo: PaymentStatusId = paymentStatus.Id, //1 = on hold, 2 = processing, 3 = processed, 4 = complete PaymentTypeId = paymentType.Id, PaymentTypeDescription = paymentType.Description, //PostedAmount = 0m }, Name = model.Name, Email = model.Email, Phone = model.Phone } }; m.CheckOutInfo.ShippingAddress.Primary = false; m.CheckOutInfo.ShippingAddress.Code = Guid.NewGuid().ToString(); m.CheckOutInfo.ShippingAddress.AddressTypeId = 2; TempData["OrderInfo"] = m; return(RedirectToAction("Index", "OrderConfirm")); } var checkoutModel = TempData["CheckoutInfo"]; return(View(checkoutModel)); }
/// <summary> /// 获取控件相关的数据,不涉及界面(不读写界面元素)。 /// </summary> protected override void OnLoadData() { model = new OrderConfirmViewModel(Context.Org.Id_org, xapFormControl); }
public ActionResult CheckOrder(long?OrderId, string cartItemStr = "", string totalAmount = "") { Order order = new Order(); OrderConfirmViewModel orderConfirmViewModel = new OrderConfirmViewModel(); long customerId = (Session[Constants.SESSION_USER] as Customer).Id; Address address = _readFromDb.Address.Where(x => x.CustomerId == customerId && x.IsDefault).FirstOrDefault(); if (address == null) { return(Content("<script>alert('请添加收货地址。');location.href='/Address/GetAddress'</script>")); } else { if (OrderId == null) { string[] cartItemsIdList = cartItemStr.Split(';'); List <OrderItem> orderItems = new List <OrderItem>(); for (int i = 0; i < cartItemsIdList.Length - 1; i++) { if (!string.IsNullOrEmpty(cartItemsIdList[i])) { long cartItemsId = Convert.ToInt64(cartItemsIdList[i]); CartItem cartItem = _readFromDb.CartItems.Where(x => x.Id == cartItemsId).FirstOrDefault(); OrderItem orderItem = new OrderItem(); orderItem.ProductId = cartItem.ProductId; orderItem.Quantity = cartItem.Quantity; orderItem.UnitPrice = cartItem.PricePerProduct; orderItem.DiscountPrice = cartItem.PricePerProduct; orderItems.Add(orderItem); _cartItemRepository.UpdateCartItem(cartItem.Id); } } order.CustomerId = customerId; order.TotalAmount = Convert.ToDecimal(totalAmount); order.OrderStatus = Constants.OBLIGATION; order.OrderDate = DateTime.Now; order.DeliveryDate = Convert.ToDateTime("1970-01-01 00:00:00.000"); order.OrderItems = orderItems; order.AddressId = address.Id; order.IsSpecialOrder = false; order.SpecialType = string.Empty; try { order = _orderService.AddOrder(order); order = _readFromDb.Orders.Where(x => x.Id == order.Id).FirstOrDefault(); } catch (System.Exception) { } } else { order = _orderRepository.GetOrderByOrderId((long)OrderId); order.AddressId = _readFromDb.Address.Where(x => x.CustomerId == customerId && x.IsDefault).FirstOrDefault().Id; _orderRepository.UpdateOrder(order); order = _readFromDb.Orders.Where(x => x.Id == OrderId).FirstOrDefault(); } try { decimal actuallyAmount = 0; foreach (OrderItem orderItem in order.OrderItems) { actuallyAmount += orderItem.Product.Price * orderItem.Quantity; } orderConfirmViewModel.ActuallyAmount = actuallyAmount; orderConfirmViewModel.DisCountAmount = actuallyAmount - order.TotalAmount; orderConfirmViewModel.order = order; orderConfirmViewModel.OrderId = order.Id; orderConfirmViewModel.ProvinceList = _provinceRepository.GetProvince(); orderConfirmViewModel.CityList = _cityRepository.GetCity(); orderConfirmViewModel.AreaList = _areaRepository.GetArea(); } catch (Exception ex) { } return(View(orderConfirmViewModel)); } }
public ActionResult ImmediatelyBuy(long productId, int quanlity, decimal pricePerProduct) { long customerId = (Session[Constants.SESSION_USER] as Customer).Id; Address address = _readFromDb.Address.Where(x => x.CustomerId == customerId && x.IsDefault).FirstOrDefault(); if (address == null) { return(Content("<script>alert('请添加收货地址。');location.href='/Address/GetAddress'</script>")); } else { var product = (from p in _readFromDb.Products join d in _readFromDb.Discounts on p.Id equals d.ProductId where p.Id == productId select new ProductListDataModel { ProductId = p.Id, ProductName = p.ProductName, Price = Math.Round((double)p.Price, 2), Discounts = d.Discounts, DiscountPrice = Math.Round((double)((p.Price * d.Discounts) / 10), 2), ProductUrl = p.Url }); OrderConfirmViewModel orderConfirmViewModel = new OrderConfirmViewModel(); List <OrderItem> orderItems = new List <OrderItem>(); orderItems.Add(new OrderItem() { Quantity = quanlity, ProductId = productId, UnitPrice = pricePerProduct, DiscountPrice = (decimal)product.FirstOrDefault().DiscountPrice, }); Order order = new Order(); order.CustomerId = customerId; order.TotalAmount = quanlity * orderItems.FirstOrDefault().DiscountPrice; order.OrderStatus = Constants.OBLIGATION; order.OrderDate = DateTime.Now; order.DeliveryDate = Convert.ToDateTime("1970-01-01 00:00:00.000"); order.OrderItems = orderItems; order.AddressId = address.Id; order.IsSpecialOrder = false; order.SpecialType = string.Empty; try { order = _orderService.AddOrder(order); order = _readFromDb.Orders.Where(x => x.Id == order.Id).FirstOrDefault(); decimal actuallyAmount = 0; foreach (OrderItem orderItem in order.OrderItems) { actuallyAmount += orderItem.Product.Price * orderItem.Quantity; } orderConfirmViewModel.ActuallyAmount = actuallyAmount; orderConfirmViewModel.DisCountAmount = actuallyAmount - order.TotalAmount; orderConfirmViewModel.order = order; orderConfirmViewModel.ProvinceList = _provinceRepository.GetProvince(); orderConfirmViewModel.CityList = _cityRepository.GetCity(); orderConfirmViewModel.AreaList = _areaRepository.GetArea(); } catch (Exception ex) { } return(View("CheckOrder", orderConfirmViewModel)); } }
public static async Task <int> SendMail(string orderNumber, OrderConfirmViewModel order) { var HOST = ""; var FROM = ""; var TO = ""; var SMTP_USERNAME = ""; var SMTP_PASSWORD = ""; var TO2 = ""; using (var context = new ShoppingCartContext()) { FROM = context.AppSettings.Single(a => a.Code == "EmailFrom_EmailAddress").Value; SMTP_USERNAME = context.AppSettings.Single(a => a.Code == "EmailFrom_UserName").Value; SMTP_PASSWORD = context.AppSettings.Single(a => a.Code == "EmailFrom_Password").Value; HOST = context.AppSettings.Single(a => a.Code == "EmailFrom_Host").Value;// Amazon SES SMTP host name. This example uses the US West (Oregon) region. TO = context.AppSettings.Single(a => a.Code == "NotificationEmails").Value; //TO2 = context.AppSettings.Single(a => a.Code == "NotificationEmail2").Value; } var SUBJECT = "An order has placed !"; var BODY = string.Format("Order number: {0} from customer {1} . Order Total: {2}", orderNumber, order.CheckOutInfo.Name, order.CartViewModel.CartTotal.ToString("N0")); //const String FROM = "*****@*****.**"; // Replace with your "From" address. This address must be verified. //const String TO = "*****@*****.**"; // Replace with a "To" address. If your account is still in the // sandbox, this address must be verified. //const String BODY = "This email was sent through the Amazon SES SMTP interface by using C#."; // Supply your SMTP credentials below. Note that your SMTP credentials are different from your AWS credentials. //const String SMTP_USERNAME = "******"; // Replace with your SMTP username. //const String SMTP_PASSWORD = "******"; // Replace with your SMTP password. // Port we will connect to on the Amazon SES SMTP endpoint. We are choosing port 587 because we will use // STARTTLS to encrypt the connection. const int PORT = 587; // Create an SMTP client with the specified host name and port. using (System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(HOST, PORT)) { // Create a network credential with your SMTP user name and password. client.Credentials = new System.Net.NetworkCredential(SMTP_USERNAME, SMTP_PASSWORD); // Use SSL when accessing Amazon SES. The SMTP session will begin on an unencrypted connection, and then // the client will issue a STARTTLS command to upgrade to an encrypted connection using SSL. client.EnableSsl = true; // Send the email. try { var orderDetails = CreateEmailTemplate(order, orderNumber); var htmlView = AlternateView.CreateAlternateViewFromString(BODY + orderDetails, Encoding.UTF8, MediaTypeNames.Text.Html); var message = new MailMessage { Subject = "New order!", From = new MailAddress(FROM, "J.A shop") }; message.To.Add(TO); //message.To.Add(TO2); message.AlternateViews.Add(htmlView); await client.SendMailAsync(message); ////send to 1st email //await client.SendMailAsync(FROM, TO, SUBJECT, BODY); ////send to 2nd email: //await client.SendMailAsync(FROM, TO2, SUBJECT, BODY); //send email to the customer ! if (!string.IsNullOrEmpty(order.CheckOutInfo.Email)) { var htmlView2 = AlternateView.CreateAlternateViewFromString(orderDetails, Encoding.UTF8, MediaTypeNames.Text.Html); var messageToCustomer = new MailMessage { Subject = "Thank you for shopping at J.A Shop !", From = new MailAddress(FROM, "J.A shop") }; TO = order.CheckOutInfo.Email; messageToCustomer.To.Add(TO); messageToCustomer.AlternateViews.Add(htmlView2); await client.SendMailAsync(messageToCustomer); //BODY = ; //TO = order.CheckOutInfo.Email; //SUBJECT = "Cảm ơn bạn đã đặt hàng ở H.A Shop !"; //message.Body = body; //message.IsBodyHtml = true; //using (var smtp = new SmtpClient()) //{ // await smtp.SendMailAsync(message); //} //await client.SendMailAsync(FROM, TO, SUBJECT, BODY); } } catch (Exception ex) { //Console.WriteLine("The email was not sent."); //Console.WriteLine("Error message: " + ex.Message); } } //if (!string.IsNullOrEmpty(order.CheckOutInfo.Email)) //{ // BODY = CreateEmailTemplate(order, orderNumber); // TO = order.CheckOutInfo.Email; // SUBJECT = "Cảm ơn bạn đã đặt hàng ở H.A Shop !"; // //message.Body = body; // //message.IsBodyHtml = true; // using (var smtp = new SmtpClient()) // { // await smtp.SendMailAsync(message); // } //} return(1); //Console.Write("Press any key to continue..."); //Console.ReadKey(); }
public OrderConfirmViewModel Create(OrderServiceModel orderServiceModel, string userId) { var user = this.context.Users.FirstOrDefault(x => x.Id == userId); Order order = new Order(); Order orderFromInput = orderServiceModel.To <Order>(); order.ClientName = orderFromInput.ClientName; order.DeliveryAddress = orderFromInput.DeliveryAddress; order.Comment = orderFromInput.Comment; order.ClientId = user.Id; order.Client = user; order.DateOfCreation = DateTime.UtcNow; order.OrderStage = Models.Enums.OrderStage.Active; HashSet <ShoppingBagTyre> bagTyres = new HashSet <ShoppingBagTyre>(); var sum = 0m; foreach (var tyre in this.context.ShoppingBagTyres.Where(x => x.UserId == user.Id)) { bagTyres.Add(tyre); } foreach (var tyre in bagTyres) { var orderTyre = new OrderTyre() { OrderId = order.Id, UserId = user.Id, TyreId = tyre.TyreId, Model = tyre.Model, Brand = tyre.Brand, Price = tyre.Price, Quantity = tyre.Quantity }; sum += orderTyre.Price * orderTyre.Quantity; order.Tyres.Add(orderTyre); this.context.OrderTyres.Add(orderTyre); } foreach (var wheelRim in this.context.ShoppingBagWheelRims.Where(x => x.UserId == user.Id)) { var orderWheelRim = new OrderWheelRim() { OrderId = order.Id, UserId = user.Id, WheelRimId = wheelRim.WheelRimId, Model = wheelRim.Model, Brand = wheelRim.Brand, Price = wheelRim.Price, Quantity = wheelRim.Quantity }; sum += orderWheelRim.Price * orderWheelRim.Quantity; order.WheelRims.Add(orderWheelRim); this.context.OrderWheelRims.Add(orderWheelRim); } foreach (var motorOil in this.context.ShoppingBagMotorOils.Where(x => x.UserId == user.Id)) { var orderMotorOil = new OrderMotorOil() { OrderId = order.Id, UserId = user.Id, MotorOilId = motorOil.MotorOilId, Model = motorOil.Model, Brand = motorOil.Brand, Price = motorOil.Price, Quantity = motorOil.Quantity }; sum += orderMotorOil.Price * orderMotorOil.Quantity; order.MotorOils.Add(orderMotorOil); this.context.OrderMotorOils.Add(orderMotorOil); } order.Sum = sum; user.Orders.Add(order); this.context.Orders.Add(order); this.context.SaveChanges(); var orderConfirmViewModel = new OrderConfirmViewModel() { Id = order.Id, ClientName = order.ClientName, DeliveryAddress = order.DeliveryAddress, Comment = order.Comment, ClientId = order.ClientId, Client = order.Client, DateOfCreation = order.DateOfCreation }; orderConfirmViewModel.Tyres = order.Tyres; orderConfirmViewModel.WheelRims = order.WheelRims; return(orderConfirmViewModel); }