public IActionResult Packages()
        {
            //Create the vm
            DisplayAllPackagesViewModel vm = new DisplayAllPackagesViewModel
            {
                //Packages = _repoPackage.GetAll()
                Packages = _repoPackage.Query(p => p.Availability == true)
            };

            return(View(vm));
        }
Example #2
0
        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));
        }
Example #3
0
        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));
        }