public FavouriteStatus Set(int id) { FavouriteStatus status = new FavouriteStatus { Status = false }; if (User.Identity.IsAuthenticated) { string uid = User.Identity.GetUserId(); using (PixurfDBContext db = new PixurfDBContext()) { Favourite favourite = db.Favourites.FirstOrDefault(f => f.User_ID == uid && f.Content_ID == id); Content content = db.Contents.Find(id); if (content != null) { UserRelationship userRelationship = new UserRelationship(); if ((content.User_ID == uid) || (userRelationship.Following(content.User_ID, uid) && content.Access != "Private") || (!userRelationship.Blocked(content.User_ID, uid) && content.Access == "Public")) { if (favourite != null) { db.Favourites.Remove(favourite); try { db.SaveChanges(); status.Status = false; } catch (Exception e) { Console.WriteLine(e); status.Status = true; } } else { db.Favourites.Add(new Favourite { Content = content, User_ID = uid, Creation_Date = DateTime.Now }); try { db.SaveChanges(); status.Status = true; } catch (Exception e) { Console.WriteLine(e); } } } } } } return(status); }
public ActionResult Edit(ViewAlbumModel model) { List <StatusReport> reports = new List <StatusReport>(); string userId = User.Identity.GetUserId(); if (model != null && !model.Name.IsNullOrWhiteSpace() && !model.Access.IsNullOrWhiteSpace()) { using (PixurfDBContext db = new PixurfDBContext()) { //Find the Album Album album = db.Albums.Where(a => a.Album_ID == model.Album_ID) .OrderByDescending(a => a.Creation_Date).ToList().FirstOrDefault(); if (album == null) { reports.Add(new StatusReport { Title = "Error", Description = "Album not found", Status = StatusReport.Danger }); Session["Reports"] = reports; return(RedirectToAction("Index")); } User user = db.Users.Find(userId); if ((album.User_ID == userId && album.Status == 1) || (user != null && user.Admin)) { if (album.Name == model.Name && album.Description == model.Description && album.Access == model.Access) { reports.Add(new StatusReport { Title = "Success", Description = "No change is made", Status = StatusReport.Success }); Session["Reports"] = reports; return(RedirectToAction("View", "Album", new { id = album.Album_ID })); } else { album.Name = model.Name; album.Description = model.Description; album.Access = model.Access; try { db.SaveChanges(); reports.Add(new StatusReport { Title = "Success", Description = "Changes saved", Status = StatusReport.Success }); Session["Reports"] = reports; return(RedirectToAction("View", "Album", new { id = album.Album_ID })); } catch (Exception e) { Console.WriteLine(e); return(RedirectToAction("Index")); } } } } } return(View(model)); }
public ActionResult Delete(int id, string all) { bool deleteAll = false || (all != null && all.Equals("All")); List <StatusReport> reports = new List <StatusReport>(); using (PixurfDBContext db = new PixurfDBContext()) { Album album = db.Albums.Find(id); string userId = User.Identity.GetUserId(); if (album == null) { reports.Add(new StatusReport { Title = "Failed", Description = "Album not found", Status = StatusReport.Warning }); Session["Reports"] = reports; return(RedirectToAction("Index", "Album")); } // check if user own's the content && not already deleted if (album.Status == 1 && album.User_ID == userId) { if (album.Name == "@System Generated Album@" && album.Contents.Count > 0) { reports.Add(new StatusReport { Title = "Failed", Description = "This Album can't be deleted as it's not empty.", Status = StatusReport.Warning }); Session["Reports"] = reports; return(RedirectToAction("Index", "Album")); } album.Status = 0; if (deleteAll) { foreach (Content content in album.Contents) { content.Status = 0; } } else { //Find the Default Album Album defaultAlbum = db.Albums.FirstOrDefault(a => a.Name == "@System Generated Album@" && a.User_ID == userId); //Create the album if its null if (defaultAlbum == null) { defaultAlbum = new Album { Name = "@System Generated Album@", Creation_Date = DateTime.Now, User_ID = userId, Status = 1, Access = "Private" }; } foreach (Content content in album.Contents) { content.Album = defaultAlbum; } db.Albums.Add(defaultAlbum); } try { db.SaveChanges(); reports.Add(new StatusReport { Title = "Success", Description = "Album " + album.Name + " successfully deleted.", Status = StatusReport.Success }); Session["Reports"] = reports; } catch (Exception e) { reports.Add(new StatusReport { Title = "Error", Description = "Something went wrong", Status = StatusReport.Danger }); Session["Reports"] = reports; Console.WriteLine(e); } return(RedirectToAction("Index", "Album")); } else { var user = db.Users.Find(User.Identity.GetUserId()); if (user != null && user.Admin) { if (album.Name == "@System Generated Album@" && album.Contents.Count > 0) { reports.Add(new StatusReport { Title = "Failed", Description = "This Album can't be deleted as it's not empty.", Status = StatusReport.Warning }); Session["Reports"] = reports; return(RedirectToAction("Index", "Album")); } if (deleteAll) { List <Content> contents = album.Contents.ToList(); foreach (Content content in contents) { db.Contents.Remove(content); } } else { //Find the Default Album Album defaultAlbum = db.Albums.FirstOrDefault( a => a.Name == "@System Generated Album@" && a.User_ID == album.User_ID); //Create the album if its null if (defaultAlbum == null) { defaultAlbum = new Album { Name = "@System Generated Album@", Creation_Date = DateTime.Now, User_ID = album.User_ID, Status = 1 }; db.Albums.Add(album); } foreach (Content content in album.Contents) { content.Album = defaultAlbum; } } db.Albums.Remove(album); try { db.SaveChanges(); reports.Add(new StatusReport { Title = "Success", Description = "Album " + album.Name + " has been deleted permanently.", Status = StatusReport.Success }); Session["Reports"] = reports; //Redirect to target users album index return(RedirectToAction("Index", "Home")); } catch (Exception e) { Console.WriteLine(e); reports.Add(new StatusReport { Title = "Success", Description = "Album " + album.Name + " Creation Successful.", Status = StatusReport.Success }); Session["Reports"] = reports; return(RedirectToAction("Index", "Home")); } } else { reports.Add(new StatusReport { Title = "Error", Description = "Album not found", Status = StatusReport.Danger }); Session["Reports"] = reports; return(RedirectToAction("Index", "Album")); } } } }
// So Far Complete public ActionResult AddNew(ViewAlbumModel model) { List <StatusReport> reports = new List <StatusReport>(); string userId = User.Identity.GetUserId(); if (model != null && !model.Name.IsNullOrWhiteSpace() && !model.Access.IsNullOrWhiteSpace()) { using (PixurfDBContext db = new PixurfDBContext()) { //Find the Album Album album = db.Albums.Where(a => a.Name == model.Name && a.Status != 0 && a.User_ID == userId).OrderByDescending(a => a.Creation_Date).ToList().FirstOrDefault(); //Create the album if its null if (album == null) { //Create an album album = new Album { Name = model.Name, Creation_Date = DateTime.Now, User_ID = userId, Access = model.Access, Status = 1, Description = model.Description }; db.Albums.Add(album); try { db.SaveChanges(); reports.Add(new StatusReport { Title = "Success", Description = "Album " + album.Name + " Successfully Created.", Status = StatusReport.Success }); Session["Reports"] = reports; } catch (Exception e) { reports.Add(new StatusReport { Title = "Error", Description = "Something went wrong", Status = StatusReport.Danger }); Session["Reports"] = reports; Console.WriteLine(e); } } else { //Already Exists reports.Add(new StatusReport { Title = "Failed", Description = "Album " + album.Name + " Already Exists.", Status = StatusReport.Warning }); Session["Reports"] = reports; } return(RedirectToAction("View", new { id = album.Album_ID })); } } return(View(model)); }
public RelationStatus Set(string id) { RelationStatus status = new RelationStatus { Type = RelationStatus.Follow }; if (User.Identity.IsAuthenticated && !id.IsNullOrWhiteSpace()) { string uid = User.Identity.GetUserId(); using (PixurfDBContext db = new PixurfDBContext()) { User followingUser = db.Users.Find(id); if (followingUser != null) { UserRelationship userRelationship = new UserRelationship(); bool following = userRelationship.Following(id, uid); if (following) { db.User_Relations.Remove(db.User_Relations.FirstOrDefault(r => r.User_ID == uid && r.Related_User_ID == id && r.Status == "Follow")); try { db.SaveChanges(); status.Status = false; } catch (Exception e) { Console.WriteLine(e); status.Status = true; } } else { bool isBlocked = userRelationship.Blocked(id, uid); if (!isBlocked) { User_Relation relation = new User_Relation { User_ID = uid, Related_User_ID = id, Status = "Follow" }; db.User_Relations.Add(relation); try { db.SaveChanges(); status.Status = true; } catch (Exception e) { Console.WriteLine(e); status.Status = false; } } } } } } else { status.Status = false; } return(status); }
private StatusReport SaveContent(HttpPostedFileBase image, string access, string albumName) { string userId = User.Identity.GetUserId(); string dateTime = DateTime.Now.Millisecond.ToString(); string fileName = userId + dateTime + Path.GetExtension(image.FileName); string uploadRoot = "~/UserUploads/"; //Content & Thumbnail Save Loaction var strings = WebConfigurationManager.AppSettings.GetValues("UserUploadRoot"); if (strings != null && strings.Length > 0) { uploadRoot = strings.First(); } string contentPathWithRoot = uploadRoot + userId + "/"; if (!Directory.Exists(Server.MapPath(contentPathWithRoot))) { Directory.CreateDirectory(Server.MapPath(contentPathWithRoot)); } string thumbPathWithRoot = uploadRoot + userId + "/thumbs/"; if (!Directory.Exists(Server.MapPath(thumbPathWithRoot))) { Directory.CreateDirectory(Server.MapPath(thumbPathWithRoot)); } string thumbName = "thumb_" + fileName; string thumbFullPath = Path.Combine(Server.MapPath(thumbPathWithRoot), thumbName); string fullFileName = Path.Combine(Server.MapPath(contentPathWithRoot), fileName); try { image.SaveAs(fullFileName); } catch (Exception e) { Console.WriteLine(e); return(new StatusReport { Status = StatusReport.Danger, Title = "Save Failed", Description = image.FileName }); } //update database using (PixurfDBContext db = new PixurfDBContext()) { Content content = new Content { Access = access, Title = Path.GetFileNameWithoutExtension(image.FileName), Path = fileName, Type = image.ContentType, User_ID = userId, Status = 1, Creation_Date = DateTime.Now }; //update album or create and update album //Add to album string alName = albumName; Album album; if (!alName.IsNullOrWhiteSpace()) { //Find the Album album = db.Albums.FirstOrDefault(a => a.Name == alName && a.User_ID == userId); //Create the album if its null if (album == null) { album = new Album { Name = alName, Creation_Date = DateTime.Now, User_ID = userId, Access = access, Status = 1 }; db.Albums.Add(album); } } else { album = new Album { Name = "@System Generated Album@", Creation_Date = DateTime.Now, User_ID = userId, Status = 1 }; db.Albums.Add(album); } album.Contents.Add(content); try { db.SaveChanges(); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { Console.WriteLine(@"Entity of type ""{0}"" in state ""{1}"" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { Console.WriteLine(@"- Property: ""{0}"", Value: ""{1}"", Error: ""{2}""", ve.PropertyName, eve.Entry.CurrentValues.GetValue <object>(ve.PropertyName), ve.ErrorMessage); } } //throw; return(new StatusReport { Status = StatusReport.Danger, Title = "Save Failed", Description = image.FileName }); } } // Save a Thumbnail of the Image ImageProcessor imageProcessor = new ImageProcessor(); Image thumb = imageProcessor.CreateThumbnail(Image.FromStream(image.InputStream, true, true)); thumb.Save(thumbFullPath, ImageFormat.Bmp); return(new StatusReport { Status = StatusReport.Success, Title = "Successfully Saved", Description = image.FileName }); }
/// Work Space /// /// public ActionResult Delete(int id) { List <StatusReport> reports = new List <StatusReport>(); using (PixurfDBContext db = new PixurfDBContext()) { Content content = db.Contents.Find(id); string userId = User.Identity.GetUserId(); if (content == null) { reports.Add(new StatusReport { Title = "Failed", Description = "Content not found", Status = StatusReport.Danger }); Session["Reports"] = reports; return(RedirectToAction("Index", "Content")); } // check if user own's the content and not already deleted if (content.Status == 1 && content.User_ID == userId) { content.Status = 0; try { db.SaveChanges(); reports.Add(new StatusReport { Title = "Success", Description = "Content succesfully deleted.", Status = StatusReport.Danger }); Session["Reports"] = reports; return(RedirectToAction("View", "Album", new { id = content.Album_ID })); //Redirect to album instead// } catch (Exception e) { Console.WriteLine(e); reports.Add(new StatusReport { Title = "Error", Description = "Something went wrong", Status = StatusReport.Danger }); Session["Reports"] = reports; return(RedirectToAction("View", "Album", new { id = content.Album_ID })); } } var user = db.Users.Find(userId); if (user != null && user.Admin) { try { //Remove the file and it thumbnail from disk string uploadRoot = "~/UserUploads/"; //Content & Thumbnail Save Loaction var strings = WebConfigurationManager.AppSettings.GetValues("UserUploadRoot"); if (strings != null && strings.Length > 0) { uploadRoot = strings.First(); } string contentPath = uploadRoot + content.User_ID + "/" + content.Path; contentPath = Server.MapPath(contentPath); if (System.IO.File.Exists(contentPath)) { System.IO.File.Delete(contentPath); } string thumbPath = uploadRoot + content.User_ID + "/thumbs/thumb_" + content.Path; thumbPath = Server.MapPath(thumbPath); if (System.IO.File.Exists(thumbPath)) { System.IO.File.Delete(thumbPath); } db.Contents.Remove(content); db.SaveChanges(); reports.Add(new StatusReport { Title = "Success", Description = "Content permanently deleted.", Status = StatusReport.Danger }); Session["Reports"] = reports; return(RedirectToAction("View", "Album", new { id = content.Album_ID })); } catch (Exception e) { Console.WriteLine(e); reports.Add(new StatusReport { Title = "Error", Description = "Something went wrong", Status = StatusReport.Danger }); Session["Reports"] = reports; return(RedirectToAction("View", "Album", new { id = content.Album_ID })); } } } return(RedirectToAction("Index", "Album")); }
public ActionResult Edit(ViewContentModel model) { List <StatusReport> reports = new List <StatusReport>(); string userId = User.Identity.GetUserId(); if (model != null && !model.Title.IsNullOrWhiteSpace() && !model.Access.IsNullOrWhiteSpace() && !model.Access.IsNullOrWhiteSpace()) { using (PixurfDBContext db = new PixurfDBContext()) { //Find the Content Content content = db.Contents.Find(model.Content_ID); if (content == null) { reports.Add(new StatusReport { Title = "Error", Description = "Content not found", Status = StatusReport.Danger }); Session["Reports"] = reports; return(RedirectToAction("Index", "Home")); } User user = db.Users.Find(userId); if ((content.User_ID == userId && content.Status == 1) || (user != null && user.Admin)) { if (content.Title == model.Title && content.Description == model.Description && content.Access == model.Access && content.Album.Name == model.AlbumName) { reports.Add(new StatusReport { Title = "Success", Description = "No change is made", Status = StatusReport.Info }); Session["Reports"] = reports; return(RedirectToAction("View", "Content", new { id = content.Content_ID })); } else { content.Title = model.Title; content.Description = model.Description; content.Access = model.Access; Album album = null; if (!model.AlbumName.IsNullOrWhiteSpace() && content.Album.Name != model.AlbumName) { //Find the Album album = db.Albums.FirstOrDefault(a => a.Name == model.AlbumName && a.User_ID == userId); //Create the album if its null if (album == null) { album = new Album { Name = model.AlbumName, Creation_Date = DateTime.Now, User_ID = userId, Access = model.Access, Status = 1 }; db.Albums.Add(album); } content.Album = album; } try { db.SaveChanges(); reports.Add(new StatusReport { Title = "Success", Description = "Changes saved", Status = StatusReport.Success }); Session["Reports"] = reports; return(RedirectToAction("View", "Content", new { id = content.Content_ID })); } catch (Exception e) { Console.WriteLine(e); return(RedirectToAction("Index")); } } } } } reports.Add(new StatusReport { Title = "Error", Description = "Fill the forms properly.", Status = StatusReport.Danger }); Session["Reports"] = reports; return(View(model)); }