public IActionResult Index()
        {
            OrderDetailsCartVM = new OrderDetailsCartViewModel()
            {
                OrderHeader = new Models.OrderHeader()
            };

            OrderDetailsCartVM.OrderHeader.OrderTotal = 0;

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

            var shoppingCarts = db.shoppingCarts.Where(m => m.ApplicationUserId == claim.Value);

            if (shoppingCarts != null)
            {
                OrderDetailsCartVM.ShoppingCartsList = shoppingCarts.ToList();
            }

            foreach (var item in OrderDetailsCartVM.ShoppingCartsList)
            {
                item.MenuItem = db.MenuItems.FirstOrDefault(m => m.Id == item.MenuItemId);
                OrderDetailsCartVM.OrderHeader.OrderTotal += item.MenuItem.Price * item.Count;
            }

            OrderDetailsCartVM.OrderHeader.OrderTotalOrginal = OrderDetailsCartVM.OrderHeader.OrderTotal;
            if (HttpContext.Session.GetString(SD.ssCouponCode) != null)
            {
                OrderDetailsCartVM.OrderHeader.CouponCode = HttpContext.Session.GetString(SD.ssCouponCode);
                var couponFromDb = db.Coupons.Where(m => m.Name.ToLower() == OrderDetailsCartVM.OrderHeader.CouponCode.ToLower()).FirstOrDefault();
                OrderDetailsCartVM.OrderHeader.OrderTotal = SD.DiscountPrice(couponFromDb, OrderDetailsCartVM.OrderHeader.OrderTotalOrginal);
            }

            return(View(OrderDetailsCartVM));
        }
Пример #2
0
        public async Task <IActionResult> SummaryPost()
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            detailCart.listCart = await _db.shoppingCarts.Where(c => c.ApplicationUserId == claim.Value).ToListAsync();

            detailCart.OrderHeader.PaymentStatus = SD.PaymentStatusPending;
            detailCart.OrderHeader.OrderDate     = DateTime.Now;
            detailCart.OrderHeader.UserId        = claim.Value;
            detailCart.OrderHeader.State         = SD.PaymentStatusPending;
            detailCart.OrderHeader.PickUpTime    = DateTime.Now.AddHours(2);


            List <OrderDetail> orderDetailList = new List <OrderDetail>();

            _db.OrderHeaders.Add(detailCart.OrderHeader);
            await _db.SaveChangesAsync();

            detailCart.OrderHeader.OrderTotalOriginal = 0;

            foreach (var item in detailCart.listCart)
            {
                item.MenuItem = await _db.MenuItems.FirstOrDefaultAsync(m => m.Id == item.MenuItemId);

                OrderDetail orderDetails = new OrderDetail()
                {
                    MenuItemId  = item.MenuItemId,
                    OrderId     = detailCart.OrderHeader.Id,
                    Description = item.MenuItem.Description,
                    Price       = item.MenuItem.Price,
                    Count       = item.Count
                };
                detailCart.OrderHeader.OrderTotalOriginal += orderDetails.Count * orderDetails.Price;
                _db.OrderDetails.Add(orderDetails);
            }

            if (HttpContext.Session.GetString(SD.ssCouponCode) != null)
            {
                detailCart.OrderHeader.CouponCode = HttpContext.Session.GetString(SD.ssCouponCode);
                var couponFromDb = await _db.Coupons.Where(c => c.Name == detailCart.OrderHeader.CouponCode).FirstOrDefaultAsync();

                detailCart.OrderHeader.OrderTotal = SD.DiscountPrice(couponFromDb, detailCart.OrderHeader.OrderTotalOriginal);
            }
            else
            {
                detailCart.OrderHeader.OrderTotal = detailCart.OrderHeader.OrderTotalOriginal;
            }
            detailCart.OrderHeader.CouponDiscount = detailCart.OrderHeader.OrderTotalOriginal - detailCart.OrderHeader.OrderTotal;

            _db.shoppingCarts.RemoveRange(detailCart.listCart);
            HttpContext.Session.SetInt32(SD.ssShopingCartCount, 0);

            await _db.SaveChangesAsync();

            return(RedirectToAction("Index", "Home"));
        }
