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)); }
public async Task <IActionResult> GetAll(ProductRequestListViewModel productRequestListViewModel) { var product = await _productService.ListProductAsync(productRequestListViewModel); return(Ok(product)); }