public async Task <PagedList <CategoryViewModel> > ListCategoryAsync(CategoryRequestListViewModel categoryRequestListViewModel) { var list = await GetAll() .Where(x => (string.IsNullOrEmpty(categoryRequestListViewModel.Query) || (x.Name.Contains(categoryRequestListViewModel.Query)))) .Select(x => new CategoryViewModel(x)).ToListAsync(); var categoryViewModelProperties = GetAllPropertyNameOfCategoryViewModel(); var requestPropertyName = !string.IsNullOrEmpty(categoryRequestListViewModel.SortName) ? categoryRequestListViewModel.SortName.ToLower() : string.Empty; string matchedPropertyName = string.Empty; foreach (var categoryViewModelProperty in categoryViewModelProperties) { var lowerTypeViewModelProperty = categoryViewModelProperty.ToLower(); if (lowerTypeViewModelProperty.Equals(requestPropertyName)) { matchedPropertyName = categoryViewModelProperty; break; } } if (string.IsNullOrEmpty(matchedPropertyName)) { matchedPropertyName = "Name"; } var type = typeof(CategoryViewModel); var sortProperty = type.GetProperty(matchedPropertyName); list = categoryRequestListViewModel.IsDesc ? list.OrderByDescending(x => sortProperty.GetValue(x, null)).ToList() : list.OrderBy(x => sortProperty.GetValue(x, null)).ToList(); return(new PagedList <CategoryViewModel>(list, categoryRequestListViewModel.Offset ?? CommonConstants.Config.DEFAULT_SKIP, categoryRequestListViewModel.Limit ?? CommonConstants.Config.DEFAULT_TAKE)); }
public async Task <IActionResult> GetAll(CategoryRequestListViewModel categoryRequestListViewModel) { var category = await _categoryService.ListCategoryAsync(categoryRequestListViewModel); return(Ok(category)); }