Пример #3
0
        public IActionResult Summary()
        {
            CartDetail = new OrderHeaderShoppingCartViewModel
            {
                OrderHeader = new Models.OrderHeader()
            };
            //Get USer Id :
            var claimIdentity = (ClaimsIdentity)User.Identity;
            var claim         = claimIdentity.FindFirst(ClaimTypes.NameIdentifier);
            var userId        = claim.Value;

            //Get User Info :
            var appUser = db.ApplicationUser.SingleOrDefault(x => x.Id == userId);

            CartDetail.OrderHeader.PickUpName  = appUser.NameOfUser;
            CartDetail.OrderHeader.PhoneNumber = appUser.PhoneNumber;
            CartDetail.OrderHeader.PickUpDate  = DateTime.Now;



            var shoppingCarts = db.ShoppingCarts.Where(x => x.ApplicationUserId == userId);

            if (shoppingCarts != null)
            {
                CartDetail.ShoppingCarts = shoppingCarts.ToList();
            }

            foreach (var item in CartDetail.ShoppingCarts)
            {
                item.MenuItem = db.MenuItems.FirstOrDefault(x => x.Id == item.MenuItemId);

                var orderTotal = item.MenuItem.Price * item.Count;
                CartDetail.OrderHeader.OrderTotal += orderTotal;
            }

            CartDetail.OrderHeader.OrderTotalOriginal = CartDetail.OrderHeader.OrderTotal;

            if (HttpContext.Session.GetString(SD.ssCouponCode) != null)
            {
                CartDetail.OrderHeader.CouponCode = HttpContext.Session.GetString(SD.ssCouponCode);
                var couponInDb = db.Coupons.SingleOrDefault(x => x.Name.ToLower() == CartDetail.OrderHeader.CouponCode.ToLower());

                CartDetail.OrderHeader.OrderTotal = SD.DiscountPrice(couponInDb, CartDetail.OrderHeader.OrderTotalOriginal);
            }

            return(View(CartDetail));
        }
Пример #4
0
        public async Task <IActionResult> Index()
        {
            DetailsCart = new OrderDetailsCart()
            {
                orderHeader = new OrderHeader()
            };

            DetailsCart.orderHeader.OrderTotal = 0;

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

            var cart = _db.ShoppingCart.Where(c => c.ApplicationUserId == claim.Value);

            if (cart != null)
            {
                DetailsCart.listCart = cart.ToList();
            }

            foreach (var list in DetailsCart.listCart)
            {
                list.MenuItem = await _db.MenuItem.FirstOrDefaultAsync(m => m.id == list.MenuItemId);

                DetailsCart.orderHeader.OrderTotal = DetailsCart.orderHeader.OrderTotal + (list.MenuItem.Price * list.Count);
                list.MenuItem.Description          = SD.ConvertToRawHtml(list.MenuItem.Description);

                if (list.MenuItem.Description.Length > 100)
                {
                    list.MenuItem.Description = list.MenuItem.Description.Substring(0, 99) + "...";
                }
            }

            DetailsCart.orderHeader.OrderTotalOriginal = DetailsCart.orderHeader.OrderTotal;

            if (HttpContext.Session.GetString(SD.ssCouponCode) != null)
            {
                DetailsCart.orderHeader.CouponCode = HttpContext.Session.GetString(SD.ssCouponCode);
                var couponFromDb = await _db.Coupon.Where(c => c.Name.ToLower() == DetailsCart.orderHeader.CouponCode.ToLower()).FirstOrDefaultAsync();

                DetailsCart.orderHeader.OrderTotal = SD.DiscountPrice(couponFromDb, DetailsCart.orderHeader.OrderTotalOriginal);
            }

            return(View(DetailsCart));
        }
