예제 #1
0
        public void AnswerQuestion(Answer answer)
        {
            EditedLog editedlog = new EditedLog();

            editedlog.Content     = answer.Content;
            editedlog.CreatedDate = DateTime.Now;
            editedlog.UserId      = answer.UserId;
            answer.EditedContents.Add(editedlog);
            _dal.Repository <Answer>().Insert(answer);
            _dal.Save();
        }
예제 #2
0
        public void CommentPost(Comment comment)
        {
            _dal.Repository <Comment>().Insert(comment);
            EditedLog log = new EditedLog();

            log.PostId      = comment.Id;
            log.UserId      = comment.UserId;
            log.Content     = comment.Content;
            log.CreatedDate = comment.CreatedDate;
            _dal.Repository <EditedLog>().Insert(log);
            _dal.Save();
        }
예제 #3
0
        public ActionResult Edit(ArticleEditViewModel articleEditVM)
        {
            if (!ModelState.IsValid)
            {
                return(View("Views/BlogEditView", articleEditVM));
            }
            Article article = bService.GetArticle(articleEditVM.Id);

            if (article.Content == articleEditVM.Content && article.Title == articleEditVM.Title)
            {
                return(RedirectToAction("Detail", new { id = article.Id }));
            }
            if (article.UserId == _currentUserId || User.IsInRole("Administrator") || User.IsInRole("Moderator") || User.IsInRole("Expert"))
            {
                article.Title   = articleEditVM.Title;
                article.Content = articleEditVM.Content;
                article.Privacy = articleEditVM.Privacy == 0 ? article.Privacy : articleEditVM.Privacy;
                if (article.UserId == _currentUserId)
                {
                    article.PublicDate = articleEditVM.PublicDate.Value;
                }
                if (article.PublicDate <= DateTime.Now)
                {
                    EditedLog editedlog = new EditedLog();
                    editedlog.Content      = articleEditVM.Content;
                    editedlog.CreatedDate  = DateTime.Now;
                    editedlog.PostId       = article.Id;
                    editedlog.Title        = articleEditVM.Title;
                    editedlog.UserId       = User.Identity.GetUserId <int>();
                    article.LastEditedDate = editedlog.CreatedDate;
                    article.EditedContents.Add(editedlog);
                }
                bService.UpdateArticle(article);

                return(RedirectToAction("Detail", new { id = article.Id }));
            }
            //string returnUrl = Request.Cookies.Get("returnUrl") != null ? Request.Cookies.Get("returnUrl").Value : default(string);
            if (_previousUrl == default(string))
            {
                return(RedirectToAction("Detail", new { id = article.Id }));
            }
            else
            {
                return(Redirect(Url.Content(_previousUrl)));
            }
        }
예제 #4
0
        public ActionResult Edit(QuestionEditViewModel questionVM)
        {
            if (!ModelState.IsValid)
            {
                return(View("Views/QuestionEditView", questionVM));
            }
            Question question = qService.GetQuestion(questionVM.Id);

            if (question.Content == questionVM.Content && question.Title == questionVM.Title)
            {
                return(RedirectToAction("Detail", new { id = question.Id }));
            }
            if (question.UserId == _currentUserId || User.IsInRole("Administrator") || User.IsInRole("Moderator") || User.IsInRole("Expert"))
            {
                EditedLog editedlog = new EditedLog();
                editedlog.Content     = questionVM.Content;
                editedlog.CreatedDate = DateTime.Now;
                editedlog.PostId      = question.Id;
                editedlog.UserId      = User.Identity.GetUserId <int>();
                editedlog.Title       = questionVM.Title;

                question.Title   = questionVM.Title;
                question.Content = questionVM.Content;
                question.Privacy = questionVM.Privacy == 0 ? question.Privacy : questionVM.Privacy;

                question.LastEditedDate = editedlog.CreatedDate;
                question.EditedContents.Add(editedlog);

                qService.EditQuestion(question);
                return(RedirectToAction("Detail", new { id = question.Id }));
            }
            //ViewBag.ErrorMessage = "Bạn không có quyền chỉnh sửa câu hỏi này";
            //string returnUrl = Request.Cookies.Get("returnUrl") != null ? Request.Cookies.Get("returnUrl").Value : default(string);
            if (_previousUrl == default(string))
            {
                return(RedirectToAction("Detail", new { id = question.Id }));
            }
            else
            {
                return(Redirect(Url.Content(_previousUrl)));
            }
        }
