public async Task <IEnumerable <OrderViewModel> > Checkout(OrderDto model, CancellationToken cancellationToken = default) { AppUser user = await _authService.GetUser(_user, cancellationToken); IQueryable <CartItem> cart = _context.CartItems .Include(ci => ci.Product) .ThenInclude(p => p.Images) .Where(ci => ci.UserId == user.UserId); IEnumerable <Order> orders = await cart .ProjectTo <Order>(_mapper.ConfigurationProvider) .ToListAsync(cancellationToken); PaymentMethod paymentMethod = await _context.PaymentMethods .SingleOrDefaultAsync(pm => pm.PaymentMethodId == model.PaymentMethodId, cancellationToken); foreach (Order order in orders) { order.PaymentMethodId = paymentMethod.PaymentMethodId; } await _context.Orders.AddRangeAsync(orders, cancellationToken); _context.RemoveRange(cart); await _context.SaveChangesAsync(cancellationToken); IEnumerable <OrderViewModel> viewModels = orders .AsQueryable() .ProjectTo <OrderViewModel>(_mapper.ConfigurationProvider) .ToList(); return(viewModels); }
public Task DeleteProductsAsync(ICollection <CartProduct> cartProducts) { _dbContext.RemoveRange(cartProducts); return(_dbContext.SaveChangesAsync()); }