コード例 #1
0
        public async Task <IActionResult> Summary()
        {
            detailCart = new OrderDetailsCart()
            {
                OrderHeader = new Models.OrderHeader()
            };

            detailCart.OrderHeader.TotalOrder = 0;

            var             claimsIdentity  = (ClaimsIdentity)User.Identity;
            var             claim           = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
            ApplicationUser applicationUser = await _context.ApplicationUser.Where(u => u.Id == claim.Value).FirstOrDefaultAsync();

            var cart = _context.CartItem.Where(c => c.ApplicationUserId == claim.Value);

            if (cart != null)
            {
                detailCart.CartItems = cart.ToList();
            }

            foreach (var list in detailCart.CartItems)
            {
                list.FoodItem = await _context.FoodItem.FirstOrDefaultAsync(m => m.Id == list.FoodItemId);

                detailCart.OrderHeader.TotalOrder = detailCart.OrderHeader.TotalOrder + (list.FoodItem.Price * list.Count);
            }
            detailCart.OrderHeader.TotalOrderOriginal = detailCart.OrderHeader.TotalOrder;
            detailCart.OrderHeader.PickupName         = applicationUser.Name;
            detailCart.OrderHeader.PhoneNumber        = applicationUser.PhoneNumber;
            detailCart.OrderHeader.PickUpTime         = DateTime.Now;


            if (HttpContext.Session.GetString(StaticItems.ssCouponCode) != null)
            {
                detailCart.OrderHeader.CouponCode = HttpContext.Session.GetString(StaticItems.ssCouponCode);
                var couponFromDb = await _context.Coupon.Where(c => c.Name.ToLower() == detailCart.OrderHeader.CouponCode.ToLower()).FirstOrDefaultAsync();

                detailCart.OrderHeader.TotalOrder = StaticItems.DiscountedPrice(couponFromDb, detailCart.OrderHeader.TotalOrderOriginal);
            }


            return(View(detailCart));
        }
コード例 #2
0
        public async Task <IActionResult> Index()
        {
            detailCart = new OrderDetailsCart()
            {
                OrderHeader = new Models.OrderHeader()
            };

            detailCart.OrderHeader.TotalOrder = 0;

            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            var cart = _context.CartItem.Where(c => c.ApplicationUserId == claim.Value);

            if (cart != null)
            {
                detailCart.CartItems = cart.ToList();
            }

            foreach (var list in detailCart.CartItems)
            {
                list.FoodItem = await _context.FoodItem.FirstOrDefaultAsync(m => m.Id == list.FoodItemId);

                detailCart.OrderHeader.TotalOrder = detailCart.OrderHeader.TotalOrder + (list.FoodItem.Price * list.Count);
                list.FoodItem.Description         = list.FoodItem.Description;
                if (list.FoodItem.Description.Length > 100)
                {
                    list.FoodItem.Description = list.FoodItem.Description.Substring(0, 99) + "...";
                }
            }
            detailCart.OrderHeader.TotalOrderOriginal = detailCart.OrderHeader.TotalOrder;
            if (HttpContext.Session.GetString(StaticItems.ssCouponCode) != null)
            {
                detailCart.OrderHeader.CouponCode = HttpContext.Session.GetString(StaticItems.ssCouponCode);
                var couponFromDb = await _context.Coupon.Where(c => c.Name.ToLower() == detailCart.OrderHeader.CouponCode.ToLower()).FirstOrDefaultAsync();

                detailCart.OrderHeader.TotalOrder = StaticItems.DiscountedPrice(couponFromDb, detailCart.OrderHeader.TotalOrderOriginal);
            }


            return(View(detailCart));
        }
