public override async Task <QueryResponse <UserDto> > Handle(UserCollectionQueryRequest request,
                                                                     CancellationToken cancellationToken)
        {
            QueryResponse <UserDto> response = new QueryResponse <UserDto>();

            if (!_propertyMappingService.ValidMappingExistsFor <UserDto, Domain.Aggregate.User>(request.OrderBy))
            {
                response.Status  = HttpStatusCode.RequestedRangeNotSatisfiable;
                response.Message = $"Ah oh, request.OrderBy is 【{request.OrderBy}】";
                return(response);
            }
            if (!_propertyCheckerService.TypeHasProperties <UserDto>(request.Fields))
            {
                response.Status  = HttpStatusCode.RequestedRangeNotSatisfiable;
                response.Message = $"Ah oh, request.Fields is 【{request.Fields}】";
                return(response);
            }
            var users = await _repository.GetUserCollectionAsync(request, false);

            //AutoMapper进行属性映射
            response.RawData = _mapper.Map <IEnumerable <UserDto> >(users);
            //数据重塑
            response.ShapeData(request.Fields);
            return(await Task.FromResult(response));
        }
示例#2
0
        public override async Task <QueryResponse <UserDto> > Handle(UserPagedCollectionQueryRequest request,
                                                                     CancellationToken cancellationToken)
        {
            var response = new QueryResponse <UserDto>();

            if (!_propertyMappingService.ValidMappingExistsFor <UserDto, Domain.Aggregate.User>(request.OrderBy))
            {
                response.Status  = HttpStatusCode.RequestedRangeNotSatisfiable;
                response.Message = $"Ah oh, request.OrderBy is 【{request.OrderBy}】";
                return(response);
            }
            if (!_propertyCheckerService.TypeHasProperties <UserDto>(request.Fields))
            {
                response.Status  = HttpStatusCode.RequestedRangeNotSatisfiable;
                response.Message = $"Ah oh, request.Fields is 【{request.Fields}】";
                return(response);
            }
            var returnVisits = await _repository.GetUserCollectionAsync(request, true) as PagedList <Domain.Aggregate.User>;

            request.HasNextPage     = returnVisits.HasNextPage;
            request.HasPreviousPage = returnVisits.HasPreviousPage;
            var paginationMetadata = new
            {
                totalCount  = returnVisits.TotalCount,
                pageSize    = returnVisits.PageSize,
                currentPage = returnVisits.CurrentPage,
                totalPages  = returnVisits.TotalPages
            };

            //Hateaos:将分页信息一起返回
            response.MoreInfo = JsonSerializer.Serialize(paginationMetadata,
                                                         new JsonSerializerOptions
            {
                Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
            });
            //AutoFactory进行属性映射
            response.RawData = _mapper.Map <IEnumerable <UserDto> >(returnVisits);
            //数据重塑
            response.ShapeData(request.Fields);
            return(await Task.FromResult(response));
        }