public IActionResult Packages() { //Create the vm DisplayAllPackagesViewModel vm = new DisplayAllPackagesViewModel { //Packages = _repoPackage.GetAll() Packages = _repoPackage.Query(p => p.Availability == true) }; return(View(vm)); }
public IActionResult Index(DisplayAllPackagesViewModel vm) { if (ModelState.IsValid) { // ----------- You can only filter Active Packages - only customer can ------- // IEnumerable <Package> packages = new List <Package>(); packages = _packageRepo.Query(p => p.IsActive == true); //vm.Packages = _packageRepo.GetAll(); if (vm.Location != null) { packages = packages.Where(p => p.Location.ToLower().Contains(vm.Location.ToLower())); } if (vm.MinPrice != null) { packages = packages.Where(p => p.Price >= Double.Parse(vm.MinPrice)); } if (vm.MaxPrice != null) { packages = packages.Where(p => p.Price <= Double.Parse(vm.MaxPrice)); } // -------- Packages gathered -> collect Ratings and Feedbacks ---------- List <double> packageRatings = new List <double>(); List <int> packageNumberOfReviews = new List <int>(); foreach (var item in packages) { //IEnumerable<Feedback> feedbacks = _feedbackRepo.Query(f => f.PackageId == item.PackageId); double actualRating = _feedbackRepo.Query(f => f.PackageId == item.PackageId).Select(f => f.Rating).DefaultIfEmpty(0).Average(); packageRatings.Add(actualRating); int actualNumberOfReviews = _feedbackRepo.Query(f => f.PackageId == item.PackageId).Select(f => f.FeedbackId).Count(); packageNumberOfReviews.Add(actualNumberOfReviews); } vm.Packages = packages; vm.Ratings = packageRatings; vm.NumberOfReviews = packageNumberOfReviews; } ; return(View(vm)); }
public async Task <IActionResult> Index(string request, string location) { if (!HttpContext.User.Identity.IsAuthenticated) { } IEnumerable <Package> packages = new List <Package>(); if (request == null || request == "" || request == "GetActive") { packages = _packageRepo.Query(p => p.IsActive == true); } else if (request == "GetDiscontinued") { packages = _packageRepo.Query(p => p.IsActive == false); } else if (request == "GetAll") { packages = _packageRepo.GetAll(); } if (location != null && location != "") { packages = packages.Where(p => p.Location.ToLower().Contains(location.ToLower())); } if (HttpContext.User.Identity.IsAuthenticated) { string userName = HttpContext.User.Identity.Name; ApplicationUser user = await _userManagerService.FindByNameAsync(userName); bool result = await _userManagerService.IsInRoleAsync(user, "Provider"); if (result) { Provider specficProvider = _providerRepo.GetSingle(p => p.UserId == user.Id); packages = packages.Where(p => p.ProviderId == specficProvider.ProviderId); } } // -------- Packages gathered -> collect Ratings and Feedbacks ---------- List <double> packageRatings = new List <double>(); List <int> packageNumberOfReviews = new List <int>(); foreach (var item in packages) { /*IEnumerable<Feedback> feedbacks = _feedbackRepo.Query(f => f.PackageId == item.PackageId);*/ double actualRating = _feedbackRepo.Query(f => f.PackageId == item.PackageId).Select(f => f.Rating).DefaultIfEmpty(0).Average(); packageRatings.Add(actualRating); int actualNumberOfReviews = _feedbackRepo.Query(f => f.PackageId == item.PackageId).Select(f => f.FeedbackId).Count(); packageNumberOfReviews.Add(actualNumberOfReviews); } DisplayAllPackagesViewModel vm = new DisplayAllPackagesViewModel { Location = location, MinPrice = null, MaxPrice = null, Packages = packages, Ratings = packageRatings, NumberOfReviews = packageNumberOfReviews }; return(View(vm)); }