ActionResult PerformTransition(User user, DecisionInput input, Action <Submission> action, string successText) { if (ModelState.IsValid) { using (var db = new DataContext(user)) { var submission = db.Submissions.Include(x => x.CallForSpeakers) .Include(x => x.Submitter) .SingleOrDefault(x => x.Id == input.Id && x.CallForSpeakers.Id == input.CallForSpeakersId && x.CallForSpeakers.Organizer.Id == user.Id); if (submission != null) { action(submission); db.SaveChanges(); Success(successText); } else { Error("Invalid submission"); } return(RedirectToAction("Review", new { id = input.CallForSpeakersId })); } } return(RenderReview(user, input.CallForSpeakersId)); }
public ActionResult Accept(User user, DecisionInput input) { return(PerformTransition(user, input, x => x.Accept(_email), "You have successfully accepted this submission.")); }