// GET: Index/{page} public ActionResult Index(string page = "") { //get/Set page slug if (page == "") { page = "home"; } //declare model and DTO PageVM model; PageDTO dto; //check if page exists using (Db db = new Db()) { if (!db.Pages.Any(x => x.Slug.Equals(page))) { return(RedirectToAction("Index", new { page = "" })); } } // get page DTO using (Db db = new Models.Data.Db()) { dto = db.Pages.Where(x => x.Slug == page).FirstOrDefault(); } //set page title ViewBag.PageTitle = dto.Title; // check the slidebar if (dto.HasSlideBar == true) { ViewBag.Slidebar = "Yes"; } else { ViewBag.Slidebar = "No"; } // Init Model model = new PageVM(dto); // return view with model return(View(model)); }
public ActionResult AddPage(PageVM model) { // check model state if (!ModelState.IsValid) { return(View(model)); } using (Db db = new Models.Data.Db()) { // declare slug string slug; // init pageDTO PageDTO dto = new PageDTO(); // DTO title dto.Title = model.Title; // check for and set slug if need be if (string.IsNullOrWhiteSpace(model.Slug)) { slug = model.Title.Replace(" ", "-").ToLower(); } else { slug = model.Slug.Replace(" ", "-").ToLower(); } // make sure title and slug are unique if (db.Pages.Any(x => x.Title == model.Title) || db.Pages.Any(x => x.Slug == slug)) { ModelState.AddModelError("", "That title or slug already exists."); return(View(model)); } // DTO the rest dto.Slug = slug; dto.Body = model.Body; dto.HasSidebar = model.HasSidebar; dto.Sorting = 100; // save DTO db.Pages.Add(dto); db.SaveChanges(); } // Set TempData message TempData["SM"] = "You have added a new page!"; // Redirect return(RedirectToAction("AddPage")); }
public ActionResult EditProduct(ProductViewModel model, HttpPostedFileBase file) { // get product id int id = model.Id; // populate categories select list and images using (Db db = new Models.Data.Db()) { model.Categories = new SelectList(db.Categories.ToList(), "Id", "Name"); } model.Images = Directory.EnumerateFiles(Server.MapPath("~/Images/Uploads/Products/" + id + "/Gallery/Thumbs")) .Select(fileName => Path.GetFileName(fileName)); // check model state if (!ModelState.IsValid) { return(View(model)); } // make sure product name is unique using (Db db = new Db()) { if (db.Products.Where(p => p.Id != id).Any(p => p.Name == model.Name)) { ModelState.AddModelError("", "Product name already exists."); return(View(model)); } } // update product using (Db db = new Db()) { ProductDto dto = db.Products.Find(id); dto.Name = model.Name; dto.Slug = model.Name.Replace(" ", "-").ToLower(); dto.Price = model.Price; dto.Description = model.Description; dto.CategoryId = model.CategoryId; dto.ImageName = model.ImageName; CategoryDto catDto = db.Categories.FirstOrDefault(c => c.Id == model.CategoryId); dto.CategoryName = catDto.Name; db.SaveChanges(); } // set TempData msg TempData["SM"] = "Product edited successfully"; #region Image Upload // check for file upload if (file != null && file.ContentLength > 0) { // get file extension string ext = file.ContentType.ToLower(); // verify file extension if (ext != "image/jpg" && ext != "image/jpeg" && ext != "image/pjpeg" && ext != "image/gif" && ext != "image/x-png" && ext != "image/png") { using (Db db = new Db()) { ModelState.AddModelError("", "The image was not uploaded - wrong image extension."); return(View(model)); } } // set upload directory paths var originalDirectory = new DirectoryInfo(string.Format("{0}Images\\Uploads", Server.MapPath(@"\"))); var pathString1 = Path.Combine(originalDirectory.ToString(), "Products\\" + id.ToString()); var pathString2 = Path.Combine(originalDirectory.ToString(), "Products\\" + id.ToString() + "\\Thumbs"); // delete files from directories DirectoryInfo directoryInfo1 = new DirectoryInfo(pathString1); DirectoryInfo directoryInfo2 = new DirectoryInfo(pathString2); foreach (FileInfo file2 in directoryInfo1.GetFiles()) { file2.Delete(); } foreach (FileInfo file3 in directoryInfo2.GetFiles()) { file3.Delete(); } // save image name string imageName = file.FileName; using (Db db = new Db()) { ProductDto dto = db.Products.Find(id); dto.ImageName = imageName; db.SaveChanges(); } // save original and thumb images var path = string.Format("{0}\\{1}", pathString1, imageName); var path2 = string.Format("{0}\\{1}", pathString2, imageName); file.SaveAs(path); // Create and save thumb of the original WebImage img = new WebImage(file.InputStream); img.Resize(200, 200); img.Save(path2); } // redirect #endregion // redirect return(RedirectToAction("EditProduct")); }