コード例 #1
0
ファイル: HomeController.cs プロジェクト: prince272/neimart
        public async Task <IActionResult> Index()
        {
            var seller = await HttpContext.GetMemberAsync();

            var model = new DashboardModel
            {
                ProductListEvaluation  = await _productService.EvaluateAsync(new ProductFilter { SellerId = seller.Id }),
                CategoryListEvaluation = await _categoryService.EvaluateAsync(new CategoryFilter { SellerId = seller.Id }),
                BannerListEvaluation   = await _bannerService.EvaluateAsync(new BannerFilter { SellerId = seller.Id }),
                ReviewListEvaluation   = await _reviewService.EvaluateAsync(new ReviewFilter { SellerId = seller.Id })
            };

            return(View(model));
        }
コード例 #2
0
        public async Task <IActionResult> PrepareProductDetailsView(Product product, int page)
        {
            var seller = await HttpContext.GetSellerAsync();

            var customer = await HttpContext.GetMemberAsync();

            var model = new ProductModel();
            await _appService.PrepareModelAsync(model, product);

            var reviewFilter = new ReviewFilter
            {
                Approved  = true,
                SellerId  = seller.Id,
                ProductId = product.Id
            };
            var reviewEvaluation = await _reviewService.EvaluateAsync(reviewFilter);

            model.ReviewListModel = new ReviewListModel
            {
                Filter     = reviewFilter,
                Evaluation = reviewEvaluation
            };
            model.ReviewEvaluation = reviewEvaluation;

            if (customer != null)
            {
                model.IsAddedToCart = await _cartService.GetQuery(new CartFilter { CustomerId = customer.Id, SellerId = seller.Id, ProductId = product.Id, Type = CartType.Cart }).AnyAsync();

                model.IsAddedToWishlist = await _cartService.GetQuery(new CartFilter { CustomerId = customer.Id, SellerId = seller.Id, ProductId = product.Id, Type = CartType.Wishlist }).AnyAsync();
            }

            var reviews = await _reviewService.GetQuery(reviewFilter).ToPageableAsync(page, _appSettings.PageDefaultSize);

            await _appService.PrepareModelAsync(model.ReviewListModel, reviews);

            return(View("ProductDetails", model));
        }
コード例 #3
0
        public async Task <IActionResult> Stores(int page, UserFilter filter)
        {
            filter.StoreAccess     = StoreAccess.Approved;
            filter.StoreSetup      = true;
            filter.StorePlanActive = true;

            var users = await _userService.GetQuery(filter)
                        .ToPageableAsync(page, _appSettings.PageDefaultSize);

            var model = new UserListModel
            {
                Filter = filter
            };

            await _appService.PrepareModelAsync(model, users,
                                                prepareChildModel : async(userModel, user) =>
            {
                userModel.ReviewEvaluation = await _reviewService.EvaluateAsync(new ReviewFilter {
                    SellerId = user.Id, Approved = true,
                });
            });

            return(View(nameof(Stores), model));
        }
コード例 #4
0
        public async Task PrepareModelAsync(ProductListModel model, IPageable <Product> products, User seller, User customer = null)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }
            if (products == null)
            {
                throw new ArgumentNullException(nameof(products));
            }

            foreach (var product in products)
            {
                var productModel = new ProductModel();

                await PrepareModelAsync(productModel, product);

                if (customer != null)
                {
                    productModel.IsAddedToCart = await _cartService.GetQuery(new CartFilter { CustomerId = customer.Id, SellerId = seller.Id, ProductId = product.Id, Type = CartType.Cart }).AnyAsync();

                    productModel.IsAddedToWishlist = await _cartService.GetQuery(new CartFilter { CustomerId = customer.Id, SellerId = seller.Id, ProductId = product.Id, Type = CartType.Wishlist }).AnyAsync();
                }

                // NOTE: "StoreController.cs" with the line number 299 for code changes.
                productModel.ReviewEvaluation = await _reviewService.EvaluateAsync(new ReviewFilter
                {
                    Approved  = true,
                    SellerId  = seller.Id,
                    ProductId = product.Id
                });

                model.Items.Add(productModel);
            }

            model.LowestMinPrice  = 0;
            model.HighestMaxPrice = (int)Math.Min(_appSettings.CurrencyMaxValue, int.MaxValue);

            model.SortOptions.AddRange(SelectListHelper.GetEnumSelectList(selectedEnum: model.Filter.Sort, defaultText: "Any"));
            model.StockOptions.AddRange(SelectListHelper.GetEnumSelectList(selectedEnum: model.Filter.Stock, defaultText: "All"));
            model.PublishedOptions.AddRange(SelectListHelper.GetBoolSelectList("Published", "Unpublished", selectedBool: model.Filter.Published, defaultText: "All"));

            model.RatingOptions.AddRange(SelectListHelper.GetSelectList(Enumerable.Range(1, 4).Reverse(),
                                                                        (x) => new SelectListItem <int>(text: $"{"star".ToQuantity(x)} or more", value: x.ToString(), selected: x == model.Filter.Rating)));

            model.DiscountOptions.AddRange(SelectListHelper.GetSelectList(Enumerable.Range(1, 4).Select(x => x * 20).Reverse(),
                                                                          (x) => new SelectListItem <int>(text: $"{x}% or more", value: x.ToString(), selected: x == model.Filter.Discount)));

            var categories = await _categoryService.ListAsync(new CategoryFilter()
            {
                SellerId = seller.Id, Published = true
            });

            model.CategoryOptions.AddRange(SelectListHelper.GetSelectList(categories, x => new SelectListItem <Category>(text: x.Name, value: x.Slug, x.Slug == model.Filter.Search), defaultText: "All"));

            model.Page       = products.Page;
            model.PageSize   = products.PageSize;
            model.PageFrom   = products.PageFrom;
            model.PageTo     = products.PageTo;
            model.TotalPages = products.TotalPages;
            model.TotalItems = products.TotalItems;
        }