예제 #1
0
        public async Task <int> Count(InventoryHistoryFilter filter)
        {
            IQueryable <InventoryHistoryDAO> InventoryHistories = DataContext.InventoryHistory.AsNoTracking();

            InventoryHistories = DynamicFilter(InventoryHistories, filter);
            return(await InventoryHistories.CountAsync());
        }
예제 #2
0
        public async Task <List <InventoryHistory> > List(InventoryHistoryFilter filter)
        {
            if (filter == null)
            {
                return(new List <InventoryHistory>());
            }
            IQueryable <InventoryHistoryDAO> InventoryHistoryDAOs = DataContext.InventoryHistory.AsNoTracking();

            InventoryHistoryDAOs = DynamicFilter(InventoryHistoryDAOs, filter);
            InventoryHistoryDAOs = DynamicOrder(InventoryHistoryDAOs, filter);
            List <InventoryHistory> InventoryHistories = await DynamicSelect(InventoryHistoryDAOs, filter);

            return(InventoryHistories);
        }
예제 #3
0
        private IQueryable <InventoryHistoryDAO> OrFilter(IQueryable <InventoryHistoryDAO> query, InventoryHistoryFilter filter)
        {
            if (filter.OrFilter == null || filter.OrFilter.Count == 0)
            {
                return(query);
            }
            IQueryable <InventoryHistoryDAO> initQuery = query.Where(q => false);

            foreach (InventoryHistoryFilter InventoryHistoryFilter in filter.OrFilter)
            {
                IQueryable <InventoryHistoryDAO> queryable = query;
                if (InventoryHistoryFilter.Id != null && InventoryHistoryFilter.Id.HasValue)
                {
                    queryable = queryable.Where(q => q.Id, InventoryHistoryFilter.Id);
                }
                if (InventoryHistoryFilter.InventoryId != null && InventoryHistoryFilter.InventoryId.HasValue)
                {
                    queryable = queryable.Where(q => q.InventoryId, InventoryHistoryFilter.InventoryId);
                }
                if (InventoryHistoryFilter.OldSaleStock != null && InventoryHistoryFilter.OldSaleStock.HasValue)
                {
                    queryable = queryable.Where(q => q.OldSaleStock, InventoryHistoryFilter.OldSaleStock);
                }
                if (InventoryHistoryFilter.SaleStock != null && InventoryHistoryFilter.SaleStock.HasValue)
                {
                    queryable = queryable.Where(q => q.SaleStock, InventoryHistoryFilter.SaleStock);
                }
                if (InventoryHistoryFilter.OldAccountingStock != null && InventoryHistoryFilter.OldAccountingStock.HasValue)
                {
                    queryable = queryable.Where(q => q.OldAccountingStock, InventoryHistoryFilter.OldAccountingStock);
                }
                if (InventoryHistoryFilter.AccountingStock != null && InventoryHistoryFilter.AccountingStock.HasValue)
                {
                    queryable = queryable.Where(q => q.AccountingStock, InventoryHistoryFilter.AccountingStock);
                }
                if (InventoryHistoryFilter.AppUserId != null && InventoryHistoryFilter.AppUserId.HasValue)
                {
                    queryable = queryable.Where(q => q.AppUserId, InventoryHistoryFilter.AppUserId);
                }
                initQuery = initQuery.Union(queryable);
            }
            return(initQuery);
        }
예제 #4
0
 private IQueryable <InventoryHistoryDAO> DynamicFilter(IQueryable <InventoryHistoryDAO> query, InventoryHistoryFilter filter)
 {
     if (filter == null)
     {
         return(query.Where(q => false));
     }
     query = query.Where(q => !q.DeletedAt.HasValue);
     if (filter.Id != null && filter.Id.HasValue)
     {
         query = query.Where(q => q.Id, filter.Id);
     }
     if (filter.InventoryId != null && filter.InventoryId.HasValue)
     {
         query = query.Where(q => q.InventoryId, filter.InventoryId);
     }
     if (filter.OldSaleStock != null && filter.OldSaleStock.HasValue)
     {
         query = query.Where(q => q.OldSaleStock, filter.OldSaleStock);
     }
     if (filter.SaleStock != null && filter.SaleStock.HasValue)
     {
         query = query.Where(q => q.SaleStock, filter.SaleStock);
     }
     if (filter.OldAccountingStock != null && filter.OldAccountingStock.HasValue)
     {
         query = query.Where(q => q.OldAccountingStock, filter.OldAccountingStock);
     }
     if (filter.AccountingStock != null && filter.AccountingStock.HasValue)
     {
         query = query.Where(q => q.AccountingStock, filter.AccountingStock);
     }
     if (filter.AppUserId != null && filter.AppUserId.HasValue)
     {
         query = query.Where(q => q.AppUserId, filter.AppUserId);
     }
     query = OrFilter(query, filter);
     return(query);
 }
