Exemple #1
0
        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));
        }
Exemple #2
0
        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
                }));
            }
        }
Exemple #3
0
        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));
        }
Exemple #6
0
        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));
        }
Exemple #7
0
        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));
        }