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); }
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)); }
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); }
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); }
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" })); }
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" })); }
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); }
//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); }
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)); }
//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); }
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)); }
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)); }
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)); }
public ActionResult CategoryProducts(CategoryProductsViewModel categoryProducts) { return(this.View(this._service.SearchCategoryProducts(categoryProducts.SearchString))); }