public override async Task <Basket> Query(CreateOrGetUnconfirmedBasketCommand command) { var user = await _userManager.GetUserAsync(_httpContextAccessor.HttpContext.User); if (user == null) { return(null); } var basket = await DbContext.Baskets .Include(o => o.BasketItems) .Where(o => o.UserId == user.Id && !o.IsConfirmed) .FirstOrDefaultAsync(); if (basket == null) { basket = new Basket() { UserId = user.Id }; DbContext.AddOrUpdate(basket); await DbContext.SaveChangesAsync(); } else if (basket.BasketItems.Any(o => !o.ProductId.HasValue)) { foreach (var basketItem in basket.BasketItems.Where(o => !o.ProductId.HasValue)) { DbContext.ActionByEntityState(basketItem, EntityState.Deleted); } await DbContext.SaveChangesAsync(); } return(basket); }
public override async Task <Category> Query(DeleteCategoryCommand command) { var category = await DbContext.Categories.Include(o => o.Route).FirstOrDefaultAsync(o => o.Id == command.CategoryId); if (category == null) { return(null); } DbContext.ActionByEntityState(category.Route, EntityState.Deleted); await DbContext.SaveChangesAsync(); var routes = await _listRoutesQuery.Query(new ListRoutesCommand()); foreach (var route in routes.Where(o => o.Category == null && o.Product == null)) { DbContext.ActionByEntityState(route, EntityState.Deleted); } await DbContext.SaveChangesAsync(); _cache.ClearRegion(CacheRegions.Category); _cache.ClearRegion(CacheRegions.Product); return(category); }
public override async Task <Product> Query(DeleteProductCommand command) { var product = await DbContext.Products.Include(o => o.Route).FirstOrDefaultAsync(o => o.Id == command.ProductId); if (product == null) { return(null); } DbContext.ActionByEntityState(product.Route, EntityState.Deleted); await DbContext.SaveChangesAsync(); _cache.ClearRegion(CacheRegions.Product); return(product); }
public override async Task <BasketItem> Query(DeleteBasketItemCommand command) { var basket = await _createOrGetUnconfirmedBasketQuery.Query(new CreateOrGetUnconfirmedBasketCommand()); if (basket == null) { return(null); } var basketItem = basket.BasketItems.FirstOrDefault(o => o.Id == command.BasketItemId); if (basketItem != null) { DbContext.ActionByEntityState(basketItem, EntityState.Deleted); await DbContext.SaveChangesAsync(); } return(basketItem); }