public ActionResult Create(int tagId = 0)
        {
            ViewBag.System = Constant.String.DiscussionSystem;
            DiscussionCreateViewModel model = new DiscussionCreateViewModel();

            model.Privacy     = MainPostPrivacyEnum.Everyone;
            model.TagList     = cService.GetCategorys();
            model.tagId       = tagId;
            ViewBag.ReturnUrl = _previousUrl == default(string) ? Url.Action("Index") : Url.Content(_previousUrl);
            return(View("Views/DiscussionCreateView", model));
        }
        public ActionResult Create(DiscussionCreateViewModel discussionCreateVM)
        {
            if (!ModelState.IsValid)
            {
                return(View("Views/DiscussionCreateView", discussionCreateVM));
            }
            Discussion discussion = new Discussion();

            discussion = Mapper.Map <DiscussionCreateViewModel, Discussion>(discussionCreateVM);
            discussion.LastEditedDate = DateTime.Now;
            discussion.UserId         = User.Identity.GetUserId <int>();
            discussion.Tags           = cService.GetTags(discussionCreateVM.TagIds);
            discussion.Invitations    = cService.GetInvitations(discussionCreateVM.InviteIds, User.Identity.GetUserId <int>());
            discussion.Status         = CP_MathHub.Entity.PostStatusEnum.Active;
            dService.InsertDiscussion(discussion);

            EditedLog editedlog = new EditedLog();

            editedlog.Content     = discussion.Content;
            editedlog.CreatedDate = DateTime.Now;
            editedlog.Title       = discussionCreateVM.Title;
            editedlog.PostId      = discussion.Id;
            editedlog.UserId      = discussion.UserId;


            discussion.EditedContents.Add(editedlog);


            dService.EditDiscussion(discussion);

            if (discussion.Id != 0)
            {
                //new Thread(() =>
                //{
                foreach (int inviteeId in discussion.Invitations.Select(i => i.InviteeId))
                {
                    Notification notification = new Notification();
                    notification.AuthorId    = _currentUserId;
                    notification.CreatedDate = DateTime.Now;
                    notification.Content     = discussion.Title;
                    notification.Seen        = false;
                    notification.Type        = NotificationSettingEnum.Invited;
                    notification.UserId      = inviteeId;
                    notification.Link        = Url.Action("Detail", "Discussion", new { id = discussion.Id });
                    cService.AddNotification(notification);
                    using (RealTimeService rService = new RealTimeService(new CPMathHubModelContainer(), notification.UserId))
                    {
                        IEnumerable <string> connectionIds = RealTimeHub.Connections.GetConnections(notification.UserId);
                        foreach (string conId in connectionIds)
                        {
                            _hub.Clients.Client(conId).notifyNewActivity(rService.CountNewActivityNotification());
                        }
                    }
                }
                //    }
                //).Start();
                return(RedirectToAction("Detail", new { id = discussion.Id }));
            }
            else
            {
                return(new HttpStatusCodeResult(500));
            }
        }