Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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"));
                    }
                }
            }
        }
Esempio n. 4
0
        // 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));
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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
            });
        }
Esempio n. 7
0
        /// 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"));
        }
Esempio n. 8
0
        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));
        }