public async Task <OperationDataResult <Paged <ItemGroupModel> > > GetItemGroups(ItemGroupRequestModel itemGroupRequestModel) { try { var inventoryItemGroupQuery = _dbContext.ItemGroups .AsQueryable(); // sort var excludeSort = new List <string> { "ParentGroup" }; inventoryItemGroupQuery = QueryHelper.AddSortToQuery(inventoryItemGroupQuery, itemGroupRequestModel.Sort, itemGroupRequestModel.IsSortDsc, excludeSort); // filter by name if (!string.IsNullOrEmpty(itemGroupRequestModel.NameFilter)) { inventoryItemGroupQuery = inventoryItemGroupQuery .Where(x => x.Name.Contains(itemGroupRequestModel.NameFilter)); } inventoryItemGroupQuery = inventoryItemGroupQuery .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed); // calculate total before pagination var total = await inventoryItemGroupQuery.Select(x => x.Id).CountAsync(); var inventoryItemGroupQueryMapped = AddSelectToItemGroupQuery(inventoryItemGroupQuery); if (itemGroupRequestModel.Sort == "ParentGroup") { if (itemGroupRequestModel.IsSortDsc) { inventoryItemGroupQueryMapped = inventoryItemGroupQueryMapped .OrderByDescending(x => x.Parent.Name); } else { inventoryItemGroupQueryMapped = inventoryItemGroupQueryMapped .OrderBy(x => x.Parent.Name); } } // pagination inventoryItemGroupQueryMapped = inventoryItemGroupQueryMapped .Skip(itemGroupRequestModel.Offset) .Take(itemGroupRequestModel.PageSize); // add select and take objects from db var inventoryItemGroupsFromDb = await inventoryItemGroupQueryMapped.ToListAsync(); var returnValue = new Paged <ItemGroupModel> { Entities = inventoryItemGroupsFromDb, Total = total, }; return(new OperationDataResult <Paged <ItemGroupModel> >(true, returnValue)); } catch (Exception e) { Trace.TraceError(e.Message); return(new OperationDataResult <Paged <ItemGroupModel> >(false, _inventoryLocalizationService.GetString("ErrorObtainingItemGroups"))); } }
public async Task <OperationDataResult <Paged <ItemGroupModel> > > Index( [FromBody] ItemGroupRequestModel inventoryItemTypeRequestModel) { return(await _inventoryItemGroupService.GetItemGroups(inventoryItemTypeRequestModel)); }