public ActionResult ToggleSticky(int submissionID)
        {
            // get model for selected submission
            var submissionModel = _db.Submissions.Find(submissionID);

            if (submissionModel == null || submissionModel.IsDeleted)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            // check if caller is subverse moderator, if not, deny change
            if (!ModeratorPermission.HasPermission(User.Identity.Name, submissionModel.Subverse, Domain.Models.ModeratorAction.AssignStickies))
            {
                return(new HttpUnauthorizedResult());
            }
            try
            {
                // find and clear current sticky if toggling
                var existingSticky = _db.StickiedSubmissions.FirstOrDefault(s => s.SubmissionID == submissionID);
                if (existingSticky != null)
                {
                    _db.StickiedSubmissions.Remove(existingSticky);
                }
                else
                {
                    // remove all stickies for subverse matching submission subverse
                    _db.StickiedSubmissions.RemoveRange(_db.StickiedSubmissions.Where(s => s.Subverse == submissionModel.Subverse));

                    // set new submission as sticky
                    var stickyModel = new StickiedSubmission
                    {
                        SubmissionID = submissionID,
                        CreatedBy    = User.Identity.Name,
                        CreationDate = Repository.CurrentDate,
                        Subverse     = submissionModel.Subverse
                    };

                    _db.StickiedSubmissions.Add(stickyModel);
                }

                _db.SaveChanges();

                StickyHelper.ClearStickyCache(submissionModel.Subverse);

                return(new HttpStatusCodeResult(HttpStatusCode.OK));
            }
            catch (Exception)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError));
            }
        }
示例#2
0
        public ActionResult ToggleSticky(int submissionID)
        {
            // get model for selected submission
            var submissionModel = _db.Submissions.Find(submissionID);

            if (submissionModel == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            // check if caller is subverse moderator, if not, deny change
            if (!UserHelper.IsUserSubverseModerator(User.Identity.Name, submissionModel.Subverse))
            {
                return(new HttpUnauthorizedResult());
            }
            try
            {
                // find and clear current sticky if toggling
                var existingSticky = _db.StickiedSubmissions.FirstOrDefault(s => s.SubmissionID == submissionID);
                if (existingSticky != null)
                {
                    _db.StickiedSubmissions.Remove(existingSticky);
                    _db.SaveChanges();
                    return(new HttpStatusCodeResult(HttpStatusCode.OK));
                }

                // remove all stickies for subverse matching submission subverse
                _db.StickiedSubmissions.RemoveRange(_db.StickiedSubmissions.Where(s => s.Subverse == submissionModel.Subverse));

                // set new submission as sticky
                var stickyModel = new StickiedSubmission
                {
                    SubmissionID = submissionID,
                    CreatedBy    = User.Identity.Name,
                    CreationDate = DateTime.Now,
                    Subverse     = submissionModel.Subverse
                };

                _db.StickiedSubmissions.Add(stickyModel);
                _db.SaveChanges();

                DataCache.Submission.Remove(submissionID);
                return(new HttpStatusCodeResult(HttpStatusCode.OK));
            }
            catch (Exception)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError));
            }
        }