// GET: ProductCategories/Details/5
        public async Task <IActionResult> Details(string?productName)
        {
            if (productName == null)
            {
                return(NotFound());
            }


            var findMatchingProduct = await _context.ProductCategories
                                      .Include(p => p.Category)
                                      .Include(p => p.Product)
                                      .FirstOrDefaultAsync(m => m.Product.Name == productName);

            DisplayProductViewModel productDetails = new DisplayProductViewModel
            {
                Product    = findMatchingProduct.Product,
                Categories = _context.ProductCategories.Where(x => x.ProductID == findMatchingProduct.ProductID).Select(y => y.Category).ToList(),
                Selection  = findMatchingProduct.Selection.ToString(),
                Image      = _context.ProductCategories
                             .Where(i => i.Product.Image.ProductID == findMatchingProduct.ProductID)
                             .Select(img => img.Product.Image)
                             .FirstOrDefault()
            };


            if (productDetails == null)
            {
                return(NotFound());
            }

            return(View(productDetails));
        }
Exemplo n.º 2
0
        public HttpResponseMessage GetById(HttpRequestMessage request, int id)
        {
            var result = _daoDisplayProduct.GetById(id);
            DisplayProductViewModel DisplayProductViewModel = new DisplayProductViewModel();

            DisplayProductViewModel.Image = result.Image;
            DisplayProductViewModel.id    = result.Id;
            DisplayProductViewModel.Name  = result.Name;

            return(request.CreateResponse(HttpStatusCode.OK, DisplayProductViewModel));
        }
        private List <DisplayProductViewModel> FilterProductsBySelection(string selectionOrder)
        {
            var appDbContext = _context.ProductCategories
                               .Include(p => p.Product)
                               .Include(c => c.Category)
                               .AsNoTracking();

            List <DisplayProductViewModel> getAllMatchingProducts    = new List <DisplayProductViewModel>();
            List <DisplayProductViewModel> getUniqueMatchingProducts = new List <DisplayProductViewModel>();

            try
            {
                foreach (var product in appDbContext)
                {
                    if (product.Selection.ToString() == selectionOrder)
                    {
                        DisplayProductViewModel dp = new DisplayProductViewModel();
                        dp.Product    = product.Product;
                        dp.Categories = appDbContext
                                        .Where(x => x.ProductID == product.Product.ID)
                                        .Select(x => x.Category)
                                        .ToList();
                        dp.Image = appDbContext
                                   .Where(x => x.Product.Image.ProductID == product.Product.ID)
                                   .Select(y => y.Product.Image)
                                   .FirstOrDefault();

                        dp.Selection = selectionOrder;
                        getAllMatchingProducts.Add(dp);
                    }
                }

                var distinctProducts = getAllMatchingProducts.GroupBy(x => x.Product.ID).Select(y => y.First());

                foreach (var product in distinctProducts)
                {
                    getUniqueMatchingProducts.Add(product);
                }

                return(getUniqueMatchingProducts.OrderBy(x => x.Product.Name).ToList());
            }

            catch
            {
                throw new NotImplementedException();
            }
        }
Exemplo n.º 4
0
        // Does the latest Image appear in this argumenmt?
        public static List <DisplayProductViewModel> GetAllLiveProducts(AppDbContext db)
        {
            List <DisplayProductViewModel> displayProds = new List <DisplayProductViewModel>();

            var allProducts = db.Products;

            foreach (var item in allProducts)
            {
                // instantiate View Model
                DisplayProductViewModel displayPvm = new DisplayProductViewModel();

                // Create list of Categories to store incoming Categories
                List <Category> associatedCategories = new List <Category>();

                // Set new View Model Product to selected Product in the database
                displayPvm.Product = item;

                // Set new View Model Image to selected Product's related Image in the database
                var img = db.Images.Where(x => x.ProductID == item.ID).FirstOrDefault();

                displayPvm.Image = img;

                // For each entry in the ProductCategory table see where the ProductID matches the selected Product ID and store the Selection value
                var selection = db.ProductCategories.Where(x => x.ProductID == item.ID).Select(y => y.Selection).FirstOrDefault();
                displayPvm.Selection = selection.ToString();


                // For each Categories with this database Product loop through all the assigned Categories and add them
                foreach (var t in db.ProductCategories)
                {
                    if (t.ProductID == item.ID)
                    {
                        var cat = db.Categories.Where(x => x.CategoryID == t.CategoryID).FirstOrDefault();
                        associatedCategories.Add(cat);
                    }
                }

                // Add all the Categories to the ViewModel Category
                displayPvm.Categories = associatedCategories;

                // Add new View Model to the ViewModel list
                displayProds.Add(displayPvm);
            }
            return(displayProds);
        }
