コード例 #1
0
        public IHttpActionResult GetTradingPartners([FromUri] TradingPartnerResourceParameters parameters)
        {
            try
            {
                var pagedList = _tpReadRepository.ToPagedList(parameters, _propertyMappingService);

                var previousPageLink = pagedList.HasPrevious ?
                                       CreateResourceUri(parameters,
                                                         ResourceUriType.PreviousPage) : null;

                var nextPageLink = pagedList.HasNext ?
                                   CreateResourceUri(parameters,
                                                     ResourceUriType.NextPage) : null;

                _log.Information("Received Record {0}");
                var tpDto    = AutoMapper.Mapper.Map <IEnumerable <TradingPartnerDetailDto> >(pagedList);
                var response = Request.CreateResponse(HttpStatusCode.OK, tpDto);
                response.Headers.Add("X-Pagination-PageNumber", pagedList.CurrentPage.ToString());
                response.Headers.Add("X-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(pagedList.MetaData(previousPageLink, nextPageLink)));
                return(ResponseMessage(response));
            }
            catch (Exception ex)
            {
                //LOG
                //return StatusCode(HttpStatusCode.InternalServerError);
                return(InternalServerError(new Exception("An unexpected error occured! Please try again later!")));
            }
        }
コード例 #2
0
        private string CreateResourceUri(
            TradingPartnerResourceParameters parameters,
            ResourceUriType type)
        {
            var _urlHelper = new UrlHelper(Request);

            int pageAdjustment = type.GetPageAdjustment();

            return(Url.Link("GetTradingPartners",
                            new
            {
                searchQuery = parameters.SearchQuery,
                name = parameters.Name,
                pageNumber = parameters.PageNumber + pageAdjustment,
                pageSize = parameters.PageSize,
                orderBy = parameters.OrderBy,
                description = parameters.Description,
                identifier = parameters.Identifier,
                propertyName = parameters.PropertyName,
                propertyValue = parameters.PropertyValue,
                qualifier = parameters.Qualifier
            }));
        }
コード例 #3
0
        public static PagedList <TradingPartner> ToPagedList(this IReadRepository <TradingPartner> repo, TradingPartnerResourceParameters parameters, IPropertyMappingService propertyMappingService)
        {
            parameters = parameters ?? new TradingPartnerResourceParameters();

            if (!propertyMappingService.ValidMappingExistsFor <TradingPartnerDetailDto, TradingPartner>(parameters.OrderBy))
            {
                throw new Exception("Invalid OrderBy!");
                //return BadRequest("Invalid OrderBy!!!");
                //TODO => throw exception and return Bad Request to client
            }

            var tp = repo.List()
                     .ApplySort(parameters.OrderBy, propertyMappingService.GetPropertyMapping <TradingPartnerDetailDto, TradingPartner>());

            if (!string.IsNullOrEmpty(parameters.Name))
            {
                tp = tp.Where(t => t.Name.ToLower() == parameters.Name.ToLower());
            }

            if (!string.IsNullOrEmpty(parameters.Description))
            {
                tp = tp.Where(t => t.Description.ToLower() == parameters.Description.ToLower());
            }

            if (!string.IsNullOrEmpty(parameters.Qualifier))
            {
                tp = tp.Where(t => t.Identifiers.Any(i => i.Qualifier == parameters.Qualifier.ToLower()));
            }

            if (!string.IsNullOrEmpty(parameters.Identifier))
            {
                tp = tp.Where(t => t.Identifiers.Any(i => i.Identifier == parameters.Identifier.ToLower()));
            }

            if (!string.IsNullOrEmpty(parameters.PropertyName))
            {
                tp = tp.Where(t => t.Properties.Any(i => i.Name == parameters.PropertyName.ToLower()));
            }

            if (!string.IsNullOrEmpty(parameters.PropertyValue))
            {
                tp = tp.Where(t => t.Properties.Any(i => i.Value == parameters.PropertyValue.ToLower()));
            }

            if (!string.IsNullOrEmpty(parameters.SearchQuery))
            {
                var searchQuery = parameters.SearchQuery.ToLower();
                tp = tp.Where(t => t.Name.ToLower().Contains(searchQuery) ||
                              t.Description.ToLower().Contains(searchQuery) ||
                              t.Identifiers.Any(i => i.Qualifier.Contains(searchQuery)) ||
                              t.Identifiers.Any(i => i.Identifier.Contains(searchQuery)) ||
                              t.Properties.Any(i => i.Name.Contains(searchQuery)) ||
                              t.Properties.Any(i => i.Value.Contains(searchQuery))
                              );
            }

            return(PagedList <TradingPartner> .Create(tp, parameters.PageNumber, parameters.PageSize));
        }