示例#1
0
        public CategoryProductsViewModel GetHeading(CategoryProductsViewModel viewModel)
        {
            viewModel.ProductHeading  = "Produkt";
            viewModel.CategoryHeading = "Kategori";
            viewModel.PriceHeading    = "Pris";

            if (viewModel.ProductState == "ProduktAsc")
            {
                viewModel.ProductHeading = "Produkt ▲";
            }
            if (viewModel.ProductState == "ProduktDesc")
            {
                viewModel.ProductHeading = "Produkt ▼";
            }
            if (viewModel.CategoryState == "KategoriAsc")
            {
                viewModel.CategoryHeading = "Kategori ▲";
            }
            if (viewModel.CategoryState == "KategoriDesc")
            {
                viewModel.CategoryHeading = "Kategori ▼";
            }
            if (viewModel.PriceState == "PrisAsc")
            {
                viewModel.PriceHeading = "Pris ▲";
            }
            if (viewModel.PriceState == "PrisDesc")
            {
                viewModel.PriceHeading = "Pris ▼";
            }

            return(viewModel);
        }
示例#2
0
        public ActionResult Departments()
        {
            var productCategories = _context.ProductCategories.ToList();

            productCategories = productCategories.OrderBy(x => x.Priority).ToList();

            CategoryProductsViewModel model = new CategoryProductsViewModel();

            List <Shaska.ViewModel.CategoryProductsViewModel.CategoryProductViewModel> cp = new List <CategoryProductsViewModel.CategoryProductViewModel>();

            for (int a = 0; a < productCategories.Count; a++)
            {
                int            id             = productCategories[a].Id;
                List <Product> listofproducts = _context.Products.Where(c => c.ProductCategoryId == id).ToList();
                for (int c1 = 0; c1 < listofproducts.Count; c1++)
                {
                    id = listofproducts[c1].ProductId;
                    listofproducts[c1].Image = _context.Images.Where(c => c.ProductId == id).ToList();
                }

                Shaska.ViewModel.CategoryProductsViewModel.CategoryProductViewModel categoryproduct = new Shaska.ViewModel.CategoryProductsViewModel.CategoryProductViewModel()
                {
                    ProductCategory = productCategories[a],
                    Products        = listofproducts
                };
                cp.Add(categoryproduct);
            }

            model.CategoriesProductViewModel = cp;

            return(View(model));
        }
示例#3
0
        private CategoryProductsViewModel SortProducts(CategoryProductsViewModel viewModel, string state)
        {
            if (state == null || state == "Produkt" || state == "ProduktDesc")
            {
                viewModel.Products     = viewModel.Products.OrderBy(r => r.Name).ToList();
                viewModel.ProductState = "ProduktAsc";
            }
            else if (state == "ProduktAsc")
            {
                viewModel.Products     = viewModel.Products.OrderByDescending(r => r.Name).ToList();
                viewModel.ProductState = "ProduktDesc";
            }
            else if (state == "Kategori" || state == "KategoriDesc")
            {
                viewModel.Products      = viewModel.Products.OrderBy(r => r.Category).ToList();
                viewModel.CategoryState = "KategoriAsc";
            }
            else if (state == "KategoriAsc")
            {
                viewModel.Products      = viewModel.Products.OrderByDescending(r => r.Category).ToList();
                viewModel.CategoryState = "KategoriDesc";
            }
            else if (state == "Pris" || state == "PrisDesc")
            {
                viewModel.Products   = viewModel.Products.OrderBy(r => r.Price).ToList();
                viewModel.PriceState = "PrisAsc";
            }
            else if (state == "PrisAsc")
            {
                viewModel.Products   = viewModel.Products.OrderByDescending(r => r.Price).ToList();
                viewModel.PriceState = "PrisDesc";
            }

            return(viewModel);
        }
示例#4
0
        public CategoryProductsViewModel GetCategoryProducts(string q, int categoryId, int page = 1, int pageSize = 30)
        {
            var categoriesId = this.GetChildsId(categoryId);

            var products = this._productRepository.GetAll(p => categoriesId.Any(id => id == p.CurrentCategoryId)).Where(p => p.Display.Equals(true)).ToList();

            if (q != null)
            {
                products =
                    this._productRepository.GetAll(p => categoriesId.Any(id => id == p.CurrentCategoryId))
                    .Where(x => x.Name.ToLower().Contains(q.ToLower()))
                    .ToList();
            }

            if (q != null && q.Equals(string.Empty))
            {
                products = this._productRepository.GetAll(p => categoriesId.Any(id => id == p.CurrentCategoryId)).Where(p => p.Display.Equals(true)).ToList();
            }

            var categoryProducts = new CategoryProductsViewModel
            {
                Category = this._categoryRepository.GetById(categoryId),
                Products = new PagedList <Product>(products, page, pageSize),
                CategoryProductsCount = products.Count
            };

            return(categoryProducts);
        }
