예제 #1
0
        public async Task <ActionResult <LinkedCollectionResourceWrapperDto <ConditionIdentifierDto> > > GetConditionsByIdentifier(
            [FromQuery] ConditionResourceParameters conditionResourceParameters)
        {
            if (!_typeHelperService.TypeHasProperties <ConditionIdentifierDto>
                    (conditionResourceParameters.OrderBy))
            {
                return(BadRequest());
            }

            var query = new ConditionsIdentifierQuery(
                conditionResourceParameters.OrderBy,
                conditionResourceParameters.Active,
                conditionResourceParameters.PageNumber,
                conditionResourceParameters.PageSize);

            _logger.LogInformation(
                "----- Sending query: ConditionsIdentifierQuery");

            var queryResult = await _mediator.Send(query);

            if (queryResult == null)
            {
                return(BadRequest("Query not created"));
            }

            // Prepare pagination data for response
            var paginationMetadata = new
            {
                totalCount  = queryResult.RecordCount,
                pageSize    = conditionResourceParameters.PageSize,
                currentPage = conditionResourceParameters.PageNumber,
                totalPages  = queryResult.PageCount
            };

            Response.Headers.Add("X-Pagination",
                                 JsonConvert.SerializeObject(paginationMetadata));

            return(Ok(queryResult));
        }
예제 #2
0
        public string CreateConditionsResourceUri(ResourceUriType type,
                                                  ConditionResourceParameters conditionResourceParameters)
        {
            switch (type)
            {
            case ResourceUriType.PreviousPage:
                return(_linkGenerator.GetPathByName(_accessor.HttpContext, "GetConditionsByIdentifier",
                                                    new
                {
                    orderBy = conditionResourceParameters.OrderBy,
                    pageNumber = conditionResourceParameters.PageNumber - 1,
                    pageSize = conditionResourceParameters.PageSize,
                    Active = conditionResourceParameters.Active
                }));

            case ResourceUriType.NextPage:
                return(_linkGenerator.GetPathByName(_accessor.HttpContext, "GetConditionsByIdentifier",
                                                    new
                {
                    orderBy = conditionResourceParameters.OrderBy,
                    pageNumber = conditionResourceParameters.PageNumber + 1,
                    pageSize = conditionResourceParameters.PageSize,
                    Active = conditionResourceParameters.Active
                }));

            case ResourceUriType.Current:
            default:
                return(_linkGenerator.GetPathByName(_accessor.HttpContext, "GetConditionsByIdentifier",
                                                    new
                {
                    orderBy = conditionResourceParameters.OrderBy,
                    pageNumber = conditionResourceParameters.PageNumber,
                    pageSize = conditionResourceParameters.PageSize,
                    Active = conditionResourceParameters.Active
                }));
            }
        }