Example #1
0
 public IActionResult Checkout(InputOrderModel newOrder)
 {
     ViewBag.TotalPrice = _accountService.GetTotalForCart(_userManager.GetUserId(User));
     ViewBag.Title      = "Karfa";
     if (ModelState.IsValid)
     {
         _accountService.saveInputOrder(newOrder, _userManager.GetUserId(User));
         return(RedirectToAction("Confirmation"));
     }
     return(View(newOrder));
 }
Example #2
0
        public async Task <IActionResult> Checkout()
        {
            ViewBag.Title      = "Greiðslusíða";
            ViewBag.TotalPrice = _accountService.GetTotalForCart(_userManager.GetUserId(User));
            var orderModel         = new InputOrderModel();
            var shippingInfoFromDb = _accountService.GetShippingInfo(_userManager.GetUserId(User));
            var user = await _userManager.GetUserAsync(User);

            if (shippingInfoFromDb != null)
            {
                orderModel.Name          = user.FirstName;
                orderModel.Email         = user.Email;
                orderModel.Street        = shippingInfoFromDb.Street;
                orderModel.Street        = shippingInfoFromDb.Street;
                orderModel.City          = shippingInfoFromDb.City;
                orderModel.PostalCode    = shippingInfoFromDb.PostalCode;
                orderModel.Country       = shippingInfoFromDb.Country;
                orderModel.SendingMethod = shippingInfoFromDb.SendingMethod;
            }
            return(View(orderModel));
        }
        public void saveInputOrder(InputOrderModel newOrder, string userId)
        {
            double totalPrice = GetTotalForCart(userId);

            var checkShippingInfoFromDb = _db.ShippingInfo.Where(u => u.UserId == userId).FirstOrDefault();

            if (checkShippingInfoFromDb == null)
            {
                var newShippingInfo = new ShippingInfo
                {
                    UserId        = userId,
                    Street        = newOrder.Street,
                    City          = newOrder.City,
                    PostalCode    = newOrder.PostalCode,
                    Country       = newOrder.Country,
                    SendingMethod = newOrder.SendingMethod
                };

                //save and update
                _db.ShippingInfo.Add(newShippingInfo);
                _db.SaveChanges();
            }

            var shippingInfoDb = _db.ShippingInfo.Where(u => u.UserId == userId).FirstOrDefault();

            var order = new Order
            {
                CustomerId     = userId,
                PaidDate       = DateTime.Now,
                Total          = totalPrice,
                ShippingInfoId = shippingInfoDb.Id,
                Status         = "Paid"
            };

            _db.Orders.Add(order);
            _db.SaveChanges();

            //Get the orderId
            var orderFromDb     = _db.Orders.Where(p => p.PaidDate == order.PaidDate).FirstOrDefault();
            var cartItemsFromDb = _db.Cart.Where(u => u.UserId == userId).ToList();

            foreach (var item in cartItemsFromDb)
            {
                var bookFromDb = _db.Books.Where(b => b.Id == item.BookId).FirstOrDefault();

                var orderItem = new OrderItem
                {
                    BookId   = item.BookId,
                    OrderId  = orderFromDb.Id,
                    Price    = bookFromDb.Price,
                    Quantity = item.Quantity,
                    AuthorId = bookFromDb.AuthorId,
                    Title    = bookFromDb.Title
                };

                _db.OrderItem.Add(orderItem);
            }

            //Delete from cart
            foreach (var item in cartItemsFromDb)
            {
                RemoveCart(item.Id);
            }

            _db.SaveChanges();
        }
Example #4
0
 public void saveInputOrder(InputOrderModel newOrder, string userId)
 {
     _accountRepo.saveInputOrder(newOrder, userId);
 }