示例#5
0
        public ActionResult DeleteProducts(CategoryProductsViewModel data)
        {
            if (data.Products == null || data.Products.Count(x => x.Checked) == 0)
            {
                return(this.Json(new { status = "Error", message = StringResource.admin_ImportProductErrorNoItemChecked }));
            }

            this.repository.RemoveProductFromCategory(data.ParentCategoryId, data.Products.Where(x => x.Checked).Select(x => x.Id).ToList());

            return(this.Json(new { status = "success" }));
        }
示例#6
0
        public ActionResult ImportProducts(CategoryProductsViewModel data, Guid importPageId)
        {
            if (importPageId == data.ParentCategoryId)
            {
                return(this.Json(new { status = "Error", message = StringResource.admin_ImportProductErrorSameCategory }));
            }

            if (data.Products == null || data.Products.Count(x => x.Checked) == 0)
            {
                return(this.Json(new { status = "Error", message = StringResource.admin_ImportProductErrorNoItemChecked }));
            }

            this.repository.AssignProductsToCategory(data.Products.Where(x => x.Checked).Select(x => x.Id).ToList(), importPageId);

            return(this.Json(new { status = "success" }));
        }
示例#7
0
        public CategoryProductsViewModel GetProductsByCategoryName(string categoryName, string httpContextHost)
        {
            var listProductsDto = _productService.GetProductsByCategoryName(categoryName);

            foreach (var product in listProductsDto)
            {
                product.Url = $"https://{httpContextHost}/product/{product.Title.ToLower().Trim().Replace(" ", "-")}";
            }

            string formattedCategoryName = $"{char.ToUpper(categoryName[0])}{categoryName.Substring(1, categoryName.Length - 1)}";

            var model = new CategoryProductsViewModel()
            {
                CategoryName = formattedCategoryName,
                Products     = mapper.Map <List <ProductDTO>, List <CategoryProductItemViewMoel> >(listProductsDto)
            };

            return(model);
        }
示例#8
0
        //public IEnumerable<Product> GetProductsByCategoryID(int id)
        //{
        //    NorthwindEntities db = new NorthwindEntities();
        //    var query = from p in db.Products
        //                where p.CategoryID == id
        //                select p;

        //    var result = query.ToList();
        //    return result;
        //}

        public CategoryProductsViewModel GetProductsByCategoryID(int id)
        {
            NorthwindEntities db = new NorthwindEntities();
            var query            = from p in db.Products
                                   where p.CategoryID == id
                                   select new ProductViewModel
            {
                ProductID   = p.ProductID,
                ProductName = p.ProductName,
                UnitPrice   = p.UnitPrice
            };
            CategoryProductsViewModel result = new CategoryProductsViewModel();

            result.CategoryID   = id;
            result.CategoryName = db.Categories.Find(id).CategoryName;
            result.Products     = query.ToList();

            return(result);
        }
示例#9
0
        public IActionResult Products(int id, string state)
        {
            var viewModel = new CategoryProductsViewModel();

            viewModel.Products = _dbContext.Products.Where(r => r.Category.Id == id)
                                 .Select(r => new CategoryProductsViewModel.CategoryProductsItem
            {
                Id          = r.Id,
                Name        = r.Name,
                Category    = r.Category.Name,
                Description = r.Description,
                Price       = r.Price,
                Image       = r.Image
            }).ToList();

            foreach (var p in viewModel.Products)
            {
                if (p.Image == null)
                {
                    p.Image = "cart/cart-1.jpg";
                }
            }

            viewModel.Categories = _dbContext.Categories
                                   .Select(dbCat => new CategoryProductsViewModel.CategoryItem
            {
                Id   = dbCat.Id,
                Name = dbCat.Name
            }).ToList();

            viewModel.CategoryName = viewModel.Categories.First(r => r.Id == id).Name;
            viewModel.CategoryId   = viewModel.Categories.First(r => r.Name == viewModel.CategoryName).Id;

            viewModel.ProductState  = "Produkt";
            viewModel.CategoryState = "Kategori";
            viewModel.PriceState    = "Pris";

            SortProducts(viewModel, state);
            GetHeading(viewModel);

            return(View(viewModel));
        }