Exemplo n.º 5
0
 public HttpResponseMessage Update(HttpRequestMessage request, DisplayProductViewModel sanPham)
 {
     if (sanPham.id != 0)
     {
         var result = _daoDisplayProduct.UpdateProduct(new SanPhamTrungBay()
         {
             Name = sanPham.Name, Id = sanPham.id, Image = sanPham.Image
         });
         return(request.CreateResponse(HttpStatusCode.OK, result));
     }
     else
     {
         var result = _daoDisplayProduct.Add(new SanPhamTrungBay()
         {
             Name = sanPham.Name, Image = sanPham.Image
         });
         return(request.CreateResponse(HttpStatusCode.OK, result));
     }
 }
        public List <DisplayProductViewModel> FilterProductsByCategory(string categoryOrder)
        {
            var appDbContext = _context.ProductCategories
                               .Include(p => p.Product)
                               .Include(c => c.Category)
                               .AsNoTracking();

            try
            {
                int newCategoryIndex = FindCategoryIndexInTable(categoryOrder);
                List <DisplayProductViewModel> displayProds = new List <DisplayProductViewModel>();
                List <Category> catList = new List <Category>();

                var filteredList = appDbContext.Where(x => x.CategoryID == newCategoryIndex).ToList();

                foreach (var i in filteredList)
                {
                    DisplayProductViewModel dp = new DisplayProductViewModel();
                    dp.Product = i.Product;

                    dp.Categories = appDbContext
                                    .Where(x => x.ProductID == i.ProductID)
                                    .Select(x => x.Category)
                                    .ToList();
                    dp.Selection = i.Selection.ToString();
                    dp.Image     = appDbContext
                                   .Where(x => x.Product.Image.ProductID == i.ProductID)
                                   .Select(x => x.Product.Image).FirstOrDefault();

                    displayProds.Add(dp);
                }

                return(displayProds.ToList());
            }
            catch (Exception)
            {
                return(null);
            }
        }
Exemplo n.º 7
0
        // GET: Products/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            DisplayProductViewModel dPvm = new DisplayProductViewModel();

            var product = await _context.Products
                          .Include(pc => pc.ProductCategories)
                          .ThenInclude(c => c.Category)
                          .AsNoTracking()
                          .FirstOrDefaultAsync(m => m.ID == id);

            dPvm.Product    = product;
            dPvm.Categories = product.ProductCategories
                              .Where(x => x.ProductID == product.ID)
                              .Select(c => c.Category)
                              .ToList();
            dPvm.Selection = product.ProductCategories
                             .Where(x => x.ProductID == product.ID)
                             .Select(c => c.Selection.ToString())
                             .FirstOrDefault();
            dPvm.Image = product.ProductCategories
                         .Where(i => i.Product.Image.ProductID == product.ID)
                         .Select(img => img.Product.Image)
                         .FirstOrDefault();


            if (product == null)
            {
                return(NotFound());
            }

            return(View(product));
        }
        private List <DisplayProductViewModel> ExtractDisplayProducts(List <Product> products)
        {
            var list = new List <DisplayProductViewModel>();

            foreach (var product in products)
            {
                var model = new DisplayProductViewModel
                {
                    Id          = product.Id,
                    Name        = product.Name,
                    Price       = product.Price,
                    Description = product.Description
                };

                if (model.Description.Length > 50)
                {
                    model.Description = $"{model.Description.Substring(0, 50)}...";
                }

                list.Add(model);
            }

            return(list);
        }