Пример #5
0
        public async Task <IActionResult> Summary()
        {
            detailCart = new OrderDetailsCart()
            {
                OrderHeader = new Models.OrderHeader()
            };

            detailCart.OrderHeader.OrderTotal = 0;

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

            ApplicationUser applicationUser = await _db.ApplicationUsers.Where(c => c.Id == claim.Value).FirstOrDefaultAsync();

            var cart = _db.shoppingCarts.Where(c => c.ApplicationUserId == claim.Value);

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

            foreach (var list in detailCart.listCart)
            {
                list.MenuItem = await _db.MenuItems.FirstOrDefaultAsync(woak => woak.Id == list.MenuItemId);

                detailCart.OrderHeader.OrderTotal = detailCart.OrderHeader.OrderTotal + (list.MenuItem.Price * list.Count);
            }

            detailCart.OrderHeader.OrderTotalOriginal = detailCart.OrderHeader.OrderTotal;
            detailCart.OrderHeader.PickupName         = applicationUser.Name;
            detailCart.OrderHeader.PhoneNumber        = applicationUser.PhoneNumber;
            detailCart.OrderHeader.PickUpTime         = DateTime.Now;

            if (HttpContext.Session.GetString(SD.ssCouponCode) != null)
            {
                detailCart.OrderHeader.CouponCode = HttpContext.Session.GetString(SD.ssCouponCode);
                var couponDb = await _db.Coupons.Where(c => c.Name == detailCart.OrderHeader.CouponCode).FirstOrDefaultAsync();

                detailCart.OrderHeader.OrderTotal = SD.DiscountPrice(couponDb, detailCart.OrderHeader.OrderTotalOriginal);
            }

            return(View(detailCart));
        }
Пример #6
0
        public async Task <IActionResult> Index()
        {
            detailCart = new OrderDetailsCart()
            {
                OrderHeader = new Models.OrderHeader()
            };
            detailCart.OrderHeader.OrderTotal = 0;

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

            var cart = _db.shoppingCarts.Where(c => c.ApplicationUserId == claim.Value);

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

            foreach (var list in detailCart.listCart)
            {
                list.MenuItem = await _db.MenuItems.FirstOrDefaultAsync(woak => woak.Id == list.MenuItemId);

                detailCart.OrderHeader.OrderTotal = detailCart.OrderHeader.OrderTotal + (list.MenuItem.Price * list.Count);

                if (list.MenuItem.Description.Length > 100)
                {
                    list.MenuItem.Description = list.MenuItem.Description.Substring(0, 99) + "...";
                }
            }

            detailCart.OrderHeader.OrderTotalOriginal = detailCart.OrderHeader.OrderTotal;

            if (HttpContext.Session.GetString(SD.ssCouponCode) != null)
            {
                detailCart.OrderHeader.CouponCode = HttpContext.Session.GetString(SD.ssCouponCode);
                var couponDb = await _db.Coupons.Where(c => c.Name == detailCart.OrderHeader.CouponCode).FirstOrDefaultAsync();

                detailCart.OrderHeader.OrderTotal = SD.DiscountPrice(couponDb, detailCart.OrderHeader.OrderTotalOriginal);
            }

            return(View(detailCart));
        }