示例#10
0
        //public IEnumerable<Product> GetProductsByCategoryID(int id)
        //{
        //    NorthwindEntities db = new NorthwindEntities();
        //    var query = from p in db.Products
        //                where p.CategoryID == id
        //                select p;

        //    var result = query.ToList();
        //    return result;
        //}

        public CategoryProductsViewModel GetProductsByCategoryID(int id)
        {
            NorthwindEntities db = new NorthwindEntities();
            //query是準備來給Products做陣列用的
            var query = from p in db.Products
                        where p.CategoryID == id
                        select new ProductViewModel
            {
                ProductID   = p.ProductID,
                ProductName = p.ProductName,
                UnitPrice   = p.UnitPrice
            };
            CategoryProductsViewModel result = new CategoryProductsViewModel();

            result.CategoryID = id;
            //entity是共用的,所以db共用。Find會回傳Category,所以可以使用.CategoryName
            result.CategoryName = db.Categories.Find(id).CategoryName;
            result.Products     = query.ToList();

            return(result);
        }
示例#11
0
        public ActionResult CategoryProducts(string CategoryName)
        {
            CategoryProductsViewModel viewModel           = new CategoryProductsViewModel();
            CategoryProductsDTO       categoryProductsDTO = new CategoryProductsDTO();

            try
            {
                categoryProductsDTO = productBusinessContext.GetCategoryProducts(CategoryName);
            }
            catch (CategoryDoesNotExistsException ex)
            {
                return(View("Error"));
            }
            catch (Exception ex)
            {
                return(View("Internal Error"));
            }
            viewModel = _CategoryProductVMMapper.Map <CategoryProductsDTO, CategoryProductsViewModel>(categoryProductsDTO);
            if (Session["UserID"] != null)
            {
                viewModel.IsLoggedIn = true;
            }
            return(View(viewModel));
        }
示例#12
0
        public async Task <IActionResult> Products(string categoryId, string price, string sizeId, Sex sex, int page = 1)
        {
            var check      = Guid.TryParse(categoryId, out Guid parsedCategoryId);
            var categories = this.categoriesService.GetCategories().Select(c => c.Map <Category, CategoryListItemViewModel>()).ToList();
            var category   = categories.FirstOrDefault(c => c.Id == categoryId);

            if (!check || category == null)
            {
                this.TempData["Error"] = "Category does not exists.";
                return(RedirectToAction(nameof(ProductsController.Index), "Products"));
            }

            var sizeCheck = Guid.TryParse(sizeId, out Guid parseSizeId);

            if (!string.IsNullOrEmpty(sizeId) && !sizeCheck)
            {
                this.TempData["Error"] = "Invalid size filter.";
                return(RedirectToAction(nameof(Products), new { categoryId, page }));
            }

            decimal minPrice = 0m;
            decimal maxPrice = 0m;

            if (!string.IsNullOrEmpty(price))
            {
                var priceArgs = price.Split("$", StringSplitOptions.RemoveEmptyEntries);
                if (priceArgs.Length < 2)
                {
                    this.TempData["Error"] = "Invalid price range filter.";
                    return(RedirectToAction(nameof(Products), new { categoryId, page }));
                }

                var minPriceCheck = decimal.TryParse(priceArgs[0].Trim(), out minPrice);
                var maxPriceCheck = decimal.TryParse(priceArgs[1].Trim(), out maxPrice);
                if (!minPriceCheck || !maxPriceCheck || minPrice < 0 || maxPrice < 0)
                {
                    this.TempData["Error"] = "Invalid price range filter.";
                    return(RedirectToAction(nameof(Products), new { categoryId, page }));
                }
            }

            var size = 9;

            var skip = (page - 1) * size;
            var take = size;

            var categoryProducts = await this.categoriesService.GetProductsByCategory(parsedCategoryId, skip, take,
                                                                                      minPrice, maxPrice, parseSizeId, sex, this.User.Identity.Name);

            var products = categoryProducts
                           .Select(p => p.Map <Product, ProductViewModel>())
                           .ToList();

            var productsCount = this.categoriesService.SearchedProductsCount;

            var totalPages = (int)Math.Ceiling(decimal.Divide(productsCount, size));
            var first      = 1;
            var last       = totalPages;
            var previuous  = Math.Max(page - 1, first);
            var next       = Math.Min(page + 1, last);

            var sizes       = this.sizesService.GetSizes(category.Type, sex).Select(s => s.Map <Size, SizeListItemViewModel>()).ToList();
            var currentSize = sizes.Where(s => s.Id == sizeId).Select(s => s.Name).FirstOrDefault();

            ICollection <ProductViewModel> mostOrderedProductsCache;

            if (!this.memoryCache.TryGetValue("MostOrderedProducts", out mostOrderedProductsCache))
            {
                mostOrderedProductsCache = this.productsService.GetMostOrderedProducts()
                                           .Select(p => p.Map <Product, ProductViewModel>()).ToList();

                MemoryCacheEntryOptions memoryCacheOptions = new MemoryCacheEntryOptions();
                memoryCacheOptions.AbsoluteExpiration = DateTime.UtcNow.AddMinutes(5);
                this.memoryCache.Set <ICollection <ProductViewModel> >("MostOrderedProducts", mostOrderedProductsCache, memoryCacheOptions);
            }

            var model = new CategoryProductsViewModel
            {
                Products            = products,
                MostOrderedProducts = mostOrderedProductsCache,
                Pagination          = new Pagination
                {
                    First      = first,
                    Last       = last,
                    Next       = next,
                    Previous   = previuous,
                    TotalPages = totalPages,
                    Active     = page,
                    Category   = categoryId,
                    Price      = price,
                    SizeId     = sizeId,
                    Size       = currentSize,
                    Sex        = (int)sex,
                    Gender     = sex.ToString()
                },
                Categories      = categories,
                CurrentCategory = category,
                Sizes           = sizes
            };

            this.TempData["currentCategory"] = category.Name;
            return(View(model));
        }
