public async Task <ActionResult> ModeratorDelete(string subverse, int submissionID, ModeratorDeleteContentViewModel model) { //New Domain Submission //var q = new QuerySubmission(submissionID); //var s = await q.ExecuteAsync(); //Legacy Data Submission (Since views expect this type, we use it for now) var s = DataCache.Submission.Retrieve(submissionID); ViewBag.Submission = s; if (s == null || s.ID != model.ID) { ModelState.AddModelError("", "Can not find submission. Is it hiding?"); return(View(model)); } if (s.IsDeleted) { ModelState.AddModelError("", "Can not delete a deleted post. Do you have no standards?"); return(View(model)); } if (!ModeratorPermission.HasPermission(User, s.Subverse, Domain.Models.ModeratorAction.DeletePosts)) { return(HybridError(ErrorViewModel.GetErrorViewModel(ErrorType.Unauthorized))); } if (!ModelState.IsValid) { return(View(model)); } var cmd = new DeleteSubmissionCommand(model.ID, model.Reason).SetUserContext(User); var r = await cmd.Execute(); if (r.Success) { return(RedirectToRoute(Models.ROUTE_NAMES.SUBVERSE_INDEX, new { subverse = s.Subverse })); } else { ModelState.AddModelError("", r.Message); return(View(model)); } }
public async Task <ActionResult> ModeratorDelete(string subverse, int submissionID, ModeratorDeleteContentViewModel model) { var q = new QueryComment(model.ID); var comment = await q.ExecuteAsync(); if (comment == null || comment.SubmissionID != submissionID) { ModelState.AddModelError("", "Can not find comment. Who did this?"); return(View(new ModeratorDeleteContentViewModel())); } if (!ModeratorPermission.HasPermission(User.Identity.Name, comment.Subverse, Domain.Models.ModeratorAction.DeleteComments)) { return(new HttpUnauthorizedResult()); } if (!ModelState.IsValid) { return(View(model)); } var cmd = new DeleteCommentCommand(model.ID, model.Reason); var r = await cmd.Execute(); if (r.Success) { return(RedirectToRoute("SubverseCommentsWithSort_Short", new { subverseName = subverse, submissionID = submissionID })); } else { ModelState.AddModelError("", r.Message); return(View(model)); } }