Пример #7
0
        public async Task <IActionResult> Summary()
        {
            DetailsCart = new OrderDetailsCart()
            {
                orderHeader = new OrderHeader()
            };

            DetailsCart.orderHeader.OrderTotal = 0;

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

            var cart = _db.ShoppingCart.Where(c => c.ApplicationUserId == claim.Value);

            if (cart != null)
            {
                DetailsCart.listCart = cart.ToList();
            }

            foreach (var list in DetailsCart.listCart)
            {
                list.MenuItem = await _db.MenuItem.FirstOrDefaultAsync(m => m.id == list.MenuItemId);

                DetailsCart.orderHeader.OrderTotal = DetailsCart.orderHeader.OrderTotal + (list.MenuItem.Price * list.Count);
            }

            DetailsCart.orderHeader.OrderTotalOriginal = DetailsCart.orderHeader.OrderTotal;
            DetailsCart.orderHeader.PickupName         = applicationUser.Name;
            DetailsCart.orderHeader.PhoneNumber        = applicationUser.PhoneNumber;
            DetailsCart.orderHeader.PickUpTime         = DateTime.Now;

            if (HttpContext.Session.GetString(SD.ssCouponCode) != null)
            {
                DetailsCart.orderHeader.CouponCode = HttpContext.Session.GetString(SD.ssCouponCode);
                var couponFromDb = await _db.Coupon.Where(c => c.Name.ToLower() == DetailsCart.orderHeader.CouponCode.ToLower()).FirstOrDefaultAsync();

                DetailsCart.orderHeader.OrderTotal = SD.DiscountPrice(couponFromDb, DetailsCart.orderHeader.OrderTotalOriginal);
            }
            return(View(DetailsCart));
        }
Пример #8
0
        public IActionResult Index()
        {
            CartDetail = new OrderHeaderShoppingCartViewModel
            {
                OrderHeader = new Models.OrderHeader()
            };
            //Get USer Id :
            var claimIdentity = (ClaimsIdentity)User.Identity;
            var claim         = claimIdentity.FindFirst(ClaimTypes.NameIdentifier);
            var userId        = claim.Value;


            var shoppingCarts = db.ShoppingCarts.Where(x => x.ApplicationUserId == userId);

            if (shoppingCarts != null)
            {
                CartDetail.ShoppingCarts = shoppingCarts.ToList();
            }

            foreach (var item in CartDetail.ShoppingCarts)
            {
                item.MenuItem = db.MenuItems.FirstOrDefault(x => x.Id == item.MenuItemId);

                var orderTotal = item.MenuItem.Price * item.Count;
                CartDetail.OrderHeader.OrderTotal += orderTotal;

                item.MenuItem.Description = SD.ConvertToRawHtml(item.MenuItem.Description);
            }

            CartDetail.OrderHeader.OrderTotalOriginal = CartDetail.OrderHeader.OrderTotal;

            if (HttpContext.Session.GetString(SD.ssCouponCode) != null)
            {
                CartDetail.OrderHeader.CouponCode = HttpContext.Session.GetString(SD.ssCouponCode);
                var couponInDb = db.Coupons.SingleOrDefault(x => x.Name.ToLower() == CartDetail.OrderHeader.CouponCode.ToLower());

                CartDetail.OrderHeader.OrderTotal = SD.DiscountPrice(couponInDb, CartDetail.OrderHeader.OrderTotalOriginal);
            }

            return(View(CartDetail));
            ////Get Current User Id:
            //var claimsIdentity = (ClaimsIdentity)User.Identity;
            //var claims = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
            //var userId = claims.Value;
            //OrderHeaderShoppingCartViewModel vm = new OrderHeaderShoppingCartViewModel
            //{
            //    OrderHeader = new Models.OrderHeader()
            //};
            //var shoppingCart = db.ShoppingCarts.Where(x => x.ApplicationUserId == userId).ToList();
            //if (shoppingCart != null)
            //{
            //    vm.ShoppingCarts = shoppingCart;
            //    vm.OrderHeader.OrderTotal = 0;

            //    foreach (var item in shoppingCart)
            //    {
            //        item.MenuItem = db.MenuItems.SingleOrDefault(x => x.Id == item.MenuItemId);

            //        vm.OrderHeader.OrderTotal = item.Count * item.MenuItem.Price;
            //    }
            //    vm.OrderHeader.OrderTotalOriginal = vm.OrderHeader.OrderTotal;
            //}
            //return View(vm);
        }
