예제 #1
0
        public ActionResult CreateAlcohol(CreateAlcoholVM model, List<String> AssociatedReports)
        {
            var db = new ChwinockEntities();

            var newAlcohol = new Alcohol();
            newAlcohol.AlcoholID = Guid.NewGuid();
            newAlcohol.Name = model.Alcohol.Name;
            newAlcohol.Price = model.Alcohol.Price;
            newAlcohol.Percentage = model.Alcohol.Percentage;
            newAlcohol.Type = model.Alcohol.Type;
            newAlcohol.Thoughts = model.Alcohol.Thoughts;

            if (AssociatedReports != null)
            {
                foreach (var r in AssociatedReports)
                {
                    var id = Guid.Parse(r);
                    newAlcohol.Reports.Add(db.Reports.Single(x => x.ReportID == id));
                }
            }

            db.Alcohols.AddObject(newAlcohol);

            db.SaveChanges();

            return RedirectToAction("Manage");
        }
예제 #2
0
        public ContentResult GenerateChillNameFor(String userId)
        {
            var db = new ChwinockEntities();

            var targetUser = db.Users.Single(u => u.UserID == userId);

            var prevChillName = targetUser.ChillName;
            var newChillName = "";

            do{
                newChillName = Common.Utilities.GenerateName(targetUser.Name, new System.IO.StreamReader(Server.MapPath(@"~/Content/name-list.txt")));
            } while(newChillName == prevChillName);

            targetUser.ChillName = newChillName;

            db.SaveChanges();

            return Content(newChillName);
        }
예제 #3
0
        public ActionResult CreateReport(HttpPostedFileBase file, Report model, String PhotoDataChoice)
        {
            file = Request.Files[0];

            var photoId = Guid.NewGuid();
            var photoUrl = photoId.ToString() + "." + file.FileName.Split('.')[1];
            var reportId = Guid.NewGuid();

            /** Set up report in DB **/
            var db = new ChwinockEntities();

            model.ReportID = reportId;
            model.CreateDate = DateTime.UtcNow;
            model.Content = model.Content.Replace("\n", "<br />");

            // Set up photo
            model.Photo.Url = photoUrl;
            model.Photo.PhotoID = photoId;
            model.Photo.ReportID = reportId;

            // Get extra data
            if (PhotoDataChoice == "Metadata")
            {
                model = Common.Utilities.GetPhotoMetadata(model, file);
            }
            else
            {
                model = Common.Utilities.GetPhotoLocation(model);
            }

            db.Photos.AddObject(model.Photo);

            Common.Utilities.UploadPhoto(file, photoUrl);

            // Connect report to photo
            model.PhotoID = photoId;

            db.Reports.AddObject(model);

            //Save everything in DB
            db.SaveChanges();

            return RedirectToAction("Manage");
        }
예제 #4
0
        public ActionResult EditSong(CreateSongVM model, List<String> AssociatedReports)
        {
            var db = new ChwinockEntities();

            var targetSong = db.Songs.Single(r => r.SongID == model.Song.SongID);

            targetSong.Artist = model.Song.Artist;
            targetSong.Name = model.Song.Name;
            targetSong.Url = model.Song.Url;

            // Remove associated reports
            List<Report> reportsToRemove = new List<Report>();
            foreach (var r in targetSong.Reports)
            {
                reportsToRemove.Add(r);
            }
            foreach (var r in reportsToRemove)
            {
                targetSong.Reports.Remove(r);
            }

            if (AssociatedReports != null)
            {
                // Add new ones
                foreach (var r in AssociatedReports)
                {
                    var id = Guid.Parse(r);
                    targetSong.Reports.Add(db.Reports.Single(x => x.ReportID == id));
                }
            }

            db.SaveChanges();

            return RedirectToAction("Manage");
        }
예제 #5
0
        public ActionResult EditReport(Report model, String PhotoDataChoice)
        {
            var db = new ChwinockEntities();

            var targetReport = db.Reports.Single(r => r.ReportID == model.ReportID);

            // If a file was added, change the photos
            if (Request.Files[0].ContentLength > 0)
            {
                // Delete old photo blob
                //Common.Utilities.DeletePhotoBlob(targetReport.PhotoID);

                // Add new photo blob
                HttpPostedFileBase file = Request.Files[0];
                var photoUrl = targetReport.PhotoID.ToString() + "." + file.FileName.Split('.')[1];

                Common.Utilities.UploadPhoto(file, photoUrl);

                // Change the db entry, we change the URL in case the
                // extension of the image has changed, but the actual
                // Guid remains the same
                targetReport.Photo.Url = photoUrl;

                // Get extra data
                if (PhotoDataChoice == "Metadata")
                {
                    targetReport = Common.Utilities.GetPhotoMetadata(model, file);
                }
                else
                {
                    targetReport = Common.Utilities.GetPhotoLocation(model);
                }

            }

            // Change other photo attributes
            targetReport.Photo.Title = model.Photo.Title;
            targetReport.Photo.Caption = model.Photo.Caption;
            targetReport.Photo.Location = model.Photo.Location;

            // Change report properties
            targetReport.Title = model.Title;
            targetReport.Author = model.Author;

            // Convert formatting
            model.Content = model.Content.Replace("\n", "<br />");
            targetReport.Content = model.Content;

            db.SaveChanges();

            return RedirectToAction("Manage");
        }