예제 #5
0
        public ActionResult Edit(DiscussionEditViewModel discussionEditVM)
        {
            if (!ModelState.IsValid)
            {
                return(View("Views/DiscussionEditView", discussionEditVM));
            }
            Discussion discussion = dService.GetDiscussion(discussionEditVM.Id);

            if (discussion.Content == discussionEditVM.Content && discussion.Title == discussionEditVM.Title)
            {
                return(RedirectToAction("Detail", new { id = discussion.Id }));
            }
            if (discussion.UserId == _currentUserId || User.IsInRole("Administrator") || User.IsInRole("Moderator") || User.IsInRole("Expert"))
            {
                EditedLog editedlog = new EditedLog();
                editedlog.Content     = discussionEditVM.Content;
                editedlog.CreatedDate = DateTime.Now;
                editedlog.Title       = discussionEditVM.Title;
                editedlog.PostId      = discussion.Id;
                editedlog.UserId      = _currentUserId;

                discussion.Title   = discussionEditVM.Title;
                discussion.Content = discussionEditVM.Content;
                discussion.Privacy = discussionEditVM.Privacy == 0 ? discussion.Privacy : discussionEditVM.Privacy;

                discussion.LastEditedDate = editedlog.CreatedDate;
                discussion.EditedContents.Add(editedlog);

                dService.EditDiscussion(discussion);

                return(RedirectToAction("Detail", new { id = discussion.Id }));
            }
            //string returnUrl = Request.Cookies.Get("returnUrl") != null ? Request.Cookies.Get("returnUrl").Value : default(string);
            if (_previousUrl == default(string))
            {
                return(RedirectToAction("Detail", new { id = discussion.Id }));
            }
            else
            {
                return(Redirect(Url.Content(_previousUrl)));
            }
        }
예제 #6
0
        public Answer EditAnswer(Answer answer, int userId, bool hasPermission)
        {
            Answer a = _dal.Repository <Answer>().GetById(answer.Id);

            if (a.UserId == userId || hasPermission)
            {
                a.Content        = answer.Content;
                a.LastEditedDate = DateTime.Now;

                EditedLog editedlog = new EditedLog();
                editedlog.Content     = answer.Content;
                editedlog.CreatedDate = a.LastEditedDate;
                editedlog.UserId      = userId;

                a.EditedContents.Add(editedlog);
                _dal.Save();
                return(a);
            }
            return(a);
        }
예제 #7
0
        public Comment UpdateComment(Comment c, int userId)
        {
            Comment comment = _dal.Repository <Comment>().GetById(c.Id);

            if (comment.Content == c.Content)
            {
                return(comment);
            }
            comment.Content        = c.Content;
            comment.LastEditedDate = DateTime.Now;
            _dal.Repository <Comment>().Update(comment);
            EditedLog log = new EditedLog();

            log.PostId      = comment.Id;
            log.UserId      = comment.UserId;
            log.Content     = comment.Content;
            log.CreatedDate = comment.LastEditedDate;
            _dal.Repository <EditedLog>().Insert(log);
            _dal.Save();
            return(comment);
        }
예제 #8
0
        public ActionResult CategoryIndex(CategoryViewModel discussionTagHomeVM, int tagId)
        {
            Discussion discussion = new Discussion();

            discussion.Title          = discussionTagHomeVM.Tile;
            discussion.Content        = discussionTagHomeVM.Content;
            discussion.CreatedDate    = DateTime.Now;
            discussion.LastEditedDate = discussion.CreatedDate;
            discussion.Privacy        = MainPostPrivacyEnum.Everyone;
            discussion.Tags.Add(cService.GetTag(tagId));
            discussion.UserId     = User.Identity.GetUserId <int>();
            discussion.LastViewed = DateTime.Now;
            discussion.Status     = PostStatusEnum.Active;
            dService.InsertDiscussion(discussion);

            EditedLog editedlog = new EditedLog();

            editedlog.Content     = discussion.Content;
            editedlog.CreatedDate = discussion.LastEditedDate;
            editedlog.PostId      = discussion.Id;
            editedlog.UserId      = discussion.UserId;

            discussion.EditedContents.Add(editedlog);
            dService.EditDiscussion(discussion);

            //discussion.Tags = cService.GetTags(discussionTagHomeVM.TagIds);

            if (discussion.Id != 0)
            {
                return(RedirectToAction("Detail", new { @id = discussion.Id }));
            }
            else
            {
                return(View("Views/Error"));
            }
        }
