コード例 #1
0
        public async Task <ServiceResult <PaginatedListResult <ProductGroupsResponseViewModel> > > SearchListOfProductGroups(ProductGroupsRequestViewModel viewModel)
        {
            var paginatedListWithModel = await _repository.SearchProductCategories(viewModel);

            // Mapping
            List <ProductGroupsResponseViewModel> Mapping(List <ProductCategory> list)
            {
                return(list?
                       .Select(model => new ProductGroupsResponseViewModel
                {
                    Id = model.Id,
                    Name = model.Name,
                    //KmPercent = model.
                })
                       .ToList());
            }

            var paginatedListWithViewModel = paginatedListWithModel.Copy(Mapping);

            return(ServiceResultFactory.Success(paginatedListWithViewModel));
        }
コード例 #2
0
 public async Task <IActionResult> SearchListOfProductGroups([FromQuery] ProductGroupsRequestViewModel viewModel)
 => await HandleResultAsync(() => _service.SearchListOfProductGroups(viewModel));
コード例 #3
0
        public async Task <PaginatedListResult <ProductCategory> > SearchProductCategories(ProductGroupsRequestViewModel viewModel)
        {
            IQueryable <ProductCategory> SearchFilter(IQueryable <ProductCategory> queryInner)
            {
                return(queryInner);
            }

            IQueryable <ProductCategory> SearchSort(IQueryable <ProductCategory> queryInner)
            {
                var sortName = viewModel.SortName?.ToUpper();

                if (sortName == ProductGroupsRequestViewModel.OrderFields.Name)
                {
                    queryInner = queryInner.OrderUsingSearchOptions(viewModel, x => x.Name);
                }
                else if (sortName == ProductGroupsRequestViewModel.OrderFields.KmPercent)
                {
                    queryInner = queryInner.OrderUsingSearchOptions(viewModel, x => x.Vat);
                }
                else
                {
                    queryInner = queryInner.OrderBy(x => x.Id);
                }
                return(queryInner);
            }

            if (viewModel == null)
            {
                throw new ArgumentNullException(nameof(viewModel));
            }

            var query = Context.ProductCategories.Where(x => x.DeletedOn == null);

            query = SearchFilter(query);
            query = SearchSort(query);

            return(await query.ToPaginatedListResultAsync(viewModel));
        }