예제 #6
0
        public ActionResult EditAlcohol(CreateAlcoholVM model, List<String> AssociatedReports)
        {
            var db = new ChwinockEntities();

            var targetAlcohol = db.Alcohols.Single(r => r.AlcoholID == model.Alcohol.AlcoholID);

            targetAlcohol.Name = model.Alcohol.Name;
            targetAlcohol.Type = model.Alcohol.Type;
            targetAlcohol.Price = model.Alcohol.Price;
            targetAlcohol.Percentage = model.Alcohol.Percentage;
            targetAlcohol.Thoughts = model.Alcohol.Thoughts;

            // Remove associated reports
            List<Report> reportsToRemove = new List<Report>();
            foreach (var r in targetAlcohol.Reports)
            {
                reportsToRemove.Add(r);
            }
            foreach (var r in reportsToRemove)
            {
                targetAlcohol.Reports.Remove(r);
            }
            if (AssociatedReports != null)
            {
                // Add new ones
                foreach (var r in AssociatedReports)
                {
                    var id = Guid.Parse(r);
                    targetAlcohol.Reports.Add(db.Reports.Single(x => x.ReportID == id));
                }
            }

            db.SaveChanges();

            return RedirectToAction("Manage");
        }
예제 #7
0
        public ActionResult DeleteUser(String userId)
        {
            var db = new ChwinockEntities();

            var targetUser = db.Users.Single(u => u.UserID == userId);

            List<Comment> commentsToDelete = new List<Comment>();
            foreach (var c in targetUser.Comments)
            {
                commentsToDelete.Add(c);
            }
            foreach (var c in commentsToDelete)
            {
                db.Comments.DeleteObject(c);
            }

            List<Rating> ratingsToDelete = new List<Rating>();
            foreach (var c in targetUser.Ratings)
            {
                ratingsToDelete.Add(c);
            }
            foreach (var c in ratingsToDelete)
            {
                db.Ratings.DeleteObject(c);
            }

            db.Users.DeleteObject(targetUser);

            db.SaveChanges();

            return RedirectToAction("Manage");
        }
예제 #8
0
        public ActionResult DeleteSong(Guid songId)
        {
            var db = new ChwinockEntities();

            var songToDelete = db.Songs.Single(s => s.SongID == songId);

            // Delete report attachments
            var reportsToDelete = new List<Report>();
            foreach (var r in songToDelete.Reports)
            {
                reportsToDelete.Add(r);
            }
            foreach (var r in reportsToDelete)
            {
                songToDelete.Reports.Remove(r);
            }

            db.Songs.DeleteObject(songToDelete);

            db.SaveChanges();

            return RedirectToAction("Manage");
        }
예제 #9
0
        public ActionResult DeleteReport(Guid reportId)
        {
            var db = new ChwinockEntities();

            db = Common.Utilities.DeleteReport(db, reportId);

            db.SaveChanges();

            return RedirectToAction("Manage");
        }
예제 #10
0
        public ActionResult DeleteAlcohol(Guid alcoholId)
        {
            var db = new ChwinockEntities();

            var alcoholToDelete = db.Alcohols.Single(s => s.AlcoholID == alcoholId);

            // Delete report attachments
            var reportsToDelete = new List<Report>();
            foreach (var r in alcoholToDelete.Reports)
            {
                reportsToDelete.Add(r);
            }
            foreach (var r in reportsToDelete)
            {
                alcoholToDelete.Reports.Remove(r);
            }

            db.Alcohols.DeleteObject(alcoholToDelete);

            db.SaveChanges();

            return RedirectToAction("Manage");
        }
예제 #11
0
        public ActionResult CreateUser(String userId, String name)
        {
            var db = new ChwinockEntities();

            if (!db.Users.Any(u => u.UserID == userId))
            {
                var newUser = new User();
                newUser.UserID = userId;
                newUser.Name = name;
                // User starts with normal name
                newUser.ChillName = name;

                db.Users.AddObject(newUser);

                db.SaveChanges();
            }

            return RedirectToAction("Index", "Home");
        }
예제 #12
0
        public ActionResult CreateSong(CreateSongVM model, List<String> AssociatedReports)
        {
            var db = new ChwinockEntities();

            var newSong = new Song();
            newSong.SongID = Guid.NewGuid();
            newSong.Artist = model.Song.Artist;
            newSong.Name = model.Song.Name;
            newSong.Url = model.Song.Url;

            if (AssociatedReports != null)
            {
                foreach (var r in AssociatedReports)
                {
                    var id = Guid.Parse(r);
                    newSong.Reports.Add(db.Reports.Single(x => x.ReportID == id));
                }
            }

            db.Songs.AddObject(newSong);

            db.SaveChanges();

            return RedirectToAction("Manage");
        }
예제 #13
0
        public ActionResult PostComment(Comment model)
        {
            var db = new ChwinockEntities();

            model.CommentID = Guid.NewGuid();
            model.CreateDate = DateTime.UtcNow;

            db.Comments.AddObject(model);

            db.SaveChanges();

            return RedirectToAction("Index");
        }
예제 #14
0
        public ActionResult Rate(Rating model)
        {
            var db = new ChwinockEntities();

            // Check to see if User has already rated this report
            if (db.Ratings.Any(x => x.UserID == model.UserID && x.ReportID == model.ReportID))
            {
                var targetRating = db.Ratings.Single(x => x.UserID == model.UserID && x.ReportID == model.ReportID);

                targetRating.Rank = model.Rank;
            }
            else
            {
                var newRating = new Rating();

                newRating.RatingID = Guid.NewGuid();
                newRating.ReportID = model.ReportID;
                newRating.UserID = model.UserID;
                newRating.Rank = model.Rank;

                db.Ratings.AddObject(newRating);
            }

            db.SaveChanges();

            return RedirectToAction("Index");
        }