public async Task <ActionResult <IEnumerable <CompanyDto> > > GetCompanies([FromQuery] DtoParameters dtoParameter) { var companies = await _companyRepository.GetCompaniesAsync(dtoParameter); var previousLink = companies.HasPrevious ? CreateCompaniesResourceUri(dtoParameter, ResourceUriType.PreviousPage) : null; var nextLink = companies.HasNext ? CreateCompaniesResourceUri(dtoParameter, ResourceUriType.NextPage) : null; var paginationMetadata = new { totalCount = companies.TotalCount, pageSize = companies.PageSize, currentPage = companies.CurrentPage, totalPages = companies.TotalPages, previousLink, nextLink }; Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetadata, new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping })); var companiesDto = _mapper.Map <IEnumerable <CompanyDto> >(companies); if (companiesDto == null) { return(NoContent()); } return(Ok(companiesDto)); }
private string CreateCompaniesResourceUri(DtoParameters parameters, ResourceUriType type) { switch (type) { case ResourceUriType.PreviousPage: return(Url.Link(nameof(GetCompanies), new { pageInex = parameters.pageInex - 1, pageSize = parameters.pageSize, search = parameters.search })); case ResourceUriType.NextPage: return(Url.Link(nameof(GetCompanies), new { pageInex = parameters.pageInex + 1, pageSize = parameters.pageSize, search = parameters.search })); case ResourceUriType.CurrentPage: default: return(Url.Link(nameof(GetCompanies), new { pageInex = parameters.pageInex, pageSize = parameters.pageSize, search = parameters.search })); } }
public async Task <PageList <Company> > GetCompaniesAsync(DtoParameters dtoParameter) { if (dtoParameter == null) { throw new AggregateException(nameof(dtoParameter)); } if (string.IsNullOrWhiteSpace(dtoParameter.search)) { return(await PageList <Company> .CreateAsync(_context.Companies, dtoParameter.pageInex, dtoParameter.pageSize)); } else { var search = dtoParameter.search?.Trim(); var queryExpression = _context.Companies.Where(c => c.Name.Contains(search) || c.Introduction.Contains(search)); return(await PageList <Company> .CreateAsync(queryExpression, dtoParameter.pageInex, dtoParameter.pageSize)); } }
public IActionResult ValidateModelState([FromBody] DtoParameters p) { return(Ok(p)); }