public async Task <IActionResult> GetCompanies([FromQuery] CompanyParameters companyParameters) { var Companies = await _repoWrapper.Company.GetAllCompanyAsync(companyParameters); return(Ok(Companies)); }
public async Task <IActionResult> GetCompanies([FromQuery] CompanyParameters parameters) { var companies = await this.companyRespository.GetCompaniesAsync(parameters); var previousPageLink = companies.HasPrevious ? CreateCompaniesResourceUri(parameters, ResourceUriType.PriviousPage) : null; var nextPageLink = companies.HasNext ? CreateCompaniesResourceUri(parameters, ResourceUriType.NextPage) : null; var paginationMetaData = new { totalCount = companies.TotalCount, pageSize = companies.PageSize, currentPage = companies.CurrentPage, totalPage = companies.TotalPages, previousPageLink, nextPageLink }; Response.Headers.Add("X-Pagination", System.Text.Json.JsonSerializer.Serialize(paginationMetaData, new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping })); var companyDtos = mapper.Map <IEnumerable <CompanyDto> >(companies); return(Ok(companyDtos.ShapeData(parameters.Fields))); }
//Getcompanies建立链接 private IEnumerable <LinkDto> CreateLinksForCompany(CompanyParameters parameters, bool hasPrevious, bool hasNext) { var links = new List <LinkDto>(); links.Add(new LinkDto( CreateCompaniesResourceUri(parameters, ResourceUriType.CurrentPage), "self", "GET" )); if (hasPrevious) { links.Add(new LinkDto( CreateCompaniesResourceUri(parameters, ResourceUriType.PreviousPage), "previous page", "GET" )); } if (hasNext) { links.Add(new LinkDto( CreateCompaniesResourceUri(parameters, ResourceUriType.NextPage), "next page", "GET" )); } return(links); }
public PagedList <Company> GetAllCompanies(CompanyParameters param, bool trackChanges) { var query = FindAll(trackChanges); query = param.GetIQueriableByOrderStr(query);; query = param.TextFilter_Strings(query); var rs = new PagedList <Company>(query, param.PageSize, param.PageNumber); return(rs); }
public async Task <PagedList <Company> > GetAllCompanyAsync(CompanyParameters companyParameters) { var companies = FindAll().OrderBy(att => att.BranchId); SearchByName(ref companies, companyParameters.Name); var sortedCompany = _sortHelper.ApplySort(companies, companyParameters.OrderBy); return(await PagedList <Company> .ToPageList(sortedCompany, companyParameters.PageNumber, companyParameters.PageSize)); }
// [ResponseCache(Duration = 60,VaryByQueryKeys =new [] { "*"})] public ActionResult <IEnumerable <CompanyDto> > GetAllCompanies([FromQuery] CompanyParameters companyParameters) { PagedList <Company> allCompanies = repository.Company.GetAllCompanies(companyParameters, trackChanges: false); var lsCompanyDtos = mapper.Map <IEnumerable <CompanyDto> >(allCompanies); //todo be result filter montaghel shavad? HttpContext.Response.Headers.Add("X-Pagination", allCompanies.XPaginationStr); return(Ok(lsCompanyDtos)); }
public IActionResult GetCompanies([FromQuery] CompanyParameters companyParameters) { try { var companies = _repository.Company.GetAllCompanies(companyParameters); return(Ok(companies)); } catch (Exception ex) { _logger.LogError($"Something went wrong in the {nameof(GetCompanies)} action {ex}"); return(StatusCode(500, "Internal server error")); } }
public async Task <IActionResult> Index([FromQuery] CompanyParameters companyParameters) { ViewData["SearchTerm"] = companyParameters.SearchTerm; List <Company> companies = new List <Company>(); HttpClient client = _api.Initial(); HttpResponseMessage res = await client.GetAsync($"api/companies?searchTerm={companyParameters.SearchTerm}"); if (res.IsSuccessStatusCode) { var results = res.Content.ReadAsStringAsync().Result; companies = JsonConvert.DeserializeObject <List <Company> >(results); } var companiesToReturn = PagedList <Company> .ToPagedList(companies, companyParameters.PageNumber, companyParameters.PageSize); return(View(companiesToReturn)); }
public async Task <PageList <Company> > GetCompaniesAsync(CompanyParameters parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } var queryExpression = this.routineDbContext.Companies as IQueryable <Company>; if (!string.IsNullOrWhiteSpace(parameters.SearchQuery)) { parameters.SearchQuery = parameters.SearchQuery.Trim(); queryExpression = queryExpression.Where(x => x.Name.Contains(parameters.SearchQuery) || x.Introduction.Contains(parameters.SearchQuery)); } var mappingDictionary = this._propertyMappingService.GetPropertyMapping <CompanyDto, Company>(); queryExpression = queryExpression.ApplySort(parameters.OrderBy, mappingDictionary); return(await PageList <Company> .CreateAsync(queryExpression, parameters.PageNumber, parameters.PageSize)); }
//public async Task<IEnumerable<Company>> GetCompaniesAsync(CompanyParameters parameters) //PagedList class 分页类 public async Task <PagedList <Company> > GetCompaniesAsync(CompanyParameters parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } //if (string.IsNullOrWhiteSpace(parameters.CompanyName) && // string.IsNullOrWhiteSpace(parameters.SearchTerm)) //{ // return await _context.Companies.ToListAsync(); //} var queryExpression = _context.Companies as IQueryable <Company>; //IQueryable:使用EFCore动态拼接多个where条件时使用.ToListAsync(),执行数据库 (延迟查询,每次真正使用时都会重新读取数据。) if (!string.IsNullOrWhiteSpace(parameters.CompanyName)) { parameters.CompanyName = parameters.CompanyName.Trim(); queryExpression = queryExpression.Where(x => x.Name == parameters.CompanyName); } if (!string.IsNullOrWhiteSpace(parameters.SearchTerm)) { parameters.SearchTerm = parameters.SearchTerm.Trim(); queryExpression = queryExpression.Where(x => x.Name.Contains(parameters.SearchTerm) || x.Introduction.Contains(parameters.SearchTerm)); } //分页在过滤,搜索之后 //queryExpression=queryExpression.Skip(parameters.PageSize * (parameters.PageNumber - 1)) // .Take(parameters.PageSize); //return await queryExpression.ToListAsync(); var mappingDictonary = _propertyMappingService.GetPropertyMapping <CompanyDto, Company>(); queryExpression = queryExpression.ApplySort(parameters.OrderBy, mappingDictonary); return(await PagedList <Company> .CreateAsync(queryExpression, parameters.PageNumber, parameters.PageSize)); }
private string CreateCompaniesResourceUri(CompanyParameters parameters, ResourceUriType type) { switch (type) { case ResourceUriType.NextPage: { return(Url.Link(nameof(GetCompanies), new { fields = parameters.Fields, orderBy = parameters.OrderBy, pageNumber = parameters.PageNumber + 1, pageSize = parameters.PageSize, searchQuery = parameters.SearchQuery })); } case ResourceUriType.PriviousPage: { return(Url.Link(nameof(GetCompanies), new { ields = parameters.Fields, orderBy = parameters.OrderBy, pageNumber = parameters.PageNumber - 1, pageSize = parameters.PageSize, searchQuery = parameters.SearchQuery }));; } default: { return(Url.Link(nameof(GetCompanies), new { ields = parameters.Fields, orderBy = parameters.OrderBy, pageNumber = parameters.PageNumber, pageSize = parameters.PageSize, searchQuery = parameters.SearchQuery })); } } }
private string CreateCompaniesResourceUri(CompanyParameters parameters, ResourceUriType type) { switch (type) { case ResourceUriType.PreviousPage: return(Url.Link(nameof(GetCompanies), new { fields = parameters.Fields, orderBy = parameters.OrderBy, pageNumber = parameters.PageNumber - 1, pageSize = parameters.PageSize, companyName = parameters.CompanyName, searchTerm = parameters.SearchTerm })); case ResourceUriType.NextPage: return(Url.Link(nameof(GetCompanies), new { fields = parameters.Fields, orderBy = parameters.OrderBy, pageNumber = parameters.PageNumber + 1, pageSize = parameters.PageSize, companyName = parameters.CompanyName, searchTerm = parameters.SearchTerm })); case ResourceUriType.CurrentPage: //当前页 default: return(Url.Link(nameof(GetCompanies), new { fields = parameters.Fields, orderBy = parameters.OrderBy, pageNumber = parameters.PageNumber, pageSize = parameters.PageSize, companyName = parameters.CompanyName, searchTerm = parameters.SearchTerm })); } }
[HttpHead] //httphead返回body,但状态码也是200 //public async Task<ActionResult<IEnumerable<CompanyDto>>> GetCompanies( public async Task <IActionResult> GetCompanies([FromQuery] CompanyParameters parameters) //IActionResult可以用具体的实现类ActionResult<T>,返回的类型明确 { //return 400 if (!_propertyMappingService.ValidMappingExistsFor <CompanyDto, Company>(parameters.OrderBy)) { return(BadRequest()); } //return 400 if (!_propertyCheckService.TypeHasProperties <CompanyDto>(parameters.Fields)) { return(BadRequest()); } var companies = await _companyRepository.GetCompaniesAsync(parameters); //var previousLink = companies.HasPrevious // ? CreateCompaniesRessourceUri(parameters, ResourceUriType.PreviousPage) // : null; //var nextLink = companies.HasNext // ? CreateCompaniesRessourceUri(parameters, ResourceUriType.NextPage) // : null; var paginationMetaData = new { totalCount = companies.TotalCount, pageSize = companies.PageSize, currentPage = companies.CurrentPage, totalPages = companies.TotalPages, //previousPageLink =previousLink, //nextPageLink =nextLink }; Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetaData, new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping //不 转义 })); //var companiesDto = new List<CompanyDto>(); //replaced by Linq //foreach (var company in companies) //{ // companiesDto.Add(new CompanyDto // { // Id=company.Id, // Name = company.Name // }); //} //companies.ToList().ForEach(company=>companiesDto.Add(new CompanyDto //{ // Id = company.Id, // CompanyName = company.Name //})); //Auto mapper var companiesDtos = _mapper.Map <IEnumerable <CompanyDto> >(companies); var shapedData = companiesDtos.ShapeData(parameters.Fields); // return new JsonResult(companies); //return Json var links = CreateLinksForCompany(parameters, companies.HasPrevious, companies.HasNext); //对于集合资源,返回对象有这些属性 //{value:[xxx]集合,links var shapedCompaniesWithLinks = shapedData.Select(c => { var companyDict = c as IDictionary <string, object>; var companyLinks = CreateLinksForCompany( (Guid)companyDict["Id"], null); companyDict.Add("links", companyLinks); return(companyDict); }); var linkedCollectionResource = new { value = shapedCompaniesWithLinks, paging = links }; return(Ok(linkedCollectionResource)); }
public PagedList <Company> GetAllCompanies(CompanyParameters companyParameters) { var companies = FindAll().Search(companyParameters.SearchTerm).OrderBy(c => c.Name).ToList(); return(PagedList <Company> .ToPagedList(companies, companyParameters.PageNumber, companyParameters.PageSize)); }