public ActionResult DeleteConfirmed(string id) { if (id == null) { this.AddNotification("No user ID provided.", NotificationType.ERROR); return(RedirectToAction("Index")); } using (var db = new GalleryDbContext()) { //Get user from database var user = db.Users .FirstOrDefault(u => u.Id == id); if (user == null) { this.AddNotification("Such a user doesn't exist.", NotificationType.ERROR); return(RedirectToAction("Index")); } //Get user's pictures form database var userPictures = db.Pictures .Where(p => p.PicUploader.Id == user.Id) .ToList(); //Delete user's pictures foreach (var picture in userPictures) { //Adjust the positional boolean variables of the other pics before the deletion AdjustCategoryPositions.Delete(db, picture); //Delete the picture from the server var physicalPath = Server.MapPath(picture.ImagePath); System.IO.File.Delete(physicalPath); db.Pictures.Remove(picture); db.SaveChanges(); } // Delete the user's directory and the pic in there from ~/Content/images/profilePics: var userIdFolder = user.Id; var userDirectory = Server.MapPath($"~/Content/images/profilePics/{userIdFolder}"); if (Directory.Exists(userDirectory)) { Directory.Delete(userDirectory, true); } //Delete user and save changes db.Users.Remove(user); db.SaveChanges(); this.AddNotification("The user was deleted.", NotificationType.SUCCESS); return(RedirectToAction("Index")); } }
public ActionResult DeleteConfirmed(int?id) { if (id == null) { this.AddNotification("No picture ID provided.", NotificationType.ERROR); return(RedirectToAction("ListCategories", "Home")); } using (var db = new GalleryDbContext()) { // Get picture from database var picture = db.Pictures .Where(p => p.Id == id) .Include(p => p.PicUploader) .Include(p => p.Category) .FirstOrDefault(); // Check if picture exists if (picture == null) { this.AddNotification("Such a picture doesn't exist.", NotificationType.ERROR); return(RedirectToAction("ListCategories", "Home")); } // Adjust the positional boolean variables of the other pics before the deletion AdjustCategoryPositions.Delete(db, picture); // Getting the category of the pic before the deletion in order to redirect to Home/ListPictures after that var picCategoryId = (int?)picture.CategoryId; // Delete the picture from the ~/Content/images/astroPics folder: var physicalPath = Server.MapPath(picture.ImagePath); System.IO.File.Delete(physicalPath); // Delete the picture from the database db.Pictures.Remove(picture); db.SaveChanges(); // Redirect to the page with all pics in the current category this.AddNotification("The picture was deleted.", NotificationType.SUCCESS); return(RedirectToAction("ListPictures", "Home", new { id = picCategoryId })); } }