public async Task <PagedList <ShopViewModel> > ListShopAsync(ShopRequestListViewModel shopRequestListViewModel) { var list = await GetAll() .Where(x => (!shopRequestListViewModel.IsActive.HasValue || x.RecordActive == shopRequestListViewModel.IsActive) && (string.IsNullOrEmpty(shopRequestListViewModel.Query) || (x.Name.Contains(shopRequestListViewModel.Query) ))) .Select(x => new ShopViewModel(x)).ToListAsync(); var shopViewModelProperties = GetAllProperyNameOfShopViewModel(); var requestPropertyName = !string.IsNullOrEmpty(shopRequestListViewModel.SortName) ? shopRequestListViewModel.SortName.ToLower() : string.Empty; string matchedPropertyName = string.Empty; foreach (var shopViewModelProperty in shopViewModelProperties) { var lowerTypeViewModelProperty = shopViewModelProperty.ToLower(); if (lowerTypeViewModelProperty.Equals(requestPropertyName)) { matchedPropertyName = shopViewModelProperty; break; } } if (string.IsNullOrEmpty(matchedPropertyName)) { matchedPropertyName = "Name"; } var type = typeof(ShopViewModel); var sortProperty = type.GetProperty(matchedPropertyName); list = shopRequestListViewModel.IsDesc ? list.OrderByDescending(x => sortProperty.GetValue(x, null)).ToList() : list.OrderBy(x => sortProperty.GetValue(x, null)).ToList(); return(new PagedList <ShopViewModel>(list, shopRequestListViewModel.Skip ?? CommonConstants.Config.DEFAULT_SKIP, shopRequestListViewModel.Take ?? CommonConstants.Config.DEFAULT_TAKE)); }
public async Task <IActionResult> GetAll(ShopRequestListViewModel shopRequestListViewModel) { var shop = await _shopService.ListShopAsync(shopRequestListViewModel); return(Ok(shop)); }