Example #1
0
        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")));
            }
        }
Example #2
0
 public async Task <OperationDataResult <Paged <ItemGroupModel> > > Index(
     [FromBody] ItemGroupRequestModel inventoryItemTypeRequestModel)
 {
     return(await _inventoryItemGroupService.GetItemGroups(inventoryItemTypeRequestModel));
 }