示例#1
0
        public async Task <IActionResult> Index()
        {
            CartDetails = new OrderDetailsCart()
            {
                OrderHeader = new Models.OrderHeader()
            };

            CartDetails.OrderHeader.OrderTotal = 0;
            var ClaimIdenttity = (ClaimsIdentity)User.Identity;
            var Claim          = ClaimIdenttity.FindFirst(ClaimTypes.NameIdentifier);

            var cart = await _db.ShoppingCart.Where(c => c.ApplicationUserId == Claim.Value).ToListAsync();

            if (cart != null)
            {
                CartDetails.ListCart = cart;
            }

            foreach (var item in CartDetails.ListCart)
            {
                //MenuItem Details from DB
                item.MenuItem = await _db.MenuItem.Where(x => x.Id == item.MenuItemId).FirstOrDefaultAsync();

                //Calculating OrderTotal
                CartDetails.OrderHeader.OrderTotal += (item.MenuItem.Price * item.Count);
                item.MenuItem.Description           = StaticDetails.ConvertToRawHtml(item.MenuItem.Description);
                //Only shows 100 character Descriptiom
                if (item.MenuItem.Description.Count() > 100)
                {
                    item.MenuItem.Description = item.MenuItem.Description.Substring(0, 99) + "...";
                }
            }

            //Storing Original Order Total Before Applying coupon

            CartDetails.OrderHeader.OrderTotalOriginal = CartDetails.OrderHeader.OrderTotal;

            if (HttpContext.Session.GetString(StaticDetails.CouponCodeSession) != null)
            {
                CartDetails.OrderHeader.CouponCode = HttpContext.Session.GetString(StaticDetails.CouponCodeSession);
                var coupon = await _db.Coupon.Where(c => c.Name.ToUpper() == CartDetails.OrderHeader.CouponCode.ToUpper()).FirstOrDefaultAsync();

                CartDetails.OrderHeader.OrderTotal = StaticDetails.DiscountedPrice(coupon, CartDetails.OrderHeader.OrderTotalOriginal);
            }
            return(View(CartDetails));
        }
示例#2
0
        public async Task <IActionResult> OrderSummery()
        {
            CartDetails = new OrderDetailsCart()
            {
                OrderHeader = new Models.OrderHeader()
            };

            CartDetails.OrderHeader.OrderTotal = 0;
            var ClaimIdenttity = (ClaimsIdentity)User.Identity;
            var Claim          = ClaimIdenttity.FindFirst(ClaimTypes.NameIdentifier);

            ApplicationUser applicationUser = await _db.ApplicationUser.Where(u => u.Id == Claim.Value).FirstOrDefaultAsync();

            var cart = await _db.ShoppingCart.Where(c => c.ApplicationUserId == Claim.Value).ToListAsync();

            if (cart != null)
            {
                CartDetails.ListCart = cart;
            }

            foreach (var item in CartDetails.ListCart)
            {
                //MenuItem Details from DB
                item.MenuItem = await _db.MenuItem.Where(x => x.Id == item.MenuItemId).FirstOrDefaultAsync();

                //Calculating OrderTotal
                CartDetails.OrderHeader.OrderTotal += (item.MenuItem.Price * item.Count);
            }

            //Storing Original Order Total Before Applying coupon

            CartDetails.OrderHeader.OrderTotalOriginal = CartDetails.OrderHeader.OrderTotal;
            CartDetails.OrderHeader.PickUpName         = applicationUser.Name;
            CartDetails.OrderHeader.PhoneNumber        = applicationUser.PhoneNumber;
            CartDetails.OrderHeader.PickUpTime         = DateTime.Now;

            //retrive coupon form session
            if (HttpContext.Session.GetString(StaticDetails.CouponCodeSession) != null)
            {
                CartDetails.OrderHeader.CouponCode = HttpContext.Session.GetString(StaticDetails.CouponCodeSession);
                var coupon = await _db.Coupon.Where(c => c.Name.ToUpper() == CartDetails.OrderHeader.CouponCode.ToUpper()).FirstOrDefaultAsync();

                CartDetails.OrderHeader.OrderTotal = StaticDetails.DiscountedPrice(coupon, CartDetails.OrderHeader.OrderTotalOriginal);
            }
            return(View(CartDetails));
        }