예제 #9
0
        public ActionResult Create(QuestionCreateViewModel questionVM)
        {
            if (!ModelState.IsValid)
            {
                return(View("Views/QuestionCreateView", questionVM));
            }
            Question question = new Question();

            question                = Mapper.Map <QuestionCreateViewModel, Question>(questionVM);
            question.CreatedDate    = DateTime.Now;
            question.LastEditedDate = question.CreatedDate;
            question.UserId         = User.Identity.GetUserId <int>();
            question.Tags           = cService.GetTags(questionVM.TagIds);
            question.Invitations    = cService.GetInvitations(questionVM.InviteIds, User.Identity.GetUserId <int>());
            question.Status         = PostStatusEnum.Active;
            qService.InsertQuestion(question);

            EditedLog editedlog = new EditedLog();

            editedlog.Content     = question.Content;
            editedlog.CreatedDate = question.LastEditedDate;
            editedlog.PostId      = question.Id;
            editedlog.UserId      = question.UserId;
            editedlog.Title       = question.Title;

            question.EditedContents.Add(editedlog);
            qService.EditQuestion(question);
            //Console.WriteLine(questionVM.Tags[0]);
            if (question.Id != 0)
            {
                //new Thread(() =>
                //{
                foreach (int inviteeId in question.Invitations.Select(i => i.InviteeId))
                {
                    Notification notification = new Notification();
                    notification.AuthorId    = _currentUserId;
                    notification.CreatedDate = DateTime.Now;
                    notification.Content     = question.Title;
                    notification.Seen        = false;
                    notification.Type        = NotificationSettingEnum.Invited;
                    notification.UserId      = inviteeId;
                    notification.Link        = Url.Action("Detail", "Question", new { id = question.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 = question.Id }));
            }
            else
            {
                return(new HttpStatusCodeResult(500));
            }
        }
예제 #10
0
        public ActionResult Create(ArticleCreateViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Views/BlogCreateView", model));
            }
            Article article = new Article();

            article             = Mapper.Map <ArticleCreateViewModel, Article>(model);
            article.UserId      = User.Identity.GetUserId <int>();
            article.Tags        = cService.GetTags(model.TagIds);
            article.Invitations = cService.GetInvitations(model.InviteIds, User.Identity.GetUserId <int>());
            if (article.PublicDate.Value.Date == DateTime.Now.Date)
            {
                article.PublicDate = DateTime.Now;
            }

            bService.InsertArticle(article);

            EditedLog editedlog = new EditedLog();

            editedlog.Content     = article.Content;
            editedlog.CreatedDate = article.LastEditedDate;
            editedlog.PostId      = article.Id;
            editedlog.UserId      = article.UserId;
            editedlog.Title       = article.Title;
            article.EditedContents.Add(editedlog);

            bService.UpdateArticle(article);
            //Console.WriteLine(questionVM.Tags[0]);
            if (article.Id != 0)
            {
                //new Thread(() =>
                //{
                foreach (int inviteeId in article.Invitations.Select(i => i.InviteeId))
                {
                    Notification notification = new Notification();
                    notification.AuthorId    = _currentUserId;
                    notification.CreatedDate = DateTime.Now;
                    notification.Content     = article.Title;
                    notification.Seen        = false;
                    notification.Type        = NotificationSettingEnum.Invited;
                    notification.UserId      = inviteeId;
                    notification.Link        = Url.Action("Detail", "Article", new { id = article.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 = article.Id }));
            }
            else
            {
                return(new HttpStatusCodeResult(500));
            }
        }