コード例 #3
0
        public async Task <IActionResult> SummaryPost(string stripeToken)
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);


            detailCart.CartItems = await _context.CartItem.Where(c => c.ApplicationUserId == claim.Value).ToListAsync();

            detailCart.OrderHeader.PaymentStatus = StaticItems.PaymentStatusPending;
            detailCart.OrderHeader.OrderDate     = DateTime.Now;
            detailCart.OrderHeader.UserId        = claim.Value;
            detailCart.OrderHeader.Status        = StaticItems.PaymentStatusPending;
            detailCart.OrderHeader.PickUpTime    = Convert.ToDateTime(detailCart.OrderHeader.PickUpDate.ToShortDateString() + " " + detailCart.OrderHeader.PickUpTime.ToShortTimeString());

            List <OrderDetails> orderDetailsList = new List <OrderDetails>();

            _context.OrderHeader.Add(detailCart.OrderHeader);
            await _context.SaveChangesAsync();

            detailCart.OrderHeader.TotalOrderOriginal = 0;


            foreach (var item in detailCart.CartItems)
            {
                item.FoodItem = await _context.FoodItem.FirstOrDefaultAsync(m => m.Id == item.FoodItemId);

                OrderDetails orderDetails = new OrderDetails
                {
                    FoodItem    = item.FoodItem,
                    OrderId     = detailCart.OrderHeader.Id,
                    Description = item.FoodItem.Description,
                    Name        = item.FoodItem.Name,
                    Price       = item.FoodItem.Price,
                    Count       = item.Count
                };
                detailCart.OrderHeader.TotalOrderOriginal += orderDetails.Count * orderDetails.Price;
                _context.OrderDetails.Add(orderDetails);
            }

            if (HttpContext.Session.GetString(StaticItems.ssCouponCode) != null)
            {
                detailCart.OrderHeader.CouponCode = HttpContext.Session.GetString(StaticItems.ssCouponCode);
                var couponFromDb = await _context.Coupon.Where(c => c.Name.ToLower() == detailCart.OrderHeader.CouponCode.ToLower()).FirstOrDefaultAsync();

                detailCart.OrderHeader.TotalOrder = StaticItems.DiscountedPrice(couponFromDb, detailCart.OrderHeader.TotalOrderOriginal);
            }
            else
            {
                detailCart.OrderHeader.TotalOrder = detailCart.OrderHeader.TotalOrderOriginal;
            }
            detailCart.OrderHeader.CouponCodeDiscount = detailCart.OrderHeader.TotalOrderOriginal - detailCart.OrderHeader.TotalOrder;

            _context.CartItem.RemoveRange(detailCart.CartItems);
            HttpContext.Session.SetInt32(StaticItems.ssShoppingCartCount, 0);
            await _context.SaveChangesAsync();

            var options = new ChargeCreateOptions
            {
                Amount      = Convert.ToInt32(detailCart.OrderHeader.TotalOrder * 100),
                Currency    = "usd",
                Description = "Order ID : " + detailCart.OrderHeader.Id,
                Source      = stripeToken
            };
            var    service = new ChargeService();
            Charge charge  = service.Create(options);

            if (charge.BalanceTransactionId == null)
            {
                detailCart.OrderHeader.PaymentStatus = StaticItems.PaymentStatusRejected;
            }
            else
            {
                detailCart.OrderHeader.TransactionId = charge.BalanceTransactionId;
            }

            if (charge.Status.ToLower() == "succeeded")
            {
                //Email For Successfull Order
                await _emailSender.SendEmailAsync(_context.Users.Where(u => u.Id == claim.Value).FirstOrDefault().Email, "MyRestaurant -Order Create " + detailCart.OrderHeader.Id.ToString(), "Order Has been Submitted Succesfully");

                detailCart.OrderHeader.PaymentStatus = StaticItems.PaymentStatusApproved;
                detailCart.OrderHeader.Status        = StaticItems.StatusSubmitted;
            }
            else
            {
                detailCart.OrderHeader.PaymentStatus = StaticItems.PaymentStatusRejected;
            }

            await _context.SaveChangesAsync();

            //return RedirectToAction("Index", "Home");
            return(RedirectToAction("Confirm", "Order", new { id = detailCart.OrderHeader.Id }));
        }