示例#1
0
        /// <summary>
        /// Compiles a receipt of purchase
        /// </summary>
        /// <param name="username">User's username</param>
        /// <returns>Razor view</returns>
        public async Task <IActionResult> Receipt(string username)
        {
            // Get object for view
            Cart cart = await _cart.GetCart(username);

            List <CartItem> items = _cart.GetAllCartItems(cart);

            dynamic Models = new ExpandoObject();

            Models.CartItems = items;

            IEnumerable <Product> allProducts = await _inventory.GetAllProducts();

            Models.AllProducts = allProducts;


            // Receipt email
            StringBuilder sb = new StringBuilder();

            sb.AppendLine("</h2>Your Order:</h2>");

            decimal total = 0;

            foreach (var item in items)
            {
                decimal subTotal = item.Product.Price * item.Quantity;
                sb.AppendLine($"<h4>{item.Product.Name}</h4>");
                sb.AppendLine($"<p>Price: ${item.Product.Price}</p>");
                sb.AppendLine($"<h5>Qty: {item.Quantity}</h5>");
                sb.AppendLine($"<h4>Total: ${subTotal}</h4>");
                total += subTotal;
            }
            sb.AppendLine($"<h4>Grand Total: ${total}</h4>");

            await _email.SendEmailAsync(username, "Order Complete", sb.ToString());

            // Create order
            await _cart.RemoveAllCartItems(cart.ID, items);

            Order order = new Order();

            order.Username = username;
            order.Date     = DateTime.Now;
            order.Total    = total;

            await _cart.CreateOrder(order);

            // return view with expando object
            return(View(Models));
        }
示例#2
0
        public ActionResult AddressAndPayment(FormCollection values)
        {
            var order = new Order();

            TryUpdateModel(order);
            try
            {
                order.Username  = User.Identity.Name;
                order.OrderDate = DateTime.Now;
                //Process the order
                _cartService.CreateOrder(order);
                return(RedirectToAction("Complete", new { id = order.OrderID }));
            }
            catch
            {
                //Invalid - redisplay with errors
                return(View(order));
            }
        }