public virtual void DeleteSubscription(ForumSubscription subscription) { if (subscription != null) { _forumSubscriptionRepository.Delete(subscription); } }
protected void btnWatchForum_Click(object sender, EventArgs e) { Forum forum = ForumManager.GetForumByID(this.ForumID); if (forum == null) { return; } if (!ForumManager.IsUserAllowedToSubscribe(NopContext.Current.User)) { string loginURL = CommonHelper.GetLoginPageURL(true); Response.Redirect(loginURL); } ForumSubscription forumSubscription = ForumManager.GetAllSubscriptions(NopContext.Current.User.CustomerID, forum.ForumID, 0, 1, 0).FirstOrDefault(); if (forumSubscription == null) { forumSubscription = ForumManager.InsertSubscription(Guid.NewGuid(), NopContext.Current.User.CustomerID, forum.ForumID, 0, DateTime.Now); } else { ForumManager.DeleteSubscription(forumSubscription.ForumSubscriptionID); } CommonHelper.ReloadCurrentPage(); }
protected void btnDeleteSelected_Click(object sender, EventArgs e) { if (Page.IsValid) { try { foreach (GridViewRow row in gvForumSubscriptions.Rows) { var cbSelect = row.FindControl("cbSelect") as CheckBox; var hfForumSubscriptionId = row.FindControl("hfForumSubscriptionId") as HiddenField; if (cbSelect != null && cbSelect.Checked && hfForumSubscriptionId != null) { int forumSubscriptionId = int.Parse(hfForumSubscriptionId.Value); ForumSubscription subscription = ForumManager.GetSubscriptionById(forumSubscriptionId); if (subscription != null && subscription.UserId == NopContext.Current.User.CustomerId) { ForumManager.DeleteSubscription(forumSubscriptionId); } } } gvForumSubscriptions.PageIndex = 0; BindData(); } catch (Exception exc) { LogManager.InsertLog(LogTypeEnum.CustomerError, exc.Message, exc); } } }
public virtual void UpdateSubscription(ForumSubscription forumSubscription) { if (forumSubscription == null) { throw new ArgumentNullException("forumSubscription"); } _forumSubscriptionRepository.Update(forumSubscription); }
public void InsertSubscription(ForumSubscription forumSubscription) { if (forumSubscription == null) { throw new ArgumentNullException("forumSubscription"); } _forumSubscriptionRepository.Insert(forumSubscription); //event notification _eventPublisher.EntityInserted(forumSubscription); }
public virtual async Task UpdateSubscription(ForumSubscription forumSubscription) { if (forumSubscription == null) { throw new ArgumentNullException("forumSubscription"); } await forumSubscriptionRepository.UpdateAsync(forumSubscription); //event notification //_eventPublisher.EntityUpdated(forumSubscription); }
public virtual void UpdateSubscription(ForumSubscription forumSubscription) { if (forumSubscription == null) { throw new ArgumentNullException("forumSubscription"); } _forumSubscriptionRepository.Update(forumSubscription); //event notification _services.EventPublisher.EntityUpdated(forumSubscription); }
public virtual async Task <IActionResult> TopicWatch(int id) { var watchTopic = await _localizationService.GetResourceAsync("Forum.WatchTopic"); var unwatchTopic = await _localizationService.GetResourceAsync("Forum.UnwatchTopic"); var returnText = watchTopic; var forumTopic = await _forumService.GetTopicByIdAsync(id); if (forumTopic == null) { return(Json(new { Subscribed = false, Text = returnText, Error = true })); } var customer = await _workContext.GetCurrentCustomerAsync(); if (!await _forumService.IsCustomerAllowedToSubscribeAsync(customer)) { return(Json(new { Subscribed = false, Text = returnText, Error = true })); } var forumSubscription = (await _forumService.GetAllSubscriptionsAsync(customer.Id, 0, forumTopic.Id, 0, 1)).FirstOrDefault(); bool subscribed; if (forumSubscription == null) { forumSubscription = new ForumSubscription { SubscriptionGuid = Guid.NewGuid(), CustomerId = customer.Id, TopicId = forumTopic.Id, CreatedOnUtc = DateTime.UtcNow }; await _forumService.InsertSubscriptionAsync(forumSubscription); subscribed = true; returnText = unwatchTopic; } else { await _forumService.DeleteSubscriptionAsync(forumSubscription); subscribed = false; } return(Json(new { Subscribed = subscribed, Text = returnText, Error = false })); }
public virtual async Task <IActionResult> ForumWatch(string id) { string watchTopic = _localizationService.GetResource("Forum.WatchForum"); string unwatchTopic = _localizationService.GetResource("Forum.UnwatchForum"); string returnText = watchTopic; var forum = await _forumService.GetForumById(id); if (forum == null) { return(Json(new { Subscribed = false, Text = returnText, Error = true })); } if (!_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { return(Json(new { Subscribed = false, Text = returnText, Error = true })); } var forumSubscription = (await _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, forum.Id, "", 0, 1)).FirstOrDefault(); bool subscribed; if (forumSubscription == null) { forumSubscription = new ForumSubscription { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, ForumId = forum.Id, CreatedOnUtc = DateTime.UtcNow }; await _forumService.InsertSubscription(forumSubscription); subscribed = true; returnText = unwatchTopic; } else { await _forumService.DeleteSubscription(forumSubscription); subscribed = false; } return(Json(new { Subscribed = subscribed, Text = returnText, Error = false })); }
protected virtual object CreateModelPart(ForumSubscription part, MessageContext messageContext) { Guard.NotNull(messageContext, nameof(messageContext)); Guard.NotNull(part, nameof(part)); var m = new Dictionary <string, object> { { "SubscriptionGuid", part.SubscriptionGuid }, { "CustomerId", part.CustomerId }, { "ForumId", part.ForumId }, { "TopicId", part.TopicId }, { "CreatedOn", ToUserDate(part.CreatedOnUtc, messageContext) } }; PublishModelPartCreatedEvent <ForumSubscription>(part, m); return(m); }
public ActionResult TopicWatch(int id) { string watchTopic = _localizationService.GetResource("Forum.WatchTopic"); string unwatchTopic = _localizationService.GetResource("Forum.UnwatchTopic"); string returnText = watchTopic; var forumTopic = _forumService.GetTopicById(id); if (forumTopic == null) { return(Json(new { Subscribed = false, Text = returnText, Error = true })); } if (!_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { return(Json(new { Subscribed = false, Text = returnText, Error = true })); } var forumSubscription = _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, 0, forumTopic.Id, 0, 1).FirstOrDefault(); bool subscribed; if (forumSubscription == null) { forumSubscription = new ForumSubscription { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, TopicId = forumTopic.Id, CreatedOnUtc = DateTime.UtcNow }; _forumService.InsertSubscription(forumSubscription); subscribed = true; returnText = unwatchTopic; } else { _forumService.DeleteSubscription(forumSubscription); subscribed = false; } return(Json(new { Subscribed = subscribed, Text = returnText, Error = false })); }
protected string GetForumTopicLink(ForumSubscription subscription) { if (subscription == null) { return(String.Empty); } Forum forum = subscription.Forum; if (forum != null) { return(SEOHelper.GetForumUrl(forum)); } ForumTopic topic = subscription.Topic; if (topic != null) { return(SEOHelper.GetForumTopicUrl(topic)); } return(String.Empty); }
protected string GetForumTopicInfo(ForumSubscription subscription) { if (subscription == null) { return(String.Empty); } Forum forum = subscription.Forum; if (forum != null) { return(Server.HtmlEncode(forum.Name)); } ForumTopic topic = subscription.Topic; if (topic != null) { return(Server.HtmlEncode(topic.Subject)); } return(String.Empty); }
protected void btnWatchTopic_Click(object sender, EventArgs e) { var forumTopic = this.ForumService.GetTopicById(this.TopicId); if (forumTopic == null) { return; } if (!this.ForumService.IsUserAllowedToSubscribe(NopContext.Current.User)) { string loginURL = SEOHelper.GetLoginPageUrl(true); Response.Redirect(loginURL); } var forumSubscription = this.ForumService.GetAllSubscriptions(NopContext.Current.User.CustomerId, 0, forumTopic.ForumTopicId, 0, 1).FirstOrDefault(); if (forumSubscription == null) { forumSubscription = new ForumSubscription() { SubscriptionGuid = Guid.NewGuid(), UserId = NopContext.Current.User.CustomerId, TopicId = forumTopic.ForumTopicId, CreatedOn = DateTime.UtcNow }; this.ForumService.InsertSubscription(forumSubscription); } else { this.ForumService.DeleteSubscription(forumSubscription.ForumSubscriptionId); } CommonHelper.ReloadCurrentPage(); }
public virtual async Task <IActionResult> TopicCreate(EditForumTopicModel model, [FromServices] ICustomerService customerService) { if (!_forumSettings.ForumsEnabled) { return(RedirectToRoute("HomePage")); } var forum = await _forumService.GetForumById(model.ForumId); if (forum == null) { return(RedirectToRoute("Boards")); } if (ModelState.IsValid) { try { if (!_forumService.IsCustomerAllowedToCreateTopic(_workContext.CurrentCustomer, forum)) { return(new ChallengeResult()); } string subject = model.Subject; var maxSubjectLength = _forumSettings.TopicSubjectMaxLength; if (maxSubjectLength > 0 && subject.Length > maxSubjectLength) { subject = subject.Substring(0, maxSubjectLength); } var text = model.Text; var maxPostLength = _forumSettings.PostMaxLength; if (maxPostLength > 0 && text.Length > maxPostLength) { text = text.Substring(0, maxPostLength); } var topicType = ForumTopicType.Normal; string ipAddress = _webHelper.GetCurrentIpAddress(); var nowUtc = DateTime.UtcNow; if (_forumService.IsCustomerAllowedToSetTopicPriority(_workContext.CurrentCustomer)) { topicType = (ForumTopicType)Enum.ToObject(typeof(ForumTopicType), model.TopicTypeId); } //forum topic var forumTopic = new ForumTopic { ForumId = forum.Id, ForumGroupId = forum.ForumGroupId, CustomerId = _workContext.CurrentCustomer.Id, TopicTypeId = (int)topicType, Subject = subject, CreatedOnUtc = nowUtc, UpdatedOnUtc = nowUtc }; await _forumService.InsertTopic(forumTopic, true); if (!_workContext.CurrentCustomer.HasContributions) { await customerService.UpdateContributions(_workContext.CurrentCustomer); } //forum post var forumPost = new ForumPost { TopicId = forumTopic.Id, ForumId = forum.Id, ForumGroupId = forum.ForumGroupId, CustomerId = _workContext.CurrentCustomer.Id, Text = text, IPAddress = ipAddress, CreatedOnUtc = nowUtc, UpdatedOnUtc = nowUtc }; await _forumService.InsertPost(forumPost, false); //update forum topic forumTopic.NumPosts = 1; forumTopic.LastPostId = forumPost.Id; forumTopic.LastPostCustomerId = forumPost.CustomerId; forumTopic.LastPostTime = forumPost.CreatedOnUtc; forumTopic.UpdatedOnUtc = nowUtc; await _forumService.UpdateTopic(forumTopic); //subscription if (_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { if (model.Subscribed) { var forumSubscription = new ForumSubscription { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, TopicId = forumTopic.Id, CreatedOnUtc = nowUtc }; await _forumService.InsertSubscription(forumSubscription); } } return(RedirectToRoute("TopicSlug", new { id = forumTopic.Id, slug = forumTopic.GetSeName() })); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } // redisplay form model.TopicPriorities = await _mediator.Send(new GetTopicTypesList()); model.IsEdit = false; model.ForumId = forum.Id; model.ForumName = forum.Name; model.ForumSeName = forum.GetSeName(); model.Id = ""; model.IsCustomerAllowedToSetTopicPriority = _forumService.IsCustomerAllowedToSetTopicPriority(_workContext.CurrentCustomer); model.IsCustomerAllowedToSubscribe = _forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer); model.ForumEditor = _forumSettings.ForumEditor; return(View(model)); }
public virtual async Task <IActionResult> PostEdit(EditForumPostModel model) { if (!_forumSettings.ForumsEnabled) { return(RedirectToRoute("HomePage")); } var forumPost = await _forumService.GetPostById(model.Id); if (forumPost == null) { return(RedirectToRoute("Boards")); } if (!_forumService.IsCustomerAllowedToEditPost(_workContext.CurrentCustomer, forumPost)) { return(new ChallengeResult()); } var forumTopic = await _forumService.GetTopicById(forumPost.TopicId); if (forumTopic == null) { return(RedirectToRoute("Boards")); } var forum = await _forumService.GetForumById(forumTopic.ForumId); if (forum == null) { return(RedirectToRoute("Boards")); } if (ModelState.IsValid) { try { DateTime nowUtc = DateTime.UtcNow; var text = model.Text; var maxPostLength = _forumSettings.PostMaxLength; if (maxPostLength > 0 && text.Length > maxPostLength) { text = text.Substring(0, maxPostLength); } forumPost.UpdatedOnUtc = nowUtc; forumPost.Text = text; await _forumService.UpdatePost(forumPost); //subscription if (_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { var forumSubscription = (await _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, "", forumPost.TopicId, 0, 1)).FirstOrDefault(); if (model.Subscribed) { if (forumSubscription == null) { forumSubscription = new ForumSubscription { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, TopicId = forumPost.TopicId, CreatedOnUtc = nowUtc }; await _forumService.InsertSubscription(forumSubscription); } } else { if (forumSubscription != null) { await _forumService.DeleteSubscription(forumSubscription); } } } int pageSize = _forumSettings.PostsPageSize > 0 ? _forumSettings.PostsPageSize : 10; int pageIndex = (await _forumService.CalculateTopicPageIndex(forumPost.TopicId, pageSize, forumPost.Id) + 1); var url = string.Empty; var forumtopic = await _forumService.GetTopicById(forumPost.TopicId); if (pageIndex > 1) { url = Url.RouteUrl("TopicSlugPaged", new { id = forumPost.TopicId, slug = forumtopic.GetSeName(), page = pageIndex }); } else { url = Url.RouteUrl("TopicSlug", new { id = forumPost.TopicId, slug = forumtopic.GetSeName() }); } return(Redirect(string.Format("{0}#{1}", url, forumPost.Id))); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } //redisplay form model.IsEdit = true; model.ForumName = forum.Name; model.ForumTopicId = forumTopic.Id; model.ForumTopicSubject = forumTopic.Subject; model.ForumTopicSeName = forumTopic.GetSeName(); model.Id = forumPost.Id; model.IsCustomerAllowedToSubscribe = _forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer); model.ForumEditor = _forumSettings.ForumEditor; return(View(model)); }
public virtual IActionResult PostEdit(EditForumPostModel model) { if (!_forumSettings.ForumsEnabled) { return(RedirectToRoute("HomePage")); } var forumPost = _forumService.GetPostById(model.Id); if (forumPost == null) { return(RedirectToRoute("Boards")); } if (!_forumService.IsCustomerAllowedToEditPost(_workContext.CurrentCustomer, forumPost)) { return(Challenge()); } var forumTopic = forumPost.ForumTopic; if (forumTopic == null) { return(RedirectToRoute("Boards")); } var forum = forumTopic.Forum; if (forum == null) { return(RedirectToRoute("Boards")); } if (ModelState.IsValid) { try { var nowUtc = DateTime.UtcNow; var text = model.Text; var maxPostLength = _forumSettings.PostMaxLength; if (maxPostLength > 0 && text.Length > maxPostLength) { text = text.Substring(0, maxPostLength); } forumPost.UpdatedOnUtc = nowUtc; forumPost.Text = text; _forumService.UpdatePost(forumPost); //subscription if (_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { var forumSubscription = _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, 0, forumPost.TopicId, 0, 1).FirstOrDefault(); if (model.Subscribed) { if (forumSubscription == null) { forumSubscription = new ForumSubscription { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, TopicId = forumPost.TopicId, CreatedOnUtc = nowUtc }; _forumService.InsertSubscription(forumSubscription); } } else { if (forumSubscription != null) { _forumService.DeleteSubscription(forumSubscription); } } } var pageSize = _forumSettings.PostsPageSize > 0 ? _forumSettings.PostsPageSize : 10; var pageIndex = (_forumService.CalculateTopicPageIndex(forumPost.TopicId, pageSize, forumPost.Id) + 1); var url = string.Empty; if (pageIndex > 1) { url = Url.RouteUrl("TopicSlugPaged", new { id = forumPost.TopicId, slug = _forumService.GetTopicSeName(forumPost.ForumTopic), pageNumber = pageIndex }); } else { url = Url.RouteUrl("TopicSlug", new { id = forumPost.TopicId, slug = _forumService.GetTopicSeName(forumPost.ForumTopic) }); } return(Redirect($"{url}#{forumPost.Id}")); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } //redisplay form _forumModelFactory.PreparePostEditModel(forumPost, true); return(View(model)); }
public virtual IActionResult TopicEdit(EditForumTopicModel model) { if (!_forumSettings.ForumsEnabled) { return(RedirectToRoute("HomePage")); } var forumTopic = _forumService.GetTopicById(model.Id); if (forumTopic == null) { return(RedirectToRoute("Boards")); } var forum = forumTopic.Forum; if (forum == null) { return(RedirectToRoute("Boards")); } if (ModelState.IsValid) { try { if (!_forumService.IsCustomerAllowedToEditTopic(_workContext.CurrentCustomer, forumTopic)) { return(Challenge()); } var subject = model.Subject; var maxSubjectLength = _forumSettings.TopicSubjectMaxLength; if (maxSubjectLength > 0 && subject.Length > maxSubjectLength) { subject = subject.Substring(0, maxSubjectLength); } var text = model.Text; var maxPostLength = _forumSettings.PostMaxLength; if (maxPostLength > 0 && text.Length > maxPostLength) { text = text.Substring(0, maxPostLength); } var topicType = ForumTopicType.Normal; var ipAddress = _webHelper.GetCurrentIpAddress(); var nowUtc = DateTime.UtcNow; if (_forumService.IsCustomerAllowedToSetTopicPriority(_workContext.CurrentCustomer)) { topicType = (ForumTopicType)Enum.ToObject(typeof(ForumTopicType), model.TopicTypeId); } //forum topic forumTopic.TopicTypeId = (int)topicType; forumTopic.Subject = subject; forumTopic.UpdatedOnUtc = nowUtc; _forumService.UpdateTopic(forumTopic); //forum post var firstPost = _forumService.GetFirstPost(forumTopic); if (firstPost != null) { firstPost.Text = text; firstPost.UpdatedOnUtc = nowUtc; _forumService.UpdatePost(firstPost); } else { //error (not possible) firstPost = new ForumPost { TopicId = forumTopic.Id, CustomerId = forumTopic.CustomerId, Text = text, IPAddress = ipAddress, UpdatedOnUtc = nowUtc }; _forumService.InsertPost(firstPost, false); } //subscription if (_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { var forumSubscription = _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, 0, forumTopic.Id, 0, 1).FirstOrDefault(); if (model.Subscribed) { if (forumSubscription == null) { forumSubscription = new ForumSubscription { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, TopicId = forumTopic.Id, CreatedOnUtc = nowUtc }; _forumService.InsertSubscription(forumSubscription); } } else { if (forumSubscription != null) { _forumService.DeleteSubscription(forumSubscription); } } } // redirect to the topic page with the topic slug return(RedirectToRoute("TopicSlug", new { id = forumTopic.Id, slug = _forumService.GetTopicSeName(forumTopic) })); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } //redisplay form _forumModelFactory.PrepareTopicEditModel(forumTopic, model, true); return(View(model)); }
public virtual IActionResult TopicCreate(EditForumTopicModel model) { if (!_forumSettings.ForumsEnabled) { return(RedirectToRoute("HomePage")); } var forum = _forumService.GetForumById(model.ForumId); if (forum == null) { return(RedirectToRoute("Boards")); } if (ModelState.IsValid) { try { if (!_forumService.IsCustomerAllowedToCreateTopic(_workContext.CurrentCustomer, forum)) { return(Challenge()); } var subject = model.Subject; var maxSubjectLength = _forumSettings.TopicSubjectMaxLength; if (maxSubjectLength > 0 && subject.Length > maxSubjectLength) { subject = subject.Substring(0, maxSubjectLength); } var text = model.Text; var maxPostLength = _forumSettings.PostMaxLength; if (maxPostLength > 0 && text.Length > maxPostLength) { text = text.Substring(0, maxPostLength); } var topicType = ForumTopicType.Normal; var ipAddress = _webHelper.GetCurrentIpAddress(); var nowUtc = DateTime.UtcNow; if (_forumService.IsCustomerAllowedToSetTopicPriority(_workContext.CurrentCustomer)) { topicType = (ForumTopicType)Enum.ToObject(typeof(ForumTopicType), model.TopicTypeId); } //forum topic var forumTopic = new ForumTopic { ForumId = forum.Id, CustomerId = _workContext.CurrentCustomer.Id, TopicTypeId = (int)topicType, Subject = subject, CreatedOnUtc = nowUtc, UpdatedOnUtc = nowUtc }; _forumService.InsertTopic(forumTopic, true); //forum post var forumPost = new ForumPost { TopicId = forumTopic.Id, CustomerId = _workContext.CurrentCustomer.Id, Text = text, IPAddress = ipAddress, CreatedOnUtc = nowUtc, UpdatedOnUtc = nowUtc }; _forumService.InsertPost(forumPost, false); //update forum topic forumTopic.NumPosts = 1; forumTopic.LastPostId = forumPost.Id; forumTopic.LastPostCustomerId = forumPost.CustomerId; forumTopic.LastPostTime = forumPost.CreatedOnUtc; forumTopic.UpdatedOnUtc = nowUtc; _forumService.UpdateTopic(forumTopic); //subscription if (_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { if (model.Subscribed) { var forumSubscription = new ForumSubscription { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, TopicId = forumTopic.Id, CreatedOnUtc = nowUtc }; _forumService.InsertSubscription(forumSubscription); } } return(RedirectToRoute("TopicSlug", new { id = forumTopic.Id, slug = _forumService.GetTopicSeName(forumTopic) })); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } //redisplay form _forumModelFactory.PrepareTopicCreateModel(forum, model); return(View(model)); }
public ActionResult PostCreate(EditForumPostModel model) { if (!_forumSettings.ForumsEnabled) { return(RedirectToRoute("HomePage")); } var forumTopic = _forumService.GetTopicById(model.ForumTopicId); if (forumTopic == null) { return(RedirectToRoute("Boards")); } if (ModelState.IsValid) { try { if (!_forumService.IsCustomerAllowedToCreatePost(_workContext.CurrentCustomer, forumTopic)) { return(new HttpUnauthorizedResult()); } var text = model.Text; var maxPostLength = _forumSettings.PostMaxLength; if (maxPostLength > 0 && text.Length > maxPostLength) { text = text.Substring(0, maxPostLength); } string ipAddress = _webHelper.GetCurrentIpAddress(); DateTime nowUtc = DateTime.UtcNow; var forumPost = new ForumPost { TopicId = forumTopic.Id, CustomerId = _workContext.CurrentCustomer.Id, Text = text, IPAddress = ipAddress, CreatedOnUtc = nowUtc, UpdatedOnUtc = nowUtc }; _forumService.InsertPost(forumPost, true); //subscription if (_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { var forumSubscription = _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, 0, forumPost.TopicId, 0, 1).FirstOrDefault(); if (model.Subscribed) { if (forumSubscription == null) { forumSubscription = new ForumSubscription { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, TopicId = forumPost.TopicId, CreatedOnUtc = nowUtc }; _forumService.InsertSubscription(forumSubscription); } } else { if (forumSubscription != null) { _forumService.DeleteSubscription(forumSubscription); } } } int pageSize = _forumSettings.PostsPageSize > 0 ? _forumSettings.PostsPageSize : 10; int pageIndex = (_forumService.CalculateTopicPageIndex(forumPost.TopicId, pageSize, forumPost.Id) + 1); var url = string.Empty; if (pageIndex > 1) { url = Url.RouteUrl("TopicSlugPaged", new { id = forumPost.TopicId, slug = forumPost.ForumTopic.GetSeName(), page = pageIndex }); } else { url = Url.RouteUrl("TopicSlug", new { id = forumPost.TopicId, slug = forumPost.ForumTopic.GetSeName() }); } return(Redirect(string.Format("{0}#{1}", url, forumPost.Id))); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } //redisplay form _forumModelFactory.PreparePostCreateModel(forumTopic, 0, true); return(View(model)); }
public IndividualForumSubcriptionResponse CreateForumSubscription(ForumSubscription forumSubscription) { return(GenericPost <IndividualForumSubcriptionResponse>(string.Format("forum_subscriptions.json"), forumSubscription)); }
private void BindData() { ForumTopic forumTopic = ForumManager.GetTopicByID(this.TopicID, true); if (forumTopic != null) { btnEdit.Visible = ForumManager.IsUserAllowedToEditTopic(NopContext.Current.User, forumTopic); btnDelete.Visible = ForumManager.IsUserAllowedToDeleteTopic(NopContext.Current.User, forumTopic); btnMoveTopic.Visible = ForumManager.IsUserAllowedToMoveTopic(NopContext.Current.User, forumTopic); //btnReply.Visible = ForumManager.IsUserAllowedToCreatePost(NopContext.Current.User, forumTopic); lblTopicSubject.Text = Server.HtmlEncode(forumTopic.Subject); int totalRecords = 0; int pageSize = 10; if (ForumManager.PostsPageSize > 0) { pageSize = ForumManager.PostsPageSize; } ForumPostCollection forumPosts = ForumManager.GetAllPosts(forumTopic.ForumTopicID, 0, string.Empty, pageSize, this.CurrentPageIndex, out totalRecords); if (forumPosts.Count > 0) { this.postsPager1.PageSize = pageSize; this.postsPager1.TotalRecords = totalRecords; this.postsPager1.PageIndex = this.CurrentPageIndex; this.postsPager2.PageSize = pageSize; this.postsPager2.TotalRecords = totalRecords; this.postsPager2.PageIndex = this.CurrentPageIndex; rptrPosts.DataSource = forumPosts; rptrPosts.DataBind(); } //subsciption if (ForumManager.IsUserAllowedToSubscribe(NopContext.Current.User)) { ForumSubscription forumSubscription = ForumManager.GetAllSubscriptions(NopContext.Current.User.CustomerID, 0, forumTopic.ForumTopicID, 1, 0).FirstOrDefault(); if (forumSubscription == null) { btnWatchTopic.Text = GetLocaleResourceString("Forum.WatchTopic"); btnWatchTopic2.Text = GetLocaleResourceString("Forum.WatchTopic"); } else { btnWatchTopic.Text = GetLocaleResourceString("Forum.UnwatchTopic"); btnWatchTopic2.Text = GetLocaleResourceString("Forum.UnwatchTopic"); } } else { btnWatchTopic.Visible = false; btnWatchTopic2.Visible = false; } } else { Response.Redirect(SEOHelper.GetForumMainURL()); } }
public virtual void UpdateSubscription(ForumSubscription subscription) { Guard.NotNull(subscription, nameof(subscription)); _forumSubscriptionRepository.Update(subscription); }
public virtual void InsertSubscription(ForumSubscription subscription) { Guard.NotNull(subscription, nameof(subscription)); _forumSubscriptionRepository.Insert(subscription); }
protected void btnSubmit_Click(object sender, EventArgs e) { try { string text = string.Empty; switch (this.ForumService.ForumEditor) { case EditorTypeEnum.SimpleTextBox: { text = txtTopicBodySimple.Text.Trim(); } break; case EditorTypeEnum.BBCodeEditor: { text = txtTopicBodyBBCode.Text.Trim(); } break; case EditorTypeEnum.HtmlEditor: { text = txtTopicBodyHtml.Value; } break; default: break; } string subject = txtTopicTitle.Text; var topicType = ForumTopicTypeEnum.Normal; bool subscribe = cbSubscribe.Checked; string IPAddress = NopContext.Current.UserHostAddress; DateTime nowDT = DateTime.UtcNow; if (this.ForumService.IsUserAllowedToSetTopicPriority(NopContext.Current.User)) { topicType = (ForumTopicTypeEnum)Enum.ToObject(typeof(ForumTopicTypeEnum), int.Parse(ddlPriority.SelectedItem.Value)); } text = text.Trim(); if (String.IsNullOrEmpty(text)) { throw new NopException(GetLocaleResourceString("Forum.TextCannotBeEmpty")); } if (this.AddTopic) { #region Adding topic var forum = this.ForumService.GetForumById(this.ForumId); if (forum == null) { Response.Redirect(SEOHelper.GetForumMainUrl()); } if (!this.ForumService.IsUserAllowedToCreateTopic(NopContext.Current.User, forum)) { string loginURL = SEOHelper.GetLoginPageUrl(true); Response.Redirect(loginURL); } subject = subject.Trim(); if (String.IsNullOrEmpty(subject)) { throw new NopException(GetLocaleResourceString("Forum.TopicSubjectCannotBeEmpty")); } //forum topic var forumTopic = new ForumTopic() { ForumId = forum.ForumId, UserId = NopContext.Current.User.CustomerId, TopicTypeId = (int)topicType, Subject = subject, CreatedOn = nowDT, UpdatedOn = nowDT }; this.ForumService.InsertTopic(forumTopic, true); //forum post var forumPost = new ForumPost() { TopicId = forumTopic.ForumTopicId, UserId = NopContext.Current.User.CustomerId, Text = text, IPAddress = IPAddress, CreatedOn = nowDT, UpdatedOn = nowDT }; this.ForumService.InsertPost(forumPost, false); //update forum topic forumTopic.NumPosts = 1; forumTopic.LastPostId = forumPost.ForumPostId; forumTopic.LastPostUserId = forumPost.UserId; forumTopic.LastPostTime = forumPost.CreatedOn; forumTopic.UpdatedOn = nowDT; this.ForumService.UpdateTopic(forumTopic); //subscription if (this.ForumService.IsUserAllowedToSubscribe(NopContext.Current.User)) { if (subscribe) { var forumSubscription = new ForumSubscription() { SubscriptionGuid = Guid.NewGuid(), UserId = NopContext.Current.User.CustomerId, TopicId = forumTopic.ForumTopicId, CreatedOn = nowDT }; this.ForumService.InsertSubscription(forumSubscription); } } string topicURL = SEOHelper.GetForumTopicUrl(forumTopic); Response.Redirect(topicURL); #endregion } else if (this.EditTopic) { #region Editing topic var forumTopic = this.ForumService.GetTopicById(this.ForumTopicId); if (forumTopic == null) { Response.Redirect(SEOHelper.GetForumMainUrl()); } if (!this.ForumService.IsUserAllowedToEditTopic(NopContext.Current.User, forumTopic)) { string loginURL = SEOHelper.GetLoginPageUrl(true); Response.Redirect(loginURL); } subject = subject.Trim(); if (String.IsNullOrEmpty(subject)) { throw new NopException(GetLocaleResourceString("Forum.TopicSubjectCannotBeEmpty")); } //forum topic forumTopic.TopicTypeId = (int)topicType; forumTopic.Subject = subject; forumTopic.UpdatedOn = nowDT; this.ForumService.UpdateTopic(forumTopic); //forum post var firstPost = forumTopic.FirstPost; if (firstPost != null) { firstPost.Text = text; firstPost.UpdatedOn = nowDT; this.ForumService.UpdatePost(firstPost); } else { //error (not possible) firstPost = new ForumPost() { TopicId = forumTopic.ForumTopicId, UserId = forumTopic.UserId, Text = text, IPAddress = IPAddress, UpdatedOn = nowDT }; this.ForumService.InsertPost(firstPost, false); } //subscription if (this.ForumService.IsUserAllowedToSubscribe(NopContext.Current.User)) { var forumSubscription = this.ForumService.GetAllSubscriptions(NopContext.Current.User.CustomerId, 0, forumTopic.ForumTopicId, 0, 1).FirstOrDefault(); if (subscribe) { if (forumSubscription == null) { forumSubscription = new ForumSubscription() { SubscriptionGuid = Guid.NewGuid(), UserId = NopContext.Current.User.CustomerId, TopicId = forumTopic.ForumTopicId, CreatedOn = nowDT }; this.ForumService.InsertSubscription(forumSubscription); } } else { if (forumSubscription != null) { this.ForumService.DeleteSubscription(forumSubscription.ForumSubscriptionId); } } } string topicURL = SEOHelper.GetForumTopicUrl(forumTopic); Response.Redirect(topicURL); #endregion } else if (this.AddPost) { #region Adding post var forumTopic = this.ForumService.GetTopicById(this.ForumTopicId); if (forumTopic == null) { Response.Redirect(SEOHelper.GetForumMainUrl()); } if (!this.ForumService.IsUserAllowedToCreatePost(NopContext.Current.User, forumTopic)) { string loginURL = SEOHelper.GetLoginPageUrl(true); Response.Redirect(loginURL); } //forum post var forumPost = new ForumPost() { TopicId = this.ForumTopicId, UserId = NopContext.Current.User.CustomerId, Text = text, IPAddress = IPAddress, CreatedOn = nowDT, UpdatedOn = nowDT }; this.ForumService.InsertPost(forumPost, true); //subscription if (this.ForumService.IsUserAllowedToSubscribe(NopContext.Current.User)) { var forumSubscription = this.ForumService.GetAllSubscriptions(NopContext.Current.User.CustomerId, 0, forumPost.TopicId, 0, 1).FirstOrDefault(); if (subscribe) { if (forumSubscription == null) { forumSubscription = new ForumSubscription() { SubscriptionGuid = Guid.NewGuid(), UserId = NopContext.Current.User.CustomerId, TopicId = forumPost.TopicId, CreatedOn = nowDT }; this.ForumService.InsertSubscription(forumSubscription); } } else { if (forumSubscription != null) { this.ForumService.DeleteSubscription(forumSubscription.ForumSubscriptionId); } } } int pageSize = 10; if (this.ForumService.PostsPageSize > 0) { pageSize = this.ForumService.PostsPageSize; } int pageIndex = this.ForumService.CalculateTopicPageIndex(forumPost.TopicId, pageSize, forumPost.ForumPostId); string topicURL = SEOHelper.GetForumTopicUrl(forumPost.TopicId, "p", pageIndex + 1, forumPost.ForumPostId); Response.Redirect(topicURL); #endregion } else if (this.EditPost) { #region Editing post var forumPost = this.ForumService.GetPostById(this.ForumPostId); if (forumPost == null) { Response.Redirect(SEOHelper.GetForumMainUrl()); } if (!this.ForumService.IsUserAllowedToEditPost(NopContext.Current.User, forumPost)) { string loginURL = SEOHelper.GetLoginPageUrl(true); Response.Redirect(loginURL); } forumPost.Text = text; forumPost.UpdatedOn = nowDT; this.ForumService.UpdatePost(forumPost); //subscription if (this.ForumService.IsUserAllowedToSubscribe(NopContext.Current.User)) { var forumSubscription = this.ForumService.GetAllSubscriptions(NopContext.Current.User.CustomerId, 0, forumPost.TopicId, 0, 1).FirstOrDefault(); if (subscribe) { if (forumSubscription == null) { forumSubscription = new ForumSubscription() { SubscriptionGuid = Guid.NewGuid(), UserId = NopContext.Current.User.CustomerId, TopicId = forumPost.TopicId, CreatedOn = nowDT }; this.ForumService.InsertSubscription(forumSubscription); } } else { if (forumSubscription != null) { this.ForumService.DeleteSubscription(forumSubscription.ForumSubscriptionId); } } } int pageSize = 10; if (this.ForumService.PostsPageSize > 0) { pageSize = this.ForumService.PostsPageSize; } int pageIndex = this.ForumService.CalculateTopicPageIndex(forumPost.TopicId, pageSize, forumPost.ForumPostId); string topicURL = SEOHelper.GetForumTopicUrl(forumPost.TopicId, "p", pageIndex + 1, forumPost.ForumPostId); Response.Redirect(topicURL); #endregion } } catch (Exception exc) { pnlError.Visible = true; lErrorMessage.Text = Server.HtmlEncode(exc.Message); } }
public virtual IActionResult PostCreate(EditForumPostModel model, bool captchaValid) { if (!_forumSettings.ForumsEnabled) { return(RedirectToRoute("Homepage")); } var forumTopic = _forumService.GetTopicById(model.ForumTopicId); if (forumTopic == null) { return(RedirectToRoute("Boards")); } //validate CAPTCHA if (_captchaSettings.Enabled && _captchaSettings.ShowOnForum && !captchaValid) { ModelState.AddModelError("", _localizationService.GetResource("Common.WrongCaptchaMessage")); } if (ModelState.IsValid) { try { if (!_forumService.IsCustomerAllowedToCreatePost(_workContext.CurrentCustomer, forumTopic)) { return(Challenge()); } var text = model.Text; var maxPostLength = _forumSettings.PostMaxLength; if (maxPostLength > 0 && text.Length > maxPostLength) { text = text.Substring(0, maxPostLength); } var ipAddress = _webHelper.GetCurrentIpAddress(); var nowUtc = DateTime.UtcNow; var forumPost = new ForumPost { TopicId = forumTopic.Id, CustomerId = _workContext.CurrentCustomer.Id, Text = text, IPAddress = ipAddress, CreatedOnUtc = nowUtc, UpdatedOnUtc = nowUtc }; _forumService.InsertPost(forumPost, true); //subscription if (_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { var forumSubscription = _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, 0, forumPost.TopicId, 0, 1).FirstOrDefault(); if (model.Subscribed) { if (forumSubscription == null) { forumSubscription = new ForumSubscription { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, TopicId = forumPost.TopicId, CreatedOnUtc = nowUtc }; _forumService.InsertSubscription(forumSubscription); } } else { if (forumSubscription != null) { _forumService.DeleteSubscription(forumSubscription); } } } var pageSize = _forumSettings.PostsPageSize > 0 ? _forumSettings.PostsPageSize : 10; var pageIndex = (_forumService.CalculateTopicPageIndex(forumPost.TopicId, pageSize, forumPost.Id) + 1); var url = string.Empty; if (pageIndex > 1) { url = Url.RouteUrl("TopicSlugPaged", new { id = forumPost.TopicId, slug = _forumService.GetTopicSeName(forumTopic), pageNumber = pageIndex }); } else { url = Url.RouteUrl("TopicSlug", new { id = forumPost.TopicId, slug = _forumService.GetTopicSeName(forumTopic) }); } return(Redirect($"{url}#{forumPost.Id}")); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } //redisplay form model = _forumModelFactory.PreparePostCreateModel(forumTopic, 0, true); return(View(model)); }
public virtual async Task <IActionResult> TopicEdit(EditForumTopicModel model) { if (!_forumSettings.ForumsEnabled) { return(RedirectToRoute("HomePage")); } var forumTopic = await _forumService.GetTopicById(model.Id); if (forumTopic == null) { return(RedirectToRoute("Boards")); } var forum = await _forumService.GetForumById(forumTopic.ForumId); if (forum == null) { return(RedirectToRoute("Boards")); } if (ModelState.IsValid) { try { if (!_forumService.IsCustomerAllowedToEditTopic(_workContext.CurrentCustomer, forumTopic)) { return(new ChallengeResult()); } string subject = model.Subject; var maxSubjectLength = _forumSettings.TopicSubjectMaxLength; if (maxSubjectLength > 0 && subject.Length > maxSubjectLength) { subject = subject.Substring(0, maxSubjectLength); } var text = model.Text; var maxPostLength = _forumSettings.PostMaxLength; if (maxPostLength > 0 && text.Length > maxPostLength) { text = text.Substring(0, maxPostLength); } var topicType = ForumTopicType.Normal; string ipAddress = _webHelper.GetCurrentIpAddress(); DateTime nowUtc = DateTime.UtcNow; if (_forumService.IsCustomerAllowedToSetTopicPriority(_workContext.CurrentCustomer)) { topicType = (ForumTopicType)Enum.ToObject(typeof(ForumTopicType), model.TopicTypeId); } //forum topic forumTopic.TopicTypeId = (int)topicType; forumTopic.Subject = subject; forumTopic.UpdatedOnUtc = nowUtc; await _forumService.UpdateTopic(forumTopic); //forum post var firstPost = await forumTopic.GetFirstPost(_forumService); if (firstPost != null) { firstPost.Text = text; firstPost.UpdatedOnUtc = nowUtc; await _forumService.UpdatePost(firstPost); } else { //error (not possible) firstPost = new ForumPost { TopicId = forumTopic.Id, ForumId = forum.Id, ForumGroupId = forum.ForumGroupId, CustomerId = forumTopic.CustomerId, Text = text, IPAddress = ipAddress, UpdatedOnUtc = nowUtc }; await _forumService.InsertPost(firstPost, false); } //subscription if (_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { var forumSubscription = (await _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, "", forumTopic.Id, 0, 1)).FirstOrDefault(); if (model.Subscribed) { if (forumSubscription == null) { forumSubscription = new ForumSubscription { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, TopicId = forumTopic.Id, CreatedOnUtc = nowUtc }; await _forumService.InsertSubscription(forumSubscription); } } else { if (forumSubscription != null) { await _forumService.DeleteSubscription(forumSubscription); } } } // redirect to the topic page with the topic slug return(RedirectToRoute("TopicSlug", new { id = forumTopic.Id, slug = forumTopic.GetSeName() })); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } // redisplay form model.TopicPriorities = await _mediator.Send(new GetTopicTypesList()); model.IsEdit = true; model.ForumName = forum.Name; model.ForumSeName = forum.GetSeName(); model.ForumId = forum.Id; model.ForumEditor = _forumSettings.ForumEditor; model.IsCustomerAllowedToSetTopicPriority = _forumService.IsCustomerAllowedToSetTopicPriority(_workContext.CurrentCustomer); model.IsCustomerAllowedToSubscribe = _forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer); return(View(model)); }
protected void BindData() { Forum forum = ForumManager.GetForumByID(this.ForumID); if (forum != null) { //hlNewTopic.Visible = ForumManager.IsUserAllowedToCreateTopic(NopContext.Current.User, forum); lblForumName.Text = Server.HtmlEncode(forum.Name); lblForumDescription.Text = Server.HtmlEncode(forum.Description); hlNewTopic.NavigateUrl = SEOHelper.GetNewForumTopicURL(forum.ForumID); int totalRecords = 0; int pageSize = 10; if (ForumManager.TopicsPageSize > 0) { pageSize = ForumManager.TopicsPageSize; } ForumTopicCollection forumTopics = ForumManager.GetAllTopics(forum.ForumID, 0, string.Empty, false, pageSize, this.CurrentPageIndex, out totalRecords); if (forumTopics.Count > 0) { this.topicsPager1.PageSize = pageSize; this.topicsPager1.TotalRecords = totalRecords; this.topicsPager1.PageIndex = this.CurrentPageIndex; this.topicsPager2.PageSize = pageSize; this.topicsPager2.TotalRecords = totalRecords; this.topicsPager2.PageIndex = this.CurrentPageIndex; rptrTopics.DataSource = forumTopics; rptrTopics.DataBind(); } //subsciption if (ForumManager.IsUserAllowedToSubscribe(NopContext.Current.User)) { ForumSubscription forumSubscription = ForumManager.GetAllSubscriptions(NopContext.Current.User.CustomerID, forum.ForumID, 0, 1, 0).FirstOrDefault(); if (forumSubscription == null) { btnWatchForum.Text = GetLocaleResourceString("Forum.WatchForum"); } else { btnWatchForum.Text = GetLocaleResourceString("Forum.UnwatchForum"); } } else { btnWatchForum.Visible = false; } } else { Response.Redirect(SEOHelper.GetForumMainURL()); } }
public virtual async Task <IActionResult> PostCreate(EditForumPostModel model, [FromServices] ICustomerService customerService) { if (!_forumSettings.ForumsEnabled) { return(RedirectToRoute("HomePage")); } var forumTopic = await _forumService.GetTopicById(model.ForumTopicId); if (forumTopic == null) { return(RedirectToRoute("Boards")); } if (ModelState.IsValid) { try { if (!_forumService.IsCustomerAllowedToCreatePost(_workContext.CurrentCustomer, forumTopic)) { return(new ChallengeResult()); } var text = model.Text; var maxPostLength = _forumSettings.PostMaxLength; if (maxPostLength > 0 && text.Length > maxPostLength) { text = text.Substring(0, maxPostLength); } string ipAddress = _webHelper.GetCurrentIpAddress(); DateTime nowUtc = DateTime.UtcNow; var forumPost = new ForumPost { TopicId = forumTopic.Id, ForumId = forumTopic.ForumId, ForumGroupId = forumTopic.ForumGroupId, CustomerId = _workContext.CurrentCustomer.Id, Text = text, IPAddress = ipAddress, CreatedOnUtc = nowUtc, UpdatedOnUtc = nowUtc }; await _forumService.InsertPost(forumPost, true); if (!_workContext.CurrentCustomer.HasContributions) { await customerService.UpdateContributions(_workContext.CurrentCustomer); } //subscription if (_forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer)) { var forumSubscription = (await _forumService.GetAllSubscriptions(_workContext.CurrentCustomer.Id, "", forumPost.TopicId, 0, 1)).FirstOrDefault(); if (model.Subscribed) { if (forumSubscription == null) { forumSubscription = new ForumSubscription { SubscriptionGuid = Guid.NewGuid(), CustomerId = _workContext.CurrentCustomer.Id, TopicId = forumPost.TopicId, CreatedOnUtc = nowUtc }; await _forumService.InsertSubscription(forumSubscription); } } else { if (forumSubscription != null) { await _forumService.DeleteSubscription(forumSubscription); } } } int pageSize = _forumSettings.PostsPageSize > 0 ? _forumSettings.PostsPageSize : 10; int pageIndex = (await _forumService.CalculateTopicPageIndex(forumPost.TopicId, pageSize, forumPost.Id) + 1); var url = string.Empty; var _forumTopic = await _forumService.GetTopicById(forumPost.TopicId); if (pageIndex > 1) { url = Url.RouteUrl("TopicSlugPaged", new { id = forumPost.TopicId, slug = _forumTopic.GetSeName(), pageNumber = pageIndex }); } else { url = Url.RouteUrl("TopicSlug", new { id = forumPost.TopicId, slug = _forumTopic.GetSeName() }); } return(Redirect($"{url}#{forumPost.Id}")); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } // redisplay form var forum = await _forumService.GetForumById(forumTopic.ForumId); if (forum == null) { return(RedirectToRoute("Boards")); } model.IsEdit = false; model.ForumName = forum.Name; model.ForumTopicId = forumTopic.Id; model.ForumTopicSubject = forumTopic.Subject; model.ForumTopicSeName = forumTopic.GetSeName(); model.Id = ""; model.IsCustomerAllowedToSubscribe = _forumService.IsCustomerAllowedToSubscribe(_workContext.CurrentCustomer); model.ForumEditor = _forumSettings.ForumEditor; return(View(model)); }
public void Can_save_and_load_forum_subscription_topic_subscribed() { var customer = GetTestCustomer(); var customerFromDb = SaveAndLoadEntity(customer); customerFromDb.ShouldNotBeNull(); var forumGroup = new ForumGroup { Name = "Forum Group 1", Description = "Forum Group 1 Description", DisplayOrder = 1, CreatedOnUtc = DateTime.UtcNow, UpdatedOnUtc = DateTime.UtcNow }; var forumGroupFromDb = SaveAndLoadEntity(forumGroup); forumGroupFromDb.ShouldNotBeNull(); forumGroupFromDb.Name.ShouldEqual("Forum Group 1"); forumGroupFromDb.Description.ShouldEqual("Forum Group 1 Description"); forumGroupFromDb.DisplayOrder.ShouldEqual(1); var forum = new Forum { ForumGroup = forumGroupFromDb, Name = "Forum 1", Description = "Forum 1 Description", ForumGroupId = forumGroupFromDb.Id, DisplayOrder = 10, CreatedOnUtc = DateTime.UtcNow, UpdatedOnUtc = DateTime.UtcNow, NumPosts = 25, NumTopics = 15 }; forumGroup.Forums.Add(forum); var forumFromDb = SaveAndLoadEntity(forum); forumFromDb.ShouldNotBeNull(); forumFromDb.Name.ShouldEqual("Forum 1"); forumFromDb.Description.ShouldEqual("Forum 1 Description"); forumFromDb.DisplayOrder.ShouldEqual(10); forumFromDb.NumTopics.ShouldEqual(15); forumFromDb.NumPosts.ShouldEqual(25); forumFromDb.ForumGroupId.ShouldEqual(forumGroupFromDb.Id); var forumTopic = new ForumTopic { Subject = "Forum Topic 1", Forum = forumFromDb, ForumId = forumFromDb.Id, TopicTypeId = (int)ForumTopicType.Sticky, Views = 123, CreatedOnUtc = DateTime.UtcNow, UpdatedOnUtc = DateTime.UtcNow, NumPosts = 100, CustomerId = customerFromDb.Id, }; var forumTopicFromDb = SaveAndLoadEntity(forumTopic); forumTopicFromDb.ShouldNotBeNull(); forumTopicFromDb.Subject.ShouldEqual("Forum Topic 1"); forumTopicFromDb.Views.ShouldEqual(123); forumTopicFromDb.NumPosts.ShouldEqual(100); forumTopicFromDb.TopicTypeId.ShouldEqual((int)ForumTopicType.Sticky); forumTopicFromDb.ForumId.ShouldEqual(forumFromDb.Id); var forumSubscription = new ForumSubscription { CreatedOnUtc = DateTime.UtcNow, SubscriptionGuid = new Guid("11111111-2222-3333-4444-555555555555"), TopicId = forumTopicFromDb.Id, CustomerId = customerFromDb.Id, }; var forumSubscriptionFromDb = SaveAndLoadEntity(forumSubscription); forumSubscriptionFromDb.ShouldNotBeNull(); forumSubscriptionFromDb.SubscriptionGuid.ToString().ShouldEqual("11111111-2222-3333-4444-555555555555"); forumSubscriptionFromDb.TopicId.ShouldEqual(forumTopicFromDb.Id); forumSubscriptionFromDb.ForumId.ShouldEqual(0); }