public async Task <IActionResult> Administration() { var user = await this.userManager.GetUserAsync(this.User); if (!user.IsAdmin) { return(this.NotFound()); } IEnumerable <PlaceViewModel> places = this.placesService.GetAll <PlaceViewModel>().ToList(); var viewModel = new ListPlaceViewModel { Places = places, }; if (viewModel == null) { return(this.NotFound()); } foreach (var place in viewModel.Places) { if (place.Reviews.Count > 0) { place.Rating = (int)place.Reviews.Select(x => x.Rating).Average(); } else { place.Rating = 0; } } return(this.View(viewModel)); }
public IActionResult ShowAllPlaces(int?cityId, int?guestNumber, string?dates, string?sortBy, string?categoryName, int page = 1) { var cities = this.citiesService.GetAll <CityDropDownViewModel>(); var numbers = Enumerable.Range(1, 30).ToList(); IEnumerable <GuestNumberDropDownViewModel> guestNumbers = numbers.Select(x => new GuestNumberDropDownViewModel { Id = x, Name = x.ToString() }); IEnumerable <PlaceViewModel> places = this.placesService.GetAll <PlaceViewModel>().ToList(); if (dates != null) { string[] splitDates = dates.Split(" - "); DateTime startDate = DateTime.Parse(splitDates[0]); DateTime endDate = DateTime.Parse(splitDates[1]); places = places.Where(p => this.CheckDates(startDate, endDate, p.Reservations.OrderBy(r => r.StartDate).ToList())); } if (categoryName != null) { places = places.Where(x => x.CategoryName == categoryName); } if (cityId != null && cityId != 0) { places = places.Where(x => x.CityId == cityId); } if (guestNumber != null && guestNumber != 0) { places = places.Where(x => x.MaxGuest >= guestNumber); } if (sortBy != null && sortBy != "id") { if (sortBy == "desc") { places = places.OrderBy(p => p.PriceByNight); } else { places = places.OrderByDescending(p => p.PriceByNight); } } var viewModel = new ListPlaceViewModel { Places = places, Categories = this.categoriesService.GetAll <IndexCategoryViewModel>(), Cities = cities, GuestNumbers = guestNumbers, }; if (viewModel == null) { return(this.NotFound()); } foreach (var place in viewModel.Places) { if (place.Reviews.Count > 0) { place.Rating = (int)place.Reviews.Select(x => x.Rating).Average(); } else { place.Rating = 0; } } //viewModel.CardPlaces = this.placesService.GetByCategoryId<CardPlaceViewModel>(viewModel.Id, PlacesPerPage, (page - 1) * PlacesPerPage); var count = viewModel.Places.Count(); //this.placesService.GetCountById(viewModel.Id); viewModel.PagesCount = (int)Math.Ceiling((double)count / PlacesPerPage); if (viewModel.PagesCount == 0) { viewModel.PagesCount = 1; } viewModel.CurrentPage = page; return(this.View(viewModel)); }