public ActionResult SearchProducts(string q) // make global??
        {
            ViewModels.ProductViewModels.ListProductsViewModel productListViewModel = Management.ActionHandler.PopulateProductListViewModel();

            Management.SearchHandler searchHandler = new Management.SearchHandler();
            productListViewModel.Products = productListViewModel.Products.Where(x => searchHandler.Matches(x, q)).ToList();

            if (searchHandler.IsSearchedWithHits)
            {
                productListViewModel.IsSearchedWithHits = true;
                if (productListViewModel.Products.Count == 1)
                {
                    return(RedirectToAction("ShowProduct", new { productId = productListViewModel.Products[0].Id }));
                }
            }
            return(View("Index", productListViewModel));
        }
        public static ViewModels.ProductViewModels.ListProductsViewModel PopulateProductListViewModel()
        {
            var viewmodel = new ViewModels.ProductViewModels.ListProductsViewModel();

            using (var entities = new EntityModel.DatabaseContext())
            {
                viewmodel.Products.AddRange(entities.Products.Where(c => c.IsValid).Select(x =>
                                                                                           new ViewModels.ProductViewModels.ListProductsViewModel.ProductViewModel
                {
                    Id                  = x.Id,
                    Name                = x.Name,
                    Price               = x.Price,
                    Description         = x.Description,
                    ProductCategoryName = entities.ProductCategorys.FirstOrDefault(z => z.Id == x.ProductCategoryId).Name,
                    ProductCategoryId   = entities.Products.FirstOrDefault(p => p.Id == x.ProductCategoryId).Id
                }));
            }
            return(viewmodel);
        }
 public ActionResult ShowProduct(int productId)
 {
     ViewModels.ProductViewModels.ListProductsViewModel viewmodel = Management.ActionHandler.PopulateProductListViewModel();
     return(View(viewmodel.Products[productId - 1]));
 }