Example #1
0
        /// <summary>
        /// Builds the property expression.
        /// </summary>
        /// <param name="request">The property request.</param>
        /// <returns>System.Linq.Expressions.Expression&lt;System.Func&lt;RealState.Domain.Entities.Property, System.Boolean&gt;&gt;.</returns>
        public Expression <Func <Property, bool> > BuildPropertyExpression(PropertyRequestDto request)
        {
            if (string.IsNullOrEmpty(request.Name) && string.IsNullOrEmpty(request.CodeInternal) && request.Year == decimal.Zero)
            {
                return(PredicateBuilderExtension.True <Property>());
            }


            var predicate = PredicateBuilderExtension.False <Property>();

            if (!string.IsNullOrEmpty(request.Name))
            {
                predicate = predicate.Or(p => p.Name.Contains(request.Name));
            }

            if (!string.IsNullOrEmpty(request.CodeInternal))
            {
                predicate = predicate.Or(p => p.CodeInternal.Equals(request.CodeInternal));
            }

            if (request.Year > decimal.Zero)
            {
                predicate = predicate.Or(p => p.Year == request.Year);
            }



            return(predicate);
        }
Example #2
0
        public async Task GetPagedProperties_StateUnderTest_ExpectedBehavior()
        {
            var propertyController = CreatePropertyController();
            var paginate           = new QueryParamDto {
                PageSize = 1, PageNumber = 3
            };
            var request = new PropertyRequestDto {
                Year = 2021
            };
            var propertyList = new List <PropertyListDto>
            {
                new()
                {
                    Name = "Propertie 1", Year = 2021, CodeInternal = "10212"
                }
            };

            var pagedList = PagedList <PropertyListDto> .Create(propertyList, propertyList.Count, paginate.PageNumber,
                                                                paginate.PageNumber);

            _mockPropertyService.Setup(s => s.GetPagedProperties(paginate, request)).ReturnsAsync(pagedList);

            var result = await propertyController.GetPagedProperties(paginate, request);

            var responseOkResult = result as OkObjectResult;

            Assert.AreEqual(200, responseOkResult?.StatusCode);
            _mockRepository.VerifyAll();
        }
    }
        public async Task <IActionResult> GetPagedProperties([FromQuery] QueryParamDto paginate, [FromQuery] PropertyRequestDto request)
        {
            var result = await _propertyService.GetPagedProperties(paginate, request);

            var response = new ApiResponse <List <PropertyListDto> >(result)
            {
                Meta = new Metadata
                {
                    PageSize        = result.PageSize,
                    CurrentPage     = result.CurrentPage,
                    HasNextPage     = result.HasNextPage,
                    HasPreviousPage = result.HasPreviousPage,
                    TotalCount      = result.TotalCount,
                    TotalPages      = result.TotalPages
                }
            };

            return(Ok(response));
        }
Example #4
0
        /// <summary>
        /// Gets the paged properties.
        /// </summary>
        /// <param name="paginate">The paginate.</param>
        /// <param name="propertyRequest">The property request.</param>
        /// <returns>Task&lt;PagedList&lt;PropertyListDto&gt;&gt;.</returns>
        public async Task <PagedList <PropertyListDto> > GetPagedProperties(QueryParamDto paginate, PropertyRequestDto propertyRequest)
        {
            paginate.PageNumber = paginate.PageNumber == decimal.Zero ? _paginationOption.DefaultPageNumber : paginate.PageNumber;
            paginate.PageSize   = paginate.PageSize == decimal.Zero ? _paginationOption.DefaultPageSize : paginate.PageSize;
            var propertyExpression = BuildPropertyExpression(propertyRequest);
            var propertyList       = await _repository.GetAllAsync(propertyExpression, o => o.OrderBy(s => s.Name), include : BuildPropertyIncludes);

            return(PagedList <PropertyListDto> .Create(propertyList.Select <Property, PropertyListDto>(p => p).ToList(), propertyList.Count(), paginate.PageNumber, paginate.PageSize));
        }