コード例 #1
0
        public async Task <IEnumerable <Flat> > Search(FlatSearchQuery query)
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            IQueryable <Flat> flats = null;

            var user = await _userService.CurrentUser;

            if (user == null)
            {
                flats = _context.Flats.Where(x => !x.IsSold);
            }
            else
            {
                flats = _context.Flats.Where(x => !x.IsSold || x.OwnerId == user.Id);
            }

            if (query.MinNumberOfRooms.HasValue)
            {
                flats = flats.Where(x => x.NumberOfRooms >= query.MinNumberOfRooms.Value);
            }

            if (query.MaxNumberOfRooms.HasValue)
            {
                flats = flats.Where(x => x.NumberOfRooms <= query.MaxNumberOfRooms.Value);
            }

            if (query.MinArea.HasValue)
            {
                flats = flats.Where(x => x.Area >= query.MinArea.Value);
            }

            if (query.MaxArea.HasValue)
            {
                flats = flats.Where(x => x.Area <= query.MaxArea.Value);
            }

            if (query.MinPrice.HasValue)
            {
                flats = flats.Where(x => x.Price >= query.MinPrice.Value);
            }

            if (query.MaxPrice.HasValue)
            {
                flats = flats.Where(x => x.Price <= query.MaxPrice.Value);
            }

            if (query.HasBalcony.HasValue && query.HasBalcony.Value)
            {
                flats = flats.Where(x => x.HasBalcony);
            }

            return(await flats.ToListAsync());
        }
コード例 #2
0
 public async Task <IActionResult> Search([FromBody] FlatSearchQuery query)
 {
     return(Json(await _flatService.Search(query)));
 }