Beispiel #1
0
        public async Task <int> InsertAsync(Item newEntity)
        {
            await _items.AddAsync(newEntity);

            await _context.SaveChangesAsync();

            return(newEntity.Id);
        }
        public async Task <bool> AddToCart(CartItem cartItem)
        {
            await _entities.CartItem.AddAsync(cartItem);

            await _entities.SaveChangesAsync();

            if (cartItem.Id < 1)
            {
                _logger.LogError(new EventId(), "Id less than 0 for CartItem: {@ci}", cartItem.Id);
            }

            return(cartItem.Id > 0);
        }
Beispiel #3
0
        public virtual async Task <long> Add()
        {
            var newUser = new User {
                Basket = new Basket()
            };

            _context.Users.Add(newUser);
            await _context.SaveChangesAsync();

            return(newUser.Id);
        }
Beispiel #4
0
        public virtual async Task <Invoice> Add(long userId)
        {
            var user =
                await _context.Users
                .Include(x => x.Basket.Items)
                .ThenInclude(y => y.Item)
                .SingleOrDefaultAsync(x => x.Id == userId);

            foreach (var item in user.Basket.Items)
            {
                item.Item.Stock = item.Item.Stock - item.Quantity;
                if (item.Item.Stock < 0)
                {
                    throw new Exception();                     // handle this properly
                }
            }
            var order = new Order
            {
                User  = user,
                Items = user.Basket.Items.Select(x => new OrderItem
                {
                    Item     = x.Item,
                    Quantity = x.Quantity
                }).ToList()
            };

            _context.Orders.Add(order);
            user.Basket.Items = new List <BasketItem>();
            await _context.SaveChangesAsync();

            return(new Invoice
            {
                Lines = order.Items.Select(x => new InvoiceLine {
                    ItemId = x.Item.Id,
                    Name = x.Item.Name,
                    Price = x.Item.Price,
                    Quantity = x.Quantity
                }),
                Total = order.Items.Select(x => x.Item.Price).Sum()
            });
        }
        public virtual async Task <Basket> AddItemsToBasket(long userId, IEnumerable <BasketItemDto> items)
        {
            var user =
                await _context.Users
                .Include(x => x.Basket.Items)
                .ThenInclude(y => y.Item)
                .SingleOrDefaultAsync(x => x.Id == userId);

            // handle invalid user id

            foreach (var basketItem in items)
            {
                var item = await _context.Items.SingleOrDefaultAsync(x => x.Id == basketItem.ItemId);

                //handle invalid item id

                var itemInBasket = user.Basket.Items.SingleOrDefault(x => x.Item.Id == basketItem.ItemId);
                if (ItemCanBeAdded(item, basketItem.Quantity, itemInBasket))
                {
                    if (itemInBasket == null)
                    {
                        user.Basket.Items.Add(new BasketItem
                        {
                            Item     = item,
                            Quantity = basketItem.Quantity
                        });
                    }
                    else
                    {
                        itemInBasket.Quantity = itemInBasket.Quantity + basketItem.Quantity;
                    }
                }
            }

            await _context.SaveChangesAsync();

            return(user.Basket);
        }