public async Task <IEnumerable <Entity> > GetPagedEmployeeReponseAsync(GetEmployeesQuery requestParameter) { IQueryable <Employee> result; var employeeNumber = requestParameter.EmployeeNumber; var employeeTitle = requestParameter.EmployeeTitle; var orderBy = requestParameter.OrderBy; var fields = requestParameter.Fields; var pageNumber = requestParameter.PageNumber; var pageSize = requestParameter.PageSize; result = _mockData.GetEmployees(1000) .AsQueryable() .Skip((pageNumber - 1) * pageSize) .Take(pageSize); //filter FilterByColumn(ref result, employeeNumber, employeeTitle); if (!string.IsNullOrWhiteSpace(orderBy)) { result = result.OrderBy(orderBy); } //limit query fields if (!string.IsNullOrWhiteSpace(fields)) { result = result.Select <Employee>("new(" + fields + ")"); } // retrieve data to list // var resultData = await result.ToListAsync(); // Note: Bogus library does not support await for AsQueryable. // Workaround: fake await with Task.Run and use regular ToList var resultData = await Task.Run(() => result.ToList()); // shape data return(_dataShaper.ShapeData(resultData, fields)); }
public async Task <(IEnumerable <Entity> data, RecordsCount recordsCount)> GetPagedEmployeeReponseAsync(GetEmployeesQuery requestParameter) { IQueryable <Employee> result; var employeeNumber = requestParameter.EmployeeNumber; var employeeTitle = requestParameter.EmployeeTitle; var pageNumber = requestParameter.PageNumber; var pageSize = requestParameter.PageSize; var orderBy = requestParameter.OrderBy; var fields = requestParameter.Fields; int recordsTotal, recordsFiltered; int seedCount = 1000; result = _mockData.GetEmployees(seedCount) .AsQueryable(); // Count records total recordsTotal = result.Count(); // filter data FilterByColumn(ref result, employeeNumber, employeeTitle); // Count records after filter recordsFiltered = result.Count(); //set Record counts var recordsCount = new RecordsCount { RecordsFiltered = recordsFiltered, RecordsTotal = recordsTotal }; // set order by if (!string.IsNullOrWhiteSpace(orderBy)) { result = result.OrderBy(orderBy); } //limit query fields if (!string.IsNullOrWhiteSpace(fields)) { result = result.Select <Employee>("new(" + fields + ")"); } // paging result = result .Skip((pageNumber - 1) * pageSize) .Take(pageSize); // retrieve data to list // var resultData = await result.ToListAsync(); // Note: Bogus library does not support await for AsQueryable. // Workaround: fake await with Task.Run and use regular ToList var resultData = await Task.Run(() => result.ToList()); // shape data var shapeData = _dataShaper.ShapeData(resultData, fields); return(shapeData, recordsCount); }