Beispiel #1
0
        private BasketViewModel GetOrCreateBasketForUser(string userId)
        {
            var baskets = _basketRepository.GetAll()
                          .Include(b => b.Items)
                          .ThenInclude(item => item.Product);
            var basket = baskets.FirstOrDefault(basket => basket.BuyerId == userId);

            if (basket == null)
            {
                basket = new Models.Entities.Basket(userId);
                _basketRepository.Add(basket);

                return(new BasketViewModel()
                {
                    BuyerId = basket.BuyerId,
                    Id = basket.Id,
                    Items = new List <BasketItem>()
                });
            }
            return(new BasketViewModel()
            {
                Id = basket.Id,
                Items = basket.Items.ToList(),
                BuyerId = basket.BuyerId
            });
        }
Beispiel #2
0
        public IActionResult CheckoutBasket(string BuyerId, Dictionary <string, int> items)
        {
            if (BuyerId == null)
            {
                RedirectToPage("Basket");
            }
            if (ModelState.IsValid)
            {
                var basket = _basketRepository.GetAll()
                             .Include(basket => basket.Items)
                             .ThenInclude(item => item.Product)
                             .FirstOrDefault(basket => basket.BuyerId == BuyerId);

                if (basket == null)
                {
                    basket = new Models.Entities.Basket(User.FindFirstValue(ClaimTypes.NameIdentifier));
                    _basketRepository.Add(basket);
                }

                var OrderItems = new List <OrderItem>();

                foreach (var item in basket.Items)
                {
                    if (items.TryGetValue(item.Id.ToString(), out var quantity))
                    {
                        OrderItems.Add(new OrderItem(item.Product.Id, item.Price, quantity));
                    }
                }
                OrderViewModel ovm = new OrderViewModel()
                {
                    Order = new Order()
                    {
                        BuyerId      = BuyerId,
                        Status       = OrderStatus.Pending,
                        CheckoutDate = DateTime.Now
                    },
                    OrderItems = OrderItems
                };

                return(View(ovm));
            }
            return(BadRequest());
        }