public ActionResult AnswerEvent(int groupId, int eventId, bool answer) { var service = new Service(); User user = service.GetUser(User.Identity.Name); if (service.IsInvitedToEvent(user.UserID, eventId)) { Event theEvent = service.GetEventById(eventId); EventViewModel model = service.CastToViewModel(theEvent, null); if (model.State == State.FULL) { TempData["message"] = new Message("This event is already full", MessageType.INFORMATION); } else if (answer && (model.State == State.OFF || model.State == State.ON)) { TempData["message"] = new Message("This event has expired", MessageType.INFORMATION); } else if (service.AnswerEvent(user.UserID, eventId, answer)) { if (answer) { TempData["message"] = new Message("You are listed as an attendee of " + theEvent.Name, MessageType.SUCCESS); } else { TempData["message"] = new Message("You declined the invitation to " + theEvent.Name, MessageType.SUCCESS); } } else { TempData["message"] = new Message("An error occured when processing your request, please try again later.", MessageType.ERROR); } } else { TempData["message"] = new Message("Either the event you are trying to access doesn't exist or you do not have sufficient access to it.", MessageType.INFORMATION); } if (Request.IsAjaxRequest()) { return Json(new { id = eventId, message = TempData["message"] as Message }, JsonRequestBehavior.AllowGet); } return RedirectToAction("Index"); }