public ActionResult CreateDiscussion(int projectId, int activityId, DiscussionViewModel.Input model)
        {
            // todo error handling

            var activity = GetActivity(projectId, activityId);
            if (activity == null)
                return new HttpNotFoundResult();

            var person = DbSession.GetCurrentPerson();
            var discussion = Discussion.Forge(model.Name, model.Content, activity.Id, person.Id);
            DbSession.Store(discussion);

            var vm = discussion.MapTo<DiscussionViewModel>();
            vm.Person = person.MapTo<PersonViewModel>();
            vm.Entity = activity.MapTo<EntityViewModel>();
            return new JsonNetResult {Data = vm};
        }
        public ActionResult Post(int projectId, int? activityId, DiscussionViewModel.Input model)
        {
            if (!ModelState.IsValid)
                return View("Details");

            var entity = activityId.HasValue
                             ? (Entity) DbSession.Load<Activity>(activityId)
                             : DbSession.Load<Project>(projectId);
            if (entity == null)
                return HttpNotFound();

            var personId = DbSession.GetCurrentPersonId();
            var discussion = Discussion.Forge(model.Name, model.Content, entity.Id, personId);

            DbSession.Store(discussion);

            var discussionViewModel = discussion.MapTo<DiscussionViewModel>();
            if (Request.IsAjaxRequest())
                return new JsonNetResult {Data = discussionViewModel};
            return RedirectToRoute("discussions_get");
        }