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)); } }
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)); } }