public async Task <ActionResult <IEnumerable <CompanyDto> > > GetCompanies([FromQuery] CompanyDtoParameter parameters) { var companies = await _companyRepository.GetCompaniesAsync(parameters); var previousPageLink = companies.HasPrevious ? CreateCompaniesResourceUri(parameters, ResourceUriType.PreviousPage) : null; var nextPageLink = companies.HasNext ? CreateCompaniesResourceUri(parameters, ResourceUriType.NextPage) : null; var paginationMetadata = new { totalCount = companies.TotalCount, totalPages = companies.TotalPages, currentPage = companies.CurrentPage, pageSize = companies.PageSize, previousPageLink, nextPageLink }; Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetadata, new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping })); var companyDtos = _mapper.Map <IEnumerable <CompanyDto> >(companies); return(Ok(companyDtos)); }
private string CreateCompaniesResourceUri(CompanyDtoParameter parameters, ResourceUriType type) { switch (type) { case ResourceUriType.PreviousPage: return(Url.Link(nameof(GetCompanies), new { pageNumber = parameters.PageNumber - 1, pageSize = parameters.PageSize, companyName = parameters.CompanyName, searchTerm = parameters.SearchTerm })); case ResourceUriType.NextPage: return(Url.Link(nameof(GetCompanies), new { pageNumber = parameters.PageNumber + 1, pageSize = parameters.PageSize, companyName = parameters.CompanyName, searchTerm = parameters.SearchTerm })); default: return(Url.Link(nameof(GetCompanies), new { pageNumber = parameters.PageNumber, pageSize = parameters.PageSize, companyName = parameters.CompanyName, searchTerm = parameters.SearchTerm })); } }
public async Task <IEnumerable <Company> > GetCompaniesAsync(CompanyDtoParameter parameter) { if (parameter == null) { throw new Exception(nameof(parameter)); } var items = _context.Companies as IQueryable <Company>; if (string.IsNullOrWhiteSpace(parameter.CompanyName) && string.IsNullOrWhiteSpace(parameter.SearchTerm)) { return(await items.ToListAsync()); } if (!string.IsNullOrWhiteSpace(parameter.CompanyName)) { parameter.CompanyName = parameter.CompanyName.Trim(); items = items.Where(c => c.Name == parameter.CompanyName); } if (!string.IsNullOrWhiteSpace(parameter.SearchTerm)) { parameter.SearchTerm = parameter.SearchTerm.Trim(); items = items.Where(c => c.Name.Contains(parameter.SearchTerm) || c.Introduction.Contains(parameter.SearchTerm)); } return(await items.ToListAsync()); }
public async Task <ActionResult <IEnumerable <CompanyDto> > > GetCompanies([FromQuery] CompanyDtoParameter parameter) { var companies = await _companyRepository.GetCompaniesAsync(parameter); var companyDtos = _mapper.Map <IEnumerable <CompanyDto> >(companies); return(Ok(companyDtos)); }
public async Task <ActionResult <IEnumerable <CompanyDto> > > GetCompanies(CompanyDtoParameter companyDtoParameter) { _logger.LogInformation("哈哈"); var companies = await _companyRepository.GetCompaniesAsync(companyDtoParameter); var companydtos = _mapper.Map <IEnumerable <CompanyDto> >(companies); return(Ok(companydtos)); }
public async Task <PagedList <Company> > GetCompaniesAsync(CompanyDtoParameter companyDtoParameter) { if (companyDtoParameter == null) { throw new ArgumentNullException(nameof(companyDtoParameter)); } var queryExpression = _context.companies as IQueryable <Company>; if (!string.IsNullOrWhiteSpace(companyDtoParameter.companyName)) { companyDtoParameter.companyName = companyDtoParameter.companyName.Trim(); queryExpression = queryExpression.Where(x => x.name == companyDtoParameter.companyName); } if (!string.IsNullOrWhiteSpace(companyDtoParameter.searchTerm)) { companyDtoParameter.searchTerm = companyDtoParameter.searchTerm.Trim(); queryExpression = queryExpression.Where(x => x.name.Contains(companyDtoParameter.searchTerm) || x.introduction.Contains(companyDtoParameter.searchTerm)); } return(await PagedList <Company> .CreateAsync(queryExpression, companyDtoParameter.pageNumber, companyDtoParameter.pageSize)); }
public async Task <PagedList <Company> > GetCompaniesAsync(CompanyDtoParameter parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } var items = _context.Companies as IQueryable <Company>; if (!string.IsNullOrWhiteSpace(parameters.CompanyName)) { parameters.CompanyName = parameters.CompanyName.Trim(); items = items.Where(x => x.Name == parameters.CompanyName); } if (!string.IsNullOrWhiteSpace(parameters.SearchTerm)) { parameters.SearchTerm = parameters.SearchTerm.Trim(); items = items.Where(x => x.Name.Contains(parameters.SearchTerm) || x.Introduction.Contains(parameters.SearchTerm)); } return(await PagedList <Company> .CreateAsync(items, parameters.PageNumber, parameters.PageSize)); }