public IActionResult GetEnterprises([FromBody] EnterpriseQueryFilter filters)
        {
            if (!User.Identity.IsAuthenticated)
            {
                throw new AuthenticationException();
            }
            var enterprises   = _enterpriseService.GetEnterprises(filters);
            var enterpriseDto = _mapper.Map <IEnumerable <EnterpriseDto> >(enterprises);
            var metadata      = new Metadata
            {
                TotalCount      = enterprises.TotalCount,
                PageSize        = enterprises.PageSize,
                CurrentPage     = enterprises.CurrentPage,
                TotalPages      = enterprises.TotalPages,
                HasNextPage     = enterprises.HasNextPage,
                HasPreviousPage = enterprises.HasPreviousPage,
                NextPageUrl     = _uriService.GetPostPaginationUri(filters, Url.RouteUrl(nameof(GetEnterprises))).ToString(),
                PreviousPageUrl = _uriService.GetPostPaginationUri(filters, Url.RouteUrl(nameof(GetEnterprises))).ToString()
            };
            var response = new ApiResponse <IEnumerable <EnterpriseDto> >(enterpriseDto)
            {
                Meta = metadata
            };

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata));
            return(Ok(response));
        }
        public PagedList <Enterprise> GetEnterprises(EnterpriseQueryFilter filters)
        {
            filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber;
            filters.PageSize   = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize;
            var enterprises = _unitOfWork.EnterpriseRepository.GetAll();

            if (filters.filter != null)
            {
                enterprises = enterprises.Where(x => x.commercial_name.ToLower().Contains(filters.filter.ToLower()));
                enterprises = enterprises.Where(x => x.enterprise_address.ToLower().Contains(filters.enterprise_address.ToLower()));
                enterprises = enterprises.Where(x => x.name_application.ToLower().Contains(filters.name_application.ToLower()));
            }
            if (filters.id_city != null)
            {
                enterprises = enterprises.Where(x => x.id_city == filters.id_city);
            }
            if (filters.name_application != null)
            {
                enterprises = enterprises.Where(x => x.name_application == filters.name_application);
            }
            if (filters.commercial_name != null)
            {
                enterprises = enterprises.Where(x => x.commercial_name.ToLower().Contains(filters.commercial_name.ToLower()));
            }
            if (filters.enterprise_address != null)
            {
                enterprises = enterprises.Where(x => x.enterprise_address.ToLower().Contains(filters.enterprise_address.ToLower()));
            }
            if (filters.name_application != null)
            {
                enterprises = enterprises.Where(x => x.name_application.ToLower().Contains(filters.name_application.ToLower()));
            }
            if (filters.orderedBy != null && filters.orderedBy.Count() > 0)
            {
                foreach (var sortM in filters.orderedBy)
                {
                    enterprises = enterprises.OrderBy(sortM.PairAsSqlExpression);
                }
            }
            var pagedPosts = PagedList <Enterprise> .Create(enterprises, filters.PageNumber, filters.PageSize);

            return(pagedPosts);
        }
Exemplo n.º 3
0
        public Uri GetPostPaginationUri(EnterpriseQueryFilter filter, string actionUrl)
        {
            string baseUrl = $"{_baseUri}{actionUrl}";

            return(new Uri(baseUrl));
        }