public async Task <WarehouseProductViewModel> GetByWarehouseId(int warehouseId) { WarehouseProductViewModel warehouseProductViewModel = new WarehouseProductViewModel(); IQueryable <WarehouseProduct> query = Database.Set <WarehouseProduct>().Where(wp => wp.IsActive && wp.WarehouseId == warehouseId).AsQueryable(); Func <IQueryable <WarehouseProduct>, IQueryable <WarehouseProduct> > includes = DbContextHelper.GetNavigations <WarehouseProduct>(); query = includes(query); warehouseProductViewModel.WarehouseProducts = await query.ToListAsync(); if (warehouseProductViewModel.WarehouseProducts.Count > 0) { warehouseProductViewModel.UsedCapacity = query.GroupBy(o => o.WarehouseId).Select(g => new { key = g.Key, total = g.Sum(i => i.Count) }).FirstOrDefault().total; } return(warehouseProductViewModel); }
public async Task <int> GetRemainingCapacityByWarehouseId(int warehouseId) { Warehouse warehouse = await warehouseRepository.GetById(warehouseId); WarehouseProductViewModel warehouseProductViewModel = new WarehouseProductViewModel(); IQueryable <WarehouseProduct> query = Database.Set <WarehouseProduct>().Where(wp => wp.IsActive && wp.WarehouseId == warehouseId).AsQueryable(); warehouseProductViewModel.WarehouseProducts = await query.ToListAsync(); if (warehouseProductViewModel.WarehouseProducts.Count > 0) { warehouseProductViewModel.UsedCapacity = query.GroupBy(o => o.WarehouseId).Select(g => new { key = g.Key, total = g.Sum(i => i.Count) }).FirstOrDefault().total; } int remainingCapacity = warehouse.Capacity - warehouseProductViewModel.UsedCapacity; return(remainingCapacity); }