示例#13
0
        public ActionResult Index()
        {
            if (User.IsInRole("CanManageApplication"))
            {
                return(View("AdminPanel"));
            }

            if (User.IsInRole("Rider"))
            {
                return(RedirectToAction("OrdersForRider", "Orders"));
            }

            var memberId = User.Identity.GetUserId();
            var user     = _context.Users.Where(c => c.Id == memberId).SingleOrDefault();

            var             productCategories = _context.ProductCategories.ToList();
            ProductCategory dhamakaoffer      = new ProductCategory()
            {
                Id           = 4,
                CategoryName = "Dhamaka Offers",
                Priority     = 4
            };

            productCategories.Add(dhamakaoffer);

            var recomendations = _context.Recommendations.SingleOrDefault(c => c.ApplicationUserId == memberId && c.Count == 1);

            if (recomendations != null)
            {
                var id            = recomendations.ProductId;
                var recommendedId = _context.Products.Where(c => c.ProductId == id).Select(c => c.ProductCategoryId).SingleOrDefault();
                if (recommendedId != 0)
                {
                    ProductCategory recommended = new ProductCategory()
                    {
                        Id = recommendedId,
                        CategoryDescription = "Recommendations For You",
                        Priority            = 5
                    };

                    productCategories.Add(recommended);
                }
            }
            //for search history
            recomendations = _context.Recommendations.SingleOrDefault(c => c.ApplicationUserId == memberId && c.Count == 0);
            if (recomendations != null)
            {
                var id            = recomendations.ProductId;
                var recommendedId = _context.Products.Where(c => c.ProductId == id).Select(c => c.ProductCategoryId).SingleOrDefault();
                if (recommendedId != 0)
                {
                    ProductCategory recommended = new ProductCategory()
                    {
                        Id = recommendedId,
                        CategoryDescription = "We inspire from your search",
                        Priority            = 8
                    };
                    productCategories.Add(recommended);
                }
            }

            productCategories = productCategories.OrderBy(x => x.Priority).ToList();

            CategoryProductsViewModel model = new CategoryProductsViewModel()
            {
                UserId   = "",
                UserName = "******",
            };

            if (user != null)
            {
                model.UserId   = user.Id;
                model.UserName = user.FirstName;
            }
            List <Shaska.ViewModel.CategoryProductsViewModel.CategoryProductViewModel> cp = new List <CategoryProductsViewModel.CategoryProductViewModel>();

            for (int a = 0; a < productCategories.Count; a++)
            {
                int            id             = productCategories[a].Id;
                List <Product> listofproducts = _context.Products.Where(c => c.ProductCategoryId == id).ToList();
                for (int c1 = 0; c1 < listofproducts.Count; c1++)
                {
                    id = listofproducts[c1].ProductId;
                    listofproducts[c1].Image = _context.Images.Where(c => c.ProductId == id).ToList();
                }

                Shaska.ViewModel.CategoryProductsViewModel.CategoryProductViewModel categoryproduct = new Shaska.ViewModel.CategoryProductsViewModel.CategoryProductViewModel()
                {
                    ProductCategory = productCategories[a],
                    Products        = listofproducts
                };
                cp.Add(categoryproduct);
            }

            model.CategoriesProductViewModel = cp;

            return(View("Home", model));
        }
示例#14
0
 public ActionResult CategoryProducts(CategoryProductsViewModel categoryProducts)
 {
     return(this.View(this._service.SearchCategoryProducts(categoryProducts.SearchString)));
 }