Example #1
0
        public async Task <PagedList <ProductViewModel> > ListProductAsync(ProductRequestListViewModel productRequestListViewModel)
        {
            var list = await GetAll().Where(x => (string.IsNullOrEmpty(productRequestListViewModel.Query) ||
                                                  (x.Name.Contains(productRequestListViewModel.Query))))
                       .Select(x => new ProductViewModel(x)).ToListAsync();

            var    productViewModelProperties = GetAllPropertyNameOfCategoryViewModel();
            var    requestPropertyName        = !string.IsNullOrEmpty(productRequestListViewModel.SortName) ? productRequestListViewModel.SortName.ToLower() : string.Empty;
            string matchedPropertyName        = string.Empty;

            foreach (var productViewModelProperty in productViewModelProperties)
            {
                var lowerProductViewModelProperty = productViewModelProperty.ToLower();
                if (lowerProductViewModelProperty.Equals(requestPropertyName))
                {
                    matchedPropertyName = productViewModelProperty;
                }
            }

            if (string.IsNullOrEmpty(matchedPropertyName))
            {
                matchedPropertyName = "Name";
            }

            var type         = typeof(ProductViewModel);
            var sortProperty = type.GetProperty(matchedPropertyName);

            list = productRequestListViewModel.IsDesc ? list.OrderByDescending(x => sortProperty.GetValue(x, null)).ToList() : list.OrderBy(x => sortProperty.GetValue(x, null)).ToList();

            return(new PagedList <ProductViewModel>(list, productRequestListViewModel.Offset ?? CommonConstants.Config.DEFAULT_SKIP, productRequestListViewModel.Limit ?? CommonConstants.Config.DEFAULT_TAKE));
        }
Example #2
0
        public async Task <IActionResult> GetAll(ProductRequestListViewModel productRequestListViewModel)
        {
            var product = await _productService.ListProductAsync(productRequestListViewModel);

            return(Ok(product));
        }