private SearchResponseDTO <Company> SearchCompaniesWithQuery(SearchCompanyParameterDTO parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } if (parameters.Page.HasValue && parameters.Page.Value < 0 || parameters.PerPage.HasValue && parameters.PerPage.Value < 0) { throw new InvalidPaginationParametersException(); } IQueryable <Company> query = GetCompaniesSearchQuery(parameters); int totalCount = query.Count(); if (parameters.Page.HasValue && parameters.Page != 0 && parameters.PerPage.HasValue) { query = query.Skip((parameters.Page.Value - 1) * parameters.PerPage.Value); } if (parameters.PerPage.HasValue) { query = query.Take(parameters.PerPage.Value); } List <Company> companies = query.ToList(); return(new SearchResponseDTO <Company> { Items = companies, TotalCount = totalCount }); }
private IQueryable <Company> GetCompaniesSearchQuery(SearchCompanyParameterDTO parameters) { IQueryable <Company> query = _queryBuilder.SetBaseCompaniesInfo() .SetType(_mapper.Map <CompanyType?>(parameters.Type)) .SetSize(_mapper.Map <CompanySize?>(parameters.Size)) .SetSearchTerm(parameters.SearchTerm) .SetMyCompanies(parameters.MyCompanies, parameters.CurrentUserCompanyId) .Build(); return(query); }
public async Task <IActionResult> Filter([FromQuery] SearchCompanyParameterDTO parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } parameters.CurrentUserCompanyId = (await GetCurrentUser()).CompanyId; SearchResponseDTO <CompanyDTO> result = _service.SearchCompanies(parameters); return(Ok(result)); }
public SearchResponseDTO <CompanyDTO> SearchCompanies(SearchCompanyParameterDTO parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } SearchResponseDTO <Company> result = SearchCompaniesWithQuery(parameters); return(new SearchResponseDTO <CompanyDTO> { Items = _mapper.Map <IEnumerable <CompanyDTO> >(result.Items), TotalCount = result.TotalCount }); }