예제 #5
0
        private async Task <List <InventoryHistory> > DynamicSelect(IQueryable <InventoryHistoryDAO> query, InventoryHistoryFilter filter)
        {
            List <InventoryHistory> InventoryHistories = await query.Select(q => new InventoryHistory()
            {
                Id                 = filter.Selects.Contains(InventoryHistorySelect.Id) ? q.Id : default(long),
                InventoryId        = filter.Selects.Contains(InventoryHistorySelect.Inventory) ? q.InventoryId : default(long),
                OldSaleStock       = filter.Selects.Contains(InventoryHistorySelect.OldSaleStock) ? q.OldSaleStock : default(long),
                SaleStock          = filter.Selects.Contains(InventoryHistorySelect.SaleStock) ? q.SaleStock : default(long),
                OldAccountingStock = filter.Selects.Contains(InventoryHistorySelect.OldAccountingStock) ? q.OldAccountingStock : default(long),
                AccountingStock    = filter.Selects.Contains(InventoryHistorySelect.AccountingStock) ? q.AccountingStock : default(long),
                AppUserId          = filter.Selects.Contains(InventoryHistorySelect.AppUser) ? q.AppUserId : default(long),
                AppUser            = filter.Selects.Contains(InventoryHistorySelect.AppUser) && q.AppUser != null ? new AppUser
                {
                    Id             = q.AppUser.Id,
                    Username       = q.AppUser.Username,
                    DisplayName    = q.AppUser.DisplayName,
                    Address        = q.AppUser.Address,
                    Email          = q.AppUser.Email,
                    Phone          = q.AppUser.Phone,
                    SexId          = q.AppUser.SexId,
                    Birthday       = q.AppUser.Birthday,
                    Avatar         = q.AppUser.Avatar,
                    Department     = q.AppUser.Department,
                    OrganizationId = q.AppUser.OrganizationId,
                    Longitude      = q.AppUser.Longitude,
                    Latitude       = q.AppUser.Latitude,
                    StatusId       = q.AppUser.StatusId,
                    RowId          = q.AppUser.RowId,
                    Used           = q.AppUser.Used,
                } : null,
                Inventory = filter.Selects.Contains(InventoryHistorySelect.Inventory) && q.Inventory != null ? new Inventory
                {
                    Id              = q.Inventory.Id,
                    WarehouseId     = q.Inventory.WarehouseId,
                    ItemId          = q.Inventory.ItemId,
                    SaleStock       = q.Inventory.SaleStock,
                    AccountingStock = q.Inventory.AccountingStock,
                } : null,
            }).ToListAsync();

            return(InventoryHistories);
        }
예제 #6
0
        private IQueryable <InventoryHistoryDAO> DynamicOrder(IQueryable <InventoryHistoryDAO> query, InventoryHistoryFilter filter)
        {
            switch (filter.OrderType)
            {
            case OrderType.ASC:
                switch (filter.OrderBy)
                {
                case InventoryHistoryOrder.Id:
                    query = query.OrderBy(q => q.Id);
                    break;

                case InventoryHistoryOrder.Inventory:
                    query = query.OrderBy(q => q.InventoryId);
                    break;

                case InventoryHistoryOrder.OldSaleStock:
                    query = query.OrderBy(q => q.OldSaleStock);
                    break;

                case InventoryHistoryOrder.SaleStock:
                    query = query.OrderBy(q => q.SaleStock);
                    break;

                case InventoryHistoryOrder.OldAccountingStock:
                    query = query.OrderBy(q => q.OldAccountingStock);
                    break;

                case InventoryHistoryOrder.AccountingStock:
                    query = query.OrderBy(q => q.AccountingStock);
                    break;

                case InventoryHistoryOrder.AppUser:
                    query = query.OrderBy(q => q.AppUserId);
                    break;
                }
                break;

            case OrderType.DESC:
                switch (filter.OrderBy)
                {
                case InventoryHistoryOrder.Id:
                    query = query.OrderByDescending(q => q.Id);
                    break;

                case InventoryHistoryOrder.Inventory:
                    query = query.OrderByDescending(q => q.InventoryId);
                    break;

                case InventoryHistoryOrder.OldSaleStock:
                    query = query.OrderByDescending(q => q.OldSaleStock);
                    break;

                case InventoryHistoryOrder.SaleStock:
                    query = query.OrderByDescending(q => q.SaleStock);
                    break;

                case InventoryHistoryOrder.OldAccountingStock:
                    query = query.OrderByDescending(q => q.OldAccountingStock);
                    break;

                case InventoryHistoryOrder.AccountingStock:
                    query = query.OrderByDescending(q => q.AccountingStock);
                    break;

                case InventoryHistoryOrder.AppUser:
                    query = query.OrderByDescending(q => q.AppUserId);
                    break;
                }
                break;
            }
            query = query.Skip(filter.Skip).Take(filter.Take);
            return(query);
        }
예제 #7
0
 public IActionResult GetInventoryHistories(long productId, [FromBody] InventoryHistoryFilter filter)
 {
     return(Ok(reportService.GetInventoryHistories(reportService.OrganisationId, productId, filter)));
 }