示例#3
0
        public async Task <IActionResult> OrderSummeryPost(string stripeToken)
        {
            var ClaimIdenttity = (ClaimsIdentity)User.Identity;
            var Claim          = ClaimIdenttity.FindFirst(ClaimTypes.NameIdentifier);

            CartDetails.ListCart = await _db.ShoppingCart.Where(c => c.ApplicationUserId == Claim.Value).ToListAsync();

            CartDetails.OrderHeader.PaymentStatus = StaticDetails.PaymentStatusPending;
            CartDetails.OrderHeader.OrderDate     = DateTime.Now;
            CartDetails.OrderHeader.UserId        = Claim.Value;
            CartDetails.OrderHeader.Status        = StaticDetails.PaymentStatusPending;
            CartDetails.OrderHeader.PickUpDate    = Convert.ToDateTime(CartDetails.OrderHeader.PickUpDate.ToShortDateString() + " " + CartDetails.OrderHeader.PickUpTime.ToShortTimeString());

            await _db.OrderHeader.AddAsync(CartDetails.OrderHeader);

            await _db.SaveChangesAsync();

            //OrderDetails List
            List <OrderDetails> OrderDetailsList = new List <OrderDetails>();



            ApplicationUser applicationUser = await _db.ApplicationUser.Where(u => u.Id == Claim.Value).FirstOrDefaultAsync();

            CartDetails.OrderHeader.OrderTotalOriginal = 0;
            foreach (var item in CartDetails.ListCart)
            {
                //MenuItem Details from DB
                item.MenuItem = await _db.MenuItem.Where(x => x.Id == item.MenuItemId).FirstOrDefaultAsync();

                //Calculating OrderTotal
                CartDetails.OrderHeader.OrderTotal += (item.MenuItem.Price * item.Count);
                OrderDetails orderDetails = new OrderDetails()
                {
                    MenuItemId  = item.MenuItem.Id,
                    OrderId     = CartDetails.OrderHeader.Id,
                    Description = item.MenuItem.Description,
                    Name        = item.MenuItem.Name,
                    Price       = item.MenuItem.Price,
                    Count       = item.Count
                };
                CartDetails.OrderHeader.OrderTotalOriginal += (item.MenuItem.Price * item.Count);
                _db.OrderDetails.Add(orderDetails);
            }

            //Calculate OrderTotal
            //retrive coupon form session
            if (HttpContext.Session.GetString(StaticDetails.CouponCodeSession) != null)
            {
                CartDetails.OrderHeader.CouponCode = HttpContext.Session.GetString(StaticDetails.CouponCodeSession);
                var coupon = await _db.Coupon.Where(c => c.Name.ToUpper() == CartDetails.OrderHeader.CouponCode.ToUpper()).FirstOrDefaultAsync();

                CartDetails.OrderHeader.OrderTotal = StaticDetails.DiscountedPrice(coupon, CartDetails.OrderHeader.OrderTotalOriginal);
            }
            else
            {
                CartDetails.OrderHeader.OrderTotal = CartDetails.OrderHeader.OrderTotalOriginal;
            }

            //Calculate Discount
            CartDetails.OrderHeader.CouponCodeDiscount = CartDetails.OrderHeader.OrderTotalOriginal - CartDetails.OrderHeader.OrderTotal;
            await _db.SaveChangesAsync();

            _db.ShoppingCart.RemoveRange(CartDetails.ListCart);
            HttpContext.Session.SetInt32(StaticDetails.ShoppingCartSession, 0);

            //var customerOptions = new CustomerCreateOptions
            //{
            //    Name = "Jenny Rosen",
            //    Address = new AddressOptions
            //    {
            //        Line1 = "510 Townsend St",
            //        PostalCode = "98140",
            //        City = "San Francisco",
            //        State = "CA",
            //        Country = "US",
            //    },
            //};
            //var customerService = new CustomerService();
            //var customer = customerService.Create(customerOptions);
            try
            {
                var options = new ChargeCreateOptions
                {
                    Amount      = Convert.ToInt32(CartDetails.OrderHeader.OrderTotal * 100),
                    Currency    = "usd",
                    Description = "Order ID : " + CartDetails.OrderHeader.Id,
                    Source      = stripeToken,
                };
                var    service = new ChargeService();
                Charge charge  = service.Create(options);

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

                if (charge.Status.ToLower() == "succeeded")
                {
                    //send email for successfull order
                    var email   = _db.Users.Where(u => u.Id == Claim.Value).FirstOrDefault().Email;
                    var subject = "Spice-Order Created,Order ID:" + CartDetails.OrderHeader.Id;
                    var message = "Order Created successfully.";

                    await _emailSender.SendEmailAsync(email, subject, message);

                    CartDetails.OrderHeader.PaymentStatus = StaticDetails.PaymentStatusApproved;
                    CartDetails.OrderHeader.Status        = StaticDetails.StatusSubmitted;
                }
                else
                {
                    CartDetails.OrderHeader.PaymentStatus = StaticDetails.PaymentStatusRejected;
                }
                await _db.SaveChangesAsync();
            }
            catch (Exception e)
            {
                CartDetails.OrderHeader.PaymentStatus = StaticDetails.PaymentStatusRejected;
                CartDetails.OrderHeader.Status        = StaticDetails.PaymentStatusPending;
                await _db.SaveChangesAsync();
            }

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