public async Task <LicenseSearchResult> SearchAsync(LicenseSearchCriteria criteria) { using (var repository = _licenseRepositoryFactory()) { var result = AbstractTypeFactory <LicenseSearchResult> .TryCreateInstance(); var query = repository.Licenses; if (criteria.Keyword != null) { query = query.Where(x => x.CustomerName.Contains(criteria.Keyword)); } var sortInfos = criteria.SortInfos; if (sortInfos.IsNullOrEmpty()) { sortInfos = new[] { new SortInfo { SortColumn = ReflectionUtility.GetPropertyName <License>(x => x.CreatedDate), SortDirection = SortDirection.Descending } }; } query = query.OrderBySortInfos(sortInfos); var arrayLicense = await query.Skip(criteria.Skip).Take(criteria.Take).ToArrayAsync(); result.TotalCount = await query.CountAsync(); result.Results = arrayLicense.Select(x => x.ToModel(AbstractTypeFactory <License> .TryCreateInstance())).ToArray(); return(result); } }
public async Task <ActionResult <LicenseSearchResult> > SearchLicenses(LicenseSearchCriteria request) { if (request == null) { return(BadRequest("request is null")); } var searchResponse = await _licenseService.SearchAsync(request); return(Ok(searchResponse)); }