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)); } }