public ViewResult Details(int?id)
        {
            //throw new Exception( "Error in Details View" );

            _logger.LogTrace("Trace Log");
            _logger.LogDebug("Debug Log");
            _logger.LogInformation("Information Log");
            _logger.LogWarning("Warning Log");
            _logger.LogError("Error Log");
            _logger.LogCritical("Critical Log");

            Product product = _productRepository.GetProduct(id.Value);

            if (product == null)
            {
                Response.StatusCode = 404;
                return(View("ProductNotFound", id.Value));
            }

            HomeDetailsVm homeDetailsVm = new HomeDetailsVm()
            {
                Product   = product,
                PageTitle = "Product Details"
            };

            return(View(homeDetailsVm));
        }
        public IActionResult Edit(ProductEditVm model)
        {
            if (ModelState.IsValid)
            {
                Product product = _productRepository.GetProduct(model.Id);
                product.Name             = model.Name;
                product.Price            = model.Price;
                product.ShortDescription = model.ShortDescription;
                product.LongDescription  = model.LongDescription;
                if (model.Photo != null)
                {
                    if (model.ExistingPhotoPath != null)
                    {
                        string filePath = Path.Combine(_webHostEnvironment.WebRootPath,
                                                       "images", model.ExistingPhotoPath);
                        System.IO.File.Delete(filePath);
                    }
                    product.PhotoPath = ProcessUploadedFile(model);
                }

                var updatedProduct = _productRepository.Update(product);
                return(RedirectToAction("Index"));
            }

            return(View(model));
        }
        public ViewResult Edit(int id)
        {
            Product       product       = _productRepository.GetProduct(id);
            ProductEditVm productEditVm = new ProductEditVm
            {
                Id                = product.Id,
                Name              = product.Name,
                Price             = product.Price,
                ShortDescription  = product.ShortDescription,
                LongDescription   = product.LongDescription,
                ExistingPhotoPath = product.PhotoPath
            };

            return(View(productEditVm));
        }
        public IActionResult Create(ProductCreateVm model)
        {
            if (ModelState.IsValid)
            {
                string  uniqueFileName = ProcessUploadedFile(model);
                Product newProduct     = new Product
                {
                    Name             = model.Name,
                    Price            = model.Price,
                    Group            = model.Group,
                    ShortDescription = model.ShortDescription,
                    LongDescription  = model.ShortDescription,
                    PhotoPath        = uniqueFileName
                };

                _productRepository.Add(newProduct);
                return(RedirectToAction("Details", new { id = newProduct.Id }));
            }

            return(View());
        }