public async Task<ActionResult> DeleteSubmission(int submissionId) { var submissionToDelete = _db.Submissions.Find(submissionId); if (submissionToDelete != null) { // delete submission if delete request is issued by submission author if (submissionToDelete.UserName == User.Identity.Name) { submissionToDelete.IsDeleted = true; if (submissionToDelete.Type == 1) { submissionToDelete.Content = "deleted by author at " + DateTime.Now; } else { submissionToDelete.Content = "http://voat.co"; } // remove sticky if submission was stickied var existingSticky = _db.StickiedSubmissions.FirstOrDefault(s => s.SubmissionID == submissionId); if (existingSticky != null) { _db.StickiedSubmissions.Remove(existingSticky); } await _db.SaveChangesAsync(); DataCache.Submission.Remove(submissionId); } // delete submission if delete request is issued by subverse moderator else if (UserHelper.IsUserSubverseModerator(User.Identity.Name, submissionToDelete.Subverse)) { // mark submission as deleted submissionToDelete.IsDeleted = true; // move the submission to removal log var removalLog = new SubmissionRemovalLog { SubmissionID = submissionToDelete.ID, Moderator = User.Identity.Name, Reason = "This feature is not yet implemented", CreationDate = DateTime.Now }; _db.SubmissionRemovalLogs.Add(removalLog); if (submissionToDelete.Type == 1) { // notify submission author that his submission has been deleted by a moderator MesssagingUtility.SendPrivateMessage( "Voat", submissionToDelete.UserName, "Your submission has been deleted by a moderator", "Your [submission](/v/" + submissionToDelete.Subverse + "/comments/" + submissionToDelete.ID + ") has been deleted by: " + "/u/" + User.Identity.Name + " at " + DateTime.Now + " " + Environment.NewLine + "Original submission content was: " + Environment.NewLine + "---" + Environment.NewLine + "Submission title: " + submissionToDelete.Title + ", " + Environment.NewLine + "Submission content: " + submissionToDelete.Content ); } else { // notify submission author that his submission has been deleted by a moderator MesssagingUtility.SendPrivateMessage( "Voat", submissionToDelete.UserName, "Your submission has been deleted by a moderator", "Your [submission](/v/" + submissionToDelete.Subverse + "/comments/" + submissionToDelete.ID + ") has been deleted by: " + "/u/" + User.Identity.Name + " at " + DateTime.Now + " " + Environment.NewLine + "Original submission content was: " + Environment.NewLine + "---" + Environment.NewLine + "Link description: " + submissionToDelete.LinkDescription + ", " + Environment.NewLine + "Link URL: " + submissionToDelete.Content ); } // remove sticky if submission was stickied var existingSticky = _db.StickiedSubmissions.FirstOrDefault(s => s.SubmissionID == submissionId); if (existingSticky != null) { _db.StickiedSubmissions.Remove(existingSticky); } await _db.SaveChangesAsync(); DataCache.Submission.Remove(submissionId); } } string url = Request.UrlReferrer.AbsolutePath; return Redirect(url); }
public async Task <ActionResult> DeleteSubmission(int submissionId) { var submissionToDelete = _db.Messages.Find(submissionId); if (submissionToDelete != null) { // delete submission if delete request is issued by submission author if (submissionToDelete.Name == User.Identity.Name) { submissionToDelete.Name = "deleted"; if (submissionToDelete.Type == 1) { submissionToDelete.MessageContent = "deleted by author at " + DateTime.Now; } else { submissionToDelete.MessageContent = "http://voat.co"; } // remove sticky if submission was stickied var existingSticky = _db.Stickiedsubmissions.FirstOrDefault(s => s.Submission_id == submissionId); if (existingSticky != null) { _db.Stickiedsubmissions.Remove(existingSticky); } await _db.SaveChangesAsync(); } // delete submission if delete request is issued by subverse moderator else if (Utils.User.IsUserSubverseAdmin(User.Identity.Name, submissionToDelete.Subverse) || Utils.User.IsUserSubverseModerator(User.Identity.Name, submissionToDelete.Subverse)) { // mark submission as deleted (TODO: don't use name, add a new bit field to messages table instead) submissionToDelete.Name = "deleted"; // move the submission to removal log var removalLog = new SubmissionRemovalLog { SubmissionId = submissionToDelete.Id, Moderator = User.Identity.Name, ReasonForRemoval = "This feature is not yet implemented", RemovalTimestamp = DateTime.Now }; _db.SubmissionRemovalLogs.Add(removalLog); if (submissionToDelete.Type == 1) { // notify submission author that his submission has been deleted by a moderator MesssagingUtility.SendPrivateMessage( "Voat", submissionToDelete.Name, "Your submission has been deleted by a moderator", "Your [submission](/v/" + submissionToDelete.Subverse + "/comments/" + submissionToDelete.Id + ") has been deleted by: " + "/u/" + User.Identity.Name + " at " + DateTime.Now + " " + Environment.NewLine + "Original submission content was: " + Environment.NewLine + "---" + Environment.NewLine + "Submission title: " + submissionToDelete.Title + ", " + Environment.NewLine + "Submission content: " + submissionToDelete.MessageContent ); } else { // notify submission author that his submission has been deleted by a moderator MesssagingUtility.SendPrivateMessage( "Voat", submissionToDelete.Name, "Your submission has been deleted by a moderator", "Your [submission](/v/" + submissionToDelete.Subverse + "/comments/" + submissionToDelete.Id + ") has been deleted by: " + "/u/" + User.Identity.Name + " at " + DateTime.Now + " " + Environment.NewLine + "Original submission content was: " + Environment.NewLine + "---" + Environment.NewLine + "Link description: " + submissionToDelete.Linkdescription + ", " + Environment.NewLine + "Link URL: " + submissionToDelete.MessageContent ); } // remove sticky if submission was stickied var existingSticky = _db.Stickiedsubmissions.FirstOrDefault(s => s.Submission_id == submissionId); if (existingSticky != null) { _db.Stickiedsubmissions.Remove(existingSticky); } await _db.SaveChangesAsync(); } } string url = Request.UrlReferrer.AbsolutePath; return(Redirect(url)); }