Пример #9
0
        public IActionResult SummaryPost(string stripeToken)
        {
            //Get USer Id :
            var claimIdentity = (ClaimsIdentity)User.Identity;
            var claim         = claimIdentity.FindFirst(ClaimTypes.NameIdentifier);
            var userId        = claim.Value;

            //Get User Info :
            //var appUser = db.ApplicationUser.SingleOrDefault(x => x.Id == userId);

            CartDetail.OrderHeader.UserId     = userId;
            CartDetail.OrderHeader.OrderDate  = DateTime.Now;
            CartDetail.OrderHeader.PickUpTime = Convert.ToDateTime(CartDetail.OrderHeader.OrderDate.ToShortDateString() + " " +
                                                                   CartDetail.OrderHeader.PickUpTime.ToShortTimeString());
            CartDetail.OrderHeader.Status        = SD.PaymentStatusPending;
            CartDetail.OrderHeader.PaymentStatus = SD.PaymentStatusPending;

            db.OrderHeaders.Add(CartDetail.OrderHeader);
            db.SaveChanges();


            CartDetail.ShoppingCarts = db.ShoppingCarts.Where(x => x.ApplicationUserId == userId).ToList();


            foreach (var item in CartDetail.ShoppingCarts)
            {
                item.MenuItem = db.MenuItems.FirstOrDefault(x => x.Id == item.MenuItemId);

                OrderDetails orderDetails = new OrderDetails {
                    MenuItemId  = item.MenuItemId,
                    OrderId     = CartDetail.OrderHeader.Id,
                    Count       = item.Count,
                    Name        = item.MenuItem.Name,
                    Description = item.MenuItem.Description,
                    Price       = item.MenuItem.Price
                };
                var orderTotal = item.MenuItem.Price * item.Count;
                CartDetail.OrderHeader.OrderTotalOriginal += orderTotal;

                db.OrderDetails.Add(orderDetails);
                db.SaveChanges();
            }

            CartDetail.OrderHeader.OrderTotalOriginal += CartDetail.OrderHeader.OrderTotal;

            if (HttpContext.Session.GetString(SD.ssCouponCode) != null)
            {
                CartDetail.OrderHeader.CouponCode = HttpContext.Session.GetString(SD.ssCouponCode);
                var couponInDb = db.Coupons.SingleOrDefault(x => x.Name.ToLower() == CartDetail.OrderHeader.CouponCode.ToLower());

                CartDetail.OrderHeader.OrderTotal = SD.DiscountPrice(couponInDb, CartDetail.OrderHeader.OrderTotalOriginal);
            }
            else
            {
                CartDetail.OrderHeader.OrderTotal = CartDetail.OrderHeader.OrderTotalOriginal;
            }
            CartDetail.OrderHeader.CouponCodeDiscount = Math.Round(CartDetail.OrderHeader.OrderTotalOriginal - CartDetail.OrderHeader.OrderTotal, 2);
            db.ShoppingCarts.RemoveRange(CartDetail.ShoppingCarts);
            HttpContext.Session.SetInt32(SD.ShoppingCartCount, 0);
            //Stripe Config:
            var options = new ChargeCreateOptions
            {
                Amount      = Convert.ToInt32(CartDetail.OrderHeader.OrderTotal * 100),
                Currency    = "usd",
                Description = "Order ID : " + CartDetail.OrderHeader.Id,
                Source      = stripeToken
            };
            var    service = new ChargeService();
            Charge charge  = service.Create(options);

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

            if (charge.Status.ToLower() == "succeeded")
            {
                CartDetail.OrderHeader.PaymentStatus = SD.PaymentStatusApproved;
                CartDetail.OrderHeader.Status        = SD.StatusSubmitted;
            }
            else
            {
                CartDetail.OrderHeader.PaymentStatus = SD.PaymentStatusRejected;
            }
            db.SaveChanges();
            return(RedirectToAction(nameof(Index)));
        }
