public async void GetApartmentRoleTest(string role, int expectedCount)
        {
            //Arrange
            _controller.ControllerContext = GetMockedControllerContext(role);
            var aptParams = new ApartmentParameters();

            //Act
            var response = await _controller.GetApartment(aptParams);

            //Assert
            Assert.Equal(expectedCount, response.Value.Count());
        }
        public async void GetApartmentFilterTest(ApartmentParameters aptParams, int[] expectedIds)
        {
            //Arrange
            _controller.ControllerContext = GetMockedControllerContext(Role.Admin);

            //Act
            var response = await _controller.GetApartment(aptParams);

            //Assert
            Assert.Equal(expectedIds.Length, response.Value.Count());
            foreach (int id in expectedIds)
            {
                Assert.Contains(response.Value, x => x.Id == id);
            }
        }
        public async Task <ActionResult <IEnumerable <Apartment> > > GetApartment([FromQuery] ApartmentParameters apartmentParameters)
        {
            var list = _context.Apartments.Where(
                a => a.Area <= (apartmentParameters.MaxArea ?? int.MaxValue) &&
                a.Area >= (apartmentParameters.MinArea ?? int.MinValue) &&
                a.Rooms <= (apartmentParameters.MaxRooms ?? int.MaxValue) &&
                a.Rooms >= (apartmentParameters.MinRooms ?? int.MinValue) &&
                a.MonthlyPrice <= (apartmentParameters.MaxPrice ?? decimal.MaxValue) &&
                a.MonthlyPrice >= (apartmentParameters.MinPrice ?? decimal.MinValue)
                );

            if (User.IsInRole(Role.Client))
            {
                list = list.Where(a => !a.IsRented);
            }
            return(await list.ToListAsync());
        }