Exemple #1
0
        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)));
        }
Exemple #3
0
        //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);
        }
Exemple #5
0
        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));
        }
Exemple #10
0
        //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
                    }));
            }
            }
        }
Exemple #12
0
        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
                }));
            }
        }
Exemple #13
0
        [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));
        }
Exemple #14
0
        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));
        }