Пример #10
0
        public async Task <IActionResult> SummaryPost(string stripeToken)
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            DetailsCart.listCart = await _db.ShoppingCart.Where(c => c.ApplicationUserId == claim.Value).ToListAsync();

            DetailsCart.OrderHeader.PaymentStatus = SD.PaymentStatusPending;
            DetailsCart.OrderHeader.OrderDate     = DateTime.Now;
            DetailsCart.OrderHeader.UserID        = claim.Value;
            DetailsCart.OrderHeader.Status        = SD.PaymentStatusPending;
            DetailsCart.OrderHeader.PickupTime    = Convert.ToDateTime(DetailsCart.OrderHeader.PickupDate.ToShortDateString() + " " + DetailsCart.OrderHeader.PickupTime.ToShortTimeString());

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

            _db.OrderHeader.Add(DetailsCart.OrderHeader);
            await _db.SaveChangesAsync();

            DetailsCart.OrderHeader.OrderTotalOriginal = 0;

            foreach (var item in DetailsCart.listCart)
            {
                item.MenuItem = await _db.MenuItem.FirstOrDefaultAsync(m => m.Id == item.MenuItemId);

                OrderDetail orderDetail = new OrderDetail()
                {
                    MenuItemId  = item.MenuItemId,
                    OrderId     = DetailsCart.OrderHeader.Id,
                    Description = item.MenuItem.Description,
                    Name        = item.MenuItem.Name,
                    Price       = item.MenuItem.Price,
                    Count       = item.Count
                };
                DetailsCart.OrderHeader.OrderTotalOriginal += orderDetail.Count * orderDetail.Price;
                _db.OrderDetail.Add(orderDetail);
            }

            if (HttpContext.Session.GetString(SD.CouponCode) != null)
            {
                DetailsCart.OrderHeader.CouponCode = HttpContext.Session.GetString(SD.CouponCode);
                var couponFromDb = await _db.Coupon.Where(c => c.Name.ToLower() == DetailsCart.OrderHeader.CouponCode.ToLower()).FirstOrDefaultAsync();

                DetailsCart.OrderHeader.OrderTotal = SD.DiscountPrice(couponFromDb, DetailsCart.OrderHeader.OrderTotalOriginal);
            }
            else
            {
                DetailsCart.OrderHeader.OrderTotal = DetailsCart.OrderHeader.OrderTotalOriginal;
            }

            DetailsCart.OrderHeader.CouponCodeDiscount = DetailsCart.OrderHeader.OrderTotalOriginal - DetailsCart.OrderHeader.OrderTotal;
            await _db.SaveChangesAsync();

            _db.ShoppingCart.RemoveRange(DetailsCart.listCart);
            HttpContext.Session.SetInt32(SD.ShoppingCartCount, 0);
            await _db.SaveChangesAsync();

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

            if (charge.BalanceTransactionId == null)
            {
                DetailsCart.OrderHeader.Status = SD.PaymentStatusRejected;
            }
            else
            {
                DetailsCart.OrderHeader.TransactionId = charge.BalanceTransactionId;
            }
            if (charge.Status.ToLower() == "succeeded")
            {
                await _emailSender.SendEmailAsync(_db.Users.Where(u => u.Id == claim.Value).FirstOrDefault().Email, "Spice -Order Created" + DetailsCart.OrderHeader.Id.ToString(), "Order as been submitted successfully");

                DetailsCart.OrderHeader.PaymentStatus = SD.PaymentStatusApproved;
                DetailsCart.OrderHeader.Status        = SD.StatusSubmitted;
            }
            else
            {
                DetailsCart.OrderHeader.Status = SD.PaymentStatusRejected;
            }
            await _db.SaveChangesAsync();

            //return RedirectToAction("Index","Home");
            return(RedirectToAction("Confirm", "Order", new { id = DetailsCart.OrderHeader.Id }));
        }
        public async Task <IActionResult> SummaryPost(string stripeToken)
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);



            OrderDetailsCartVM.ShoppingCartsList = await db.shoppingCarts.Where(m => m.ApplicationUserId == claim.Value).ToListAsync();

            OrderDetailsCartVM.OrderHeader.PaymentStatus = SD.PaymentStatusPending;
            OrderDetailsCartVM.OrderHeader.OrderDate     = DateTime.Now;
            OrderDetailsCartVM.OrderHeader.UserId        = claim.Value;
            OrderDetailsCartVM.OrderHeader.Status        = SD.PaymentStatusPending;
            OrderDetailsCartVM.OrderHeader.PickUpTime    = Convert.ToDateTime(OrderDetailsCartVM.OrderHeader.PickUpDate.ToShortDateString() + " " +
                                                                              OrderDetailsCartVM.OrderHeader.PickUpTime.ToShortTimeString());
            OrderDetailsCartVM.OrderHeader.OrderTotalOrginal = 0;

            db.OrderHeaders.Add(OrderDetailsCartVM.OrderHeader);
            await db.SaveChangesAsync();


            foreach (var item in OrderDetailsCartVM.ShoppingCartsList)
            {
                item.MenuItem = db.MenuItems.FirstOrDefault(m => m.Id == item.MenuItemId);

                OrderDetail orderDetail = new OrderDetail()
                {
                    MenuItemId  = item.MenuItemId,
                    OrderId     = OrderDetailsCartVM.OrderHeader.Id,
                    Description = item.MenuItem.Discription,
                    Name        = item.MenuItem.Name,
                    Price       = item.MenuItem.Price,
                    Count       = item.Count
                };

                OrderDetailsCartVM.OrderHeader.OrderTotal += item.MenuItem.Price * item.Count;
                db.OrderDetails.Add(orderDetail);
            }


            if (HttpContext.Session.GetString(SD.ssCouponCode) != null)
            {
                OrderDetailsCartVM.OrderHeader.CouponCode = HttpContext.Session.GetString(SD.ssCouponCode);
                var couponFromDb = db.Coupons.Where(m => m.Name.ToLower() == OrderDetailsCartVM.OrderHeader.CouponCode.ToLower()).FirstOrDefault();
                OrderDetailsCartVM.OrderHeader.OrderTotal = SD.DiscountPrice(couponFromDb, OrderDetailsCartVM.OrderHeader.OrderTotalOrginal);
            }
            else
            {
                OrderDetailsCartVM.OrderHeader.OrderTotal = OrderDetailsCartVM.OrderHeader.OrderTotalOrginal;
            }

            OrderDetailsCartVM.OrderHeader.CouponCodeDiscount = OrderDetailsCartVM.OrderHeader.OrderTotalOrginal - OrderDetailsCartVM.OrderHeader.OrderTotal;

            db.shoppingCarts.RemoveRange(OrderDetailsCartVM.ShoppingCartsList);
            HttpContext.Session.SetInt32(SD.ShoppingCartCount, 0);
            await db.SaveChangesAsync();



            //online odeme icin
            var options = new Stripe.ChargeCreateOptions
            {
                Amount      = Convert.ToInt32(OrderDetailsCartVM.OrderHeader.OrderTotal * 100),
                Currency    = "usd",
                Description = "Order ID : " + OrderDetailsCartVM.OrderHeader.Id,
                Source      = stripeToken
            };
            var    service = new ChargeService();
            Charge charge  = service.Create(options);

            if (charge.BalanceTransactionId == null)
            {
                OrderDetailsCartVM.OrderHeader.PaymentStatus = SD.PaymentStatusRejected;
            }
            else
            {
                OrderDetailsCartVM.OrderHeader.TrasactionId = charge.BalanceTransactionId;
            }
            if (charge.Status.ToLower() == "succeeded")
            {
                OrderDetailsCartVM.OrderHeader.PaymentStatus = SD.PaymentStatusApproved;
                OrderDetailsCartVM.OrderHeader.Status        = SD.StatusSubmitted;
            }
            else
            {
                OrderDetailsCartVM.OrderHeader.PaymentStatus = SD.PaymentStatusRejected;
            }
            await db.SaveChangesAsync();


            return(RedirectToAction("Index", "Home"));
        }