コード例 #1
0
        public async Task <ActionResult <ICollection <PlaceListModel> > > GetPlaces(PlaceFilterInputModel input)
        {
            var result = await this.placeService.GetPlaces(input);

            var placesCount = this.placeService.GetCount(input);

            return(Ok(new { result, placesCount }));
        }
コード例 #2
0
ファイル: PlaceService.cs プロジェクト: MartinMilanov/ListIt
        public async Task <ICollection <PlaceListModel> > GetPlaces(PlaceFilterInputModel input)
        {
            var query = this.FilterPlaces(input);

            var listing = await query
                          .Skip(input.Skip)
                          .Take(input.Take)
                          .To <PlaceListModel>()
                          .ToListAsync();

            return(listing);
        }
コード例 #3
0
        public async Task <IActionResult> Listing(string city, string searchWord)
        {
            var input = new PlaceFilterInputModel()
            {
                Take       = 4,
                Skip       = 0,
                City       = city,
                SearchWord = searchWord
            };

            this.ViewData["searchWord"]  = searchWord;
            this.ViewData["city"]        = city;
            this.ViewData["placesCount"] = this.placeService.GetCount(input);

            var listing = await this.placeService.GetPlaces(input);

            return(this.View(listing));
        }
コード例 #4
0
ファイル: PlaceService.cs プロジェクト: MartinMilanov/ListIt
        private IQueryable <Place> FilterPlaces(PlaceFilterInputModel input)
        {
            var query = this.context.Places
                        .Include(x => x.PlacePerks)
                        .ThenInclude(x => x.Perk)
                        .Include(x => x.Reviews)
                        .AsQueryable();

            if (!String.IsNullOrWhiteSpace(input.SearchWord))
            {
                query = query
                        .Where(x => x.Name.ToLower().Contains(input.SearchWord.ToLower()));
            }
            if (!String.IsNullOrWhiteSpace(input.City))
            {
                query = query
                        .Where(x => x.City.ToLower().Contains(input.City.ToLower()));
            }
            if (input.Category != 0)
            {
                query = query
                        .Where(x => x.Category == input.Category);
            }
            if (input.PriceRange != 0)
            {
                query = query
                        .Where(x => x.PriceRange == input.PriceRange);
            }
            if (input.Perks != null)
            {
                if (input.Perks.Count > 0)
                {
                    foreach (var item in input.Perks)
                    {
                        query = query
                                .Where(x => x.PlacePerks.Any(x => x.Perk.Name == item));
                    }
                }
            }

            return(query);
        }
コード例 #5
0
ファイル: PlaceService.cs プロジェクト: MartinMilanov/ListIt
        public int GetCount(PlaceFilterInputModel input)
        {
            var query = this.FilterPlaces(input);

            return(query.Count());
        }