Example #1
0
        public IEnumerable <T> GetAll <T>(LakesAllInputModel input)
        {
            var query = this.lakeRepository.All().AsQueryable();

            switch (input.Type)
            {
            case "Free":
                query = query.Where(l => l.IsFree);
                break;

            case "Paid":
                query = query.Where(l => !l.IsFree);
                break;
            }

            switch (input.Order)
            {
            case "Rating ASC":
                query = query.OrderBy(x => x.LakeVotes.Average(lv => lv.Vote.Value));
                break;

            case "Rating DESC":
                query = query.OrderByDescending(x => x.LakeVotes.Average(lv => lv.Vote.Value));
                break;

            case "Trophies Count ASC":
                query = query.OrderBy(x => x.Trophies.Count());
                break;

            case "Trophies Count DESC":
                query = query.OrderByDescending(x => x.Trophies.Count());
                break;
            }

            if (!string.IsNullOrEmpty(input.Search))
            {
                query = query.Where(l => l.Name.ToLower().Contains(input.Search.ToLower()));
            }

            return(query
                   .Skip((input.Page - 1) * GlobalConstants.LakesCountPerPage)
                   .Take(GlobalConstants.LakesCountPerPage)
                   .To <T>()
                   .ToList());
        }
Example #2
0
        public IActionResult All(LakesAllInputModel input)
        {
            if (input.Page <= 0)
            {
                return(this.NotFound());
            }

            var lakes = this.lakesService.GetAll <LakeInListViewModel>(input);

            var lakesCount = input.Type switch
            {
                "Free" => this.lakesService.GetFreeCount(),
                "Paid" => this.lakesService.GetPaidCount(),
                _ => this.lakesService.GetCount(),
            };

            if (!string.IsNullOrEmpty(input.Search))
            {
                lakesCount = this.lakesService.GetSearchCount(input.Type, input.Search);
            }

            var viewModel = new LakesListViewModel()
            {
                ItemsPerPage = GlobalConstants.LakesCountPerPage,
                ItemsCount   = lakesCount,
                PageNumber   = input.Page,
                Lakes        = lakes,
                Search       = input.Search,
                CurrStatus   = input.Type ?? "Type",
                StatusTypes  = new string[] { "Type", "Free", "Paid" },
                CurrOrder    = input.Order ?? "Order By",
                OrderTypes   = new string[] { "Order By", "Rating ASC", "Rating DESC", "Trophies Count ASC", "Trophies Count DESC" },
            };

            return(this.View(viewModel));
        }