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); }
public virtual async Task <long> Add() { var newUser = new User { Basket = new Basket() }; _context.Users.Add(newUser); await _context.SaveChangesAsync(); return(newUser.Id); }
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); }