Пример #1
0
        public JsonResult LoadMoreReviews(int productNumber, int supplierNumber, int size)
        {
            using (FreeMarketEntities db = new FreeMarketEntities())
            {
                ProductReviewsCollection model = new ProductReviewsCollection();

                model.ProductNumber  = productNumber;
                model.SupplierNumber = supplierNumber;

                List <ProductReview> collection = db.ProductReviews
                                                  .Where(c => c.ProductNumber == productNumber && c.SupplierNumber == supplierNumber && c.Approved == true)
                                                  .OrderByDescending(p => p.ReviewId)
                                                  .Skip(size)
                                                  .Take(size)
                                                  .ToList();

                model.Reviews = collection;

                int modelCount = db.ProductReviews
                                 .Where(c => c.ProductNumber == productNumber && c.SupplierNumber == supplierNumber && c.Approved == true)
                                 .Count();

                if (model.Reviews.Any())
                {
                    string modelString = RenderRazorViewToString("_RatingPartialLoadMore", model);
                    return(Json(new { ModelString = modelString, ModelCount = modelCount }));
                }
                return(Json(model));
            }
        }
Пример #2
0
        public ActionResult GetAverageRating(int productNumber, int supplierNumber)
        {
            string toReturn      = "";
            double?averageRating = ProductReviewsCollection.CalculateAverageRatingOnly(productNumber, supplierNumber);

            if (averageRating == null || averageRating == 0)
            {
                toReturn = "No reviews written yet.";
            }
            else
            {
                toReturn = averageRating.ToString() + " / 3";
            }

            return(Content(toReturn));
        }
        public ActionResult ViewProduct(int id, int supplierNumber, int quantity)
        {
            string       userId = User.Identity.GetUserId();
            ShoppingCart cart   = GetCartFromSession(userId);

            ViewProductViewModel model = new ViewProductViewModel(id, supplierNumber, quantity, cart.Order.OrderNumber);

            if (model == null)
            {
                return(RedirectToAction("Departments", "Product"));
            }

            model.Reviews = ProductReviewsCollection.GetReviewsOnly(id, supplierNumber, 0);

            return(View("ViewProduct", model));
        }
Пример #4
0
        public ActionResult GetReviews(int productNumber, int supplierNumber, int size = 4)
        {
            ProductReviewsCollection reviews = ProductReviewsCollection.GetReviewsOnly(productNumber, supplierNumber, size);

            return(PartialView("_RatingPartial", reviews));
        }
        public ActionResult AddToCart(ViewProductViewModel viewModel)
        {
            // Validate
            if (viewModel.ProductNumber == 0 || viewModel.SupplierNumber == 0)
            {
                TempData["errorMessage"] = "Error: We could not add the item to the cart.";
                return(JavaScript("window.location = window.location.href;"));
            }

            if (ModelState.IsValid)
            {
                string       userId        = User.Identity.GetUserId();
                bool         anonymousUser = (userId == null);
                ShoppingCart cart          = GetCartFromSession(userId);

                if (cart.Order.OrderStatus == "Locked")
                {
                    TempData["errorMessage"] = "Your cart is locked because you are in the process of checking out. Open your cart to complete or cancel the checkout process.";

                    if (Request.IsAjaxRequest())
                    {
                        return(JavaScript("window.location = window.location.href;"));
                    }
                    else
                    {
                        return(RedirectToAction("Cart", "ShoppingCart"));
                    }
                }

                // CheckQuantity
                if (viewModel.CustodianQuantityOnHand < viewModel.Quantity)
                {
                    viewModel.SetInstances(viewModel.ProductNumber, viewModel.SupplierNumber);

                    if (Request.IsAjaxRequest())
                    {
                        return(PartialView("_ViewProductModal", viewModel));
                    }
                    else
                    {
                        viewModel.Reviews = ProductReviewsCollection.GetReviewsOnly(viewModel.ProductNumber, viewModel.SupplierNumber, 0);
                        return(View("ViewProduct", viewModel));
                    }
                }

                FreeMarketObject result;
                result = cart.AddItemFromProduct(viewModel.ProductNumber, viewModel.SupplierNumber, viewModel.Quantity, viewModel.CustodianNumber, viewModel.SelectedPackageType);

                if (result.Result == FreeMarketResult.Success)
                {
                    // New item added
                    if (!string.IsNullOrEmpty(result.Message))
                    {
                        TempData["message"] = result.Message;
                    }
                    else
                    if (!string.IsNullOrEmpty(result.Message))
                    {
                        TempData["errorMessage"] = result.Message;
                    }
                }

                if (Request.IsAjaxRequest())
                {
                    return(JavaScript("window.location = window.location.href;"));
                }
                else
                {
                    viewModel.Reviews = ProductReviewsCollection.GetReviewsOnly(viewModel.ProductNumber, viewModel.SupplierNumber, 0);
                    return(RedirectToAction("Cart", "ShoppingCart"));
                }
            }
            // Validation Error
            else
            {
                // Prepare
                viewModel.SetInstances(viewModel.ProductNumber, viewModel.SupplierNumber);

                if (Request.IsAjaxRequest())
                {
                    return(PartialView("_ViewProductModal", viewModel));
                }
                else
                {
                    viewModel.Reviews = ProductReviewsCollection.GetReviewsOnly(viewModel.ProductNumber, viewModel.SupplierNumber, 0);
                    return(View("ViewProduct", viewModel));
                }
            }
        }