コード例 #1
0
ファイル: EstatesController.cs プロジェクト: myestate/Estate
        public async Task <IActionResult> GetEstates([FromQuery] EstateParams estateParams)
        {
            var estates = await _repo.GetEstates(estateParams);

            var estatesToReturn = _mapper.Map <IEnumerable <EstateForListDto> >(estates);

            Response.AddPagination(estates.CurrentPage, estates.PageSize, estates.TotalCount, estates.TotalPages);

            return(Ok(estatesToReturn));
        }
コード例 #2
0
        public void GetEstates_Pagination_OneAdToPage()
        {
            // Arrange
            var estateRepo = new EstatesRepository(_context);

            EstateParams estateParams = new EstateParams()
            {
                PageSize = 1
            };
            // Act
            var result = estateRepo.GetEstates(estateParams);

            // Assert
            Assert.IsTrue(result.Result.Count == 1);
        }
コード例 #3
0
        public void GetEstates_Pagination_OneAdToPage_SecondPage()
        {
            // Arrange
            var          estateRepo     = new EstatesRepository(_context);
            EstateParams estateParams   = new EstateParams();
            var          resultExpected = estateRepo.GetEstates(estateParams)
                                          .Result
                                          .ToList();

            estateParams.PageSize   = 1;
            estateParams.PageNumber = 2;
            // Act
            var result = estateRepo.GetEstates(estateParams);

            // Assert
            Assert.AreEqual(resultExpected[1], result.Result[0]);
        }
コード例 #4
0
        public void GetEstates_Filtering_ByStreet()
        {
            // Arrange
            var estateRepo = new EstatesRepository(_context);

            EstateParams estateParams   = new EstateParams();
            var          resultExpected = estateRepo.GetEstates(estateParams)
                                          .Result
                                          .Where(e => e.Street == "Shevchenka")
                                          .ToList();

            estateParams.Street = "Shevchenka";
            // Act
            var result = estateRepo.GetEstates(estateParams);

            // Assert
            CollectionAssert.AreEqual(resultExpected, result.Result);
        }
コード例 #5
0
        public void GetEstates_Filtering_ByCountry()
        {
            // Arrange
            var estateRepo = new EstatesRepository(_context);

            EstateParams estateParams   = new EstateParams();
            var          resultExpected = estateRepo.GetEstates(estateParams)
                                          .Result
                                          .Where(e => e.Country == "Ukraine")
                                          .ToList();

            estateParams.Country = "Ukraine";
            // Act
            var result = estateRepo.GetEstates(estateParams);

            // Assert
            CollectionAssert.AreEqual(resultExpected, result.Result);
        }
コード例 #6
0
        public void GetEstates_Filtering_OrderBySquareDown()
        {
            // Arrange
            var estateRepo = new EstatesRepository(_context);

            EstateParams estateParams   = new EstateParams();
            var          resultExpected = estateRepo.GetEstates(estateParams)
                                          .Result
                                          .OrderByDescending(e => e.Square)
                                          .ToList();

            estateParams.OrderBy = "squareDown";
            // Act
            var result = estateRepo.GetEstates(estateParams);

            // Assert
            CollectionAssert.AreEqual(resultExpected, result.Result);
        }
コード例 #7
0
        public void GetEstates_Filtering_OrderByRoomsUp()
        {
            // Arrange
            var estateRepo = new EstatesRepository(_context);

            EstateParams estateParams   = new EstateParams();
            var          resultExpected = estateRepo.GetEstates(estateParams)
                                          .Result
                                          .OrderBy(e => e.Rooms)
                                          .ToList();

            estateParams.OrderBy = "roomsUp";
            // Act
            var result = estateRepo.GetEstates(estateParams);

            // Assert
            CollectionAssert.AreEqual(resultExpected, result.Result);
        }
コード例 #8
0
        public void GetEstates_Filtering_TypeSelling()
        {
            // Arrange
            var estateRepo = new EstatesRepository(_context);

            EstateParams estateParams = new EstateParams()
            {
                Type = "Selling"
            };
            var resultExpected = estateRepo.GetEstates(estateParams)
                                 .Result
                                 .Where(e => e.AdType == "Selling")
                                 .ToList();
            // Act
            var result = estateRepo.GetEstates(estateParams);

            // Assert
            CollectionAssert.AreEqual(resultExpected, result.Result);
        }
コード例 #9
0
        public void GetEstates_Filtering_FloorsMinMax()
        {
            // Arrange
            var estateRepo = new EstatesRepository(_context);

            EstateParams estateParams   = new EstateParams();
            var          resultExpected = estateRepo.GetEstates(estateParams)
                                          .Result
                                          .Where(e => e.Floors >= 1 && e.Floors <= 2)
                                          .ToList();

            estateParams.MinFloors = 1;
            estateParams.MaxFloors = 2;
            // Act
            var result = estateRepo.GetEstates(estateParams);

            // Assert
            CollectionAssert.AreEqual(resultExpected, result.Result);
        }
コード例 #10
0
        public void GetEstates_Filtering_SquareMinMax()
        {
            // Arrange
            var estateRepo = new EstatesRepository(_context);

            EstateParams estateParams   = new EstateParams();
            var          resultExpected = estateRepo.GetEstates(estateParams)
                                          .Result
                                          .Where(e => e.Square >= 50 && e.Square <= 100)
                                          .ToList();

            estateParams.MinSquare = 50;
            estateParams.MaxSquare = 100;
            // Act
            var result = estateRepo.GetEstates(estateParams);

            // Assert
            CollectionAssert.AreEqual(resultExpected, result.Result);
        }
コード例 #11
0
ファイル: EstatesRepository.cs プロジェクト: myestate/Estate
        public async Task <PagedList <Domain.Entities.Estate> > GetEstates(EstateParams estateParams)
        {
            var estates = _context.Estates.Include(p => p.Photos).OrderByDescending(e => e.Created).AsQueryable();

            if (!string.IsNullOrEmpty(estateParams.Type) && estateParams.Type != "All")
            {
                estates = estates.Where(e => e.AdType == estateParams.Type);
            }

            if (!string.IsNullOrEmpty(estateParams.Country) && estateParams.Country != "All")
            {
                estates = estates.Where(e => e.Country == estateParams.Country);
            }

            if (!string.IsNullOrEmpty(estateParams.City) && estateParams.City != "All")
            {
                estates = estates.Where(e => e.City == estateParams.City);
            }

            if (!string.IsNullOrEmpty(estateParams.Street) && estateParams.Street != "All")
            {
                estates = estates.Where(e => e.Street == estateParams.Street);
            }

            if (estateParams.OwnerId != -1)
            {
                estates = estates.Where(e => e.OwnerId == estateParams.OwnerId);
            }

            if (estateParams.MinPrice != 0 || estateParams.MaxPrice != 5000000)
            {
                estates = estates.Where(e => e.Price >= estateParams.MinPrice && e.Price <= estateParams.MaxPrice);
            }

            if (estateParams.MinSquare != 0 || estateParams.MaxSquare != 1000)
            {
                estates = estates.Where(e => e.Square >= estateParams.MinSquare && e.Square <= estateParams.MaxSquare);
            }

            if (estateParams.MinRooms != 1 || estateParams.MaxRooms != 10)
            {
                estates = estates.Where(e => e.Rooms >= estateParams.MinRooms && e.Rooms <= estateParams.MaxRooms);
            }

            if (estateParams.MinFloors != 1 || estateParams.MaxFloors != 50)
            {
                estates = estates.Where(e => e.Floors >= estateParams.MinFloors && e.Floors <= estateParams.MaxFloors);
            }

            if (!string.IsNullOrEmpty(estateParams.OrderBy))
            {
                switch (estateParams.OrderBy)
                {
                case "priceUp":
                {
                    estates = estates.OrderBy(e => e.Price);
                    break;
                };

                case "priceDown":
                {
                    estates = estates.OrderByDescending(e => e.Price);
                    break;
                };

                case "squareUp":
                {
                    estates = estates.OrderBy(e => e.Square);
                    break;
                };

                case "squareDown":
                {
                    estates = estates.OrderByDescending(e => e.Square);
                    break;
                };

                case "roomsUp":
                {
                    estates = estates.OrderBy(e => e.Rooms);
                    break;
                };

                case "roomsDown":
                {
                    estates = estates.OrderByDescending(e => e.Rooms);
                    break;
                };

                default:
                {
                    estates = estates.OrderByDescending(e => e.Created);
                    break;
                }
                }
            }

            return(await PagedList <Domain.Entities.Estate> .CreateAsync(estates, estateParams.PageNumber, estateParams.PageSize));
        }