/Presentation/Nop.Web/Administration/Controllers/ForumController.cs

# · C# · 231 lines · 183 code · 44 blank · 4 comment · 19 complexity · e74574c163fd8db6633b0cfac660aab8 MD5 · raw file

  1. using System;
  2. using System.Linq;
  3. using System.Web.Mvc;
  4. using Nop.Admin.Models.Forums;
  5. using Nop.Services.Forums;
  6. using Nop.Services.Helpers;
  7. using Nop.Services.Localization;
  8. using Nop.Web.Framework.Controllers;
  9. using Nop.Services.Security;
  10. namespace Nop.Admin.Controllers
  11. {
  12. [AdminAuthorize]
  13. public class ForumController : BaseNopController
  14. {
  15. private readonly IForumService _forumService;
  16. private readonly IDateTimeHelper _dateTimeHelper;
  17. private readonly ILocalizationService _localizationService;
  18. private readonly IPermissionService _permissionService;
  19. public ForumController(IForumService forumService,
  20. IDateTimeHelper dateTimeHelper, ILocalizationService localizationService,
  21. IPermissionService permissionService)
  22. {
  23. this._forumService = forumService;
  24. this._dateTimeHelper = dateTimeHelper;
  25. this._localizationService = localizationService;
  26. this._permissionService = permissionService;
  27. }
  28. #region List
  29. public ActionResult Index()
  30. {
  31. return RedirectToAction("List");
  32. }
  33. public ActionResult List()
  34. {
  35. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  36. return AccessDeniedView();
  37. var forumGroupsModel = _forumService.GetAllForumGroups()
  38. .Select(fg =>
  39. {
  40. var forumGroupModel = fg.ToModel();
  41. forumGroupModel.CreatedOn = _dateTimeHelper.ConvertToUserTime(fg.CreatedOnUtc, DateTimeKind.Utc);
  42. foreach (var f in fg.Forums.OrderBy(x=>x.DisplayOrder))
  43. {
  44. var forumModel = f.ToModel();
  45. forumModel.CreatedOn = _dateTimeHelper.ConvertToUserTime(f.CreatedOnUtc, DateTimeKind.Utc);
  46. forumGroupModel.ForumModels.Add(forumModel);
  47. }
  48. return forumGroupModel;
  49. })
  50. .ToList();
  51. return View(forumGroupsModel);
  52. }
  53. #endregion
  54. #region Create
  55. public ActionResult CreateForumGroup()
  56. {
  57. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  58. return AccessDeniedView();
  59. return View(new ForumGroupModel { DisplayOrder = 1 });
  60. }
  61. [HttpPost, FormValueExists("save", "save-continue", "continueEditing")]
  62. public ActionResult CreateForumGroup(ForumGroupModel model, bool continueEditing)
  63. {
  64. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  65. return AccessDeniedView();
  66. if (ModelState.IsValid)
  67. {
  68. var forumGroup = model.ToEntity();
  69. forumGroup.CreatedOnUtc = DateTime.UtcNow;
  70. forumGroup.UpdatedOnUtc = DateTime.UtcNow;
  71. _forumService.InsertForumGroup(forumGroup);
  72. SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.Forums.ForumGroup.Added"));
  73. return continueEditing ? RedirectToAction("EditForumGroup", new { forumGroup.Id }) : RedirectToAction("List");
  74. }
  75. //If we got this far, something failed, redisplay form
  76. return View(model);
  77. }
  78. public ActionResult CreateForum()
  79. {
  80. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  81. return AccessDeniedView();
  82. var model = new ForumModel();
  83. model.ForumGroups = _forumService.GetAllForumGroups().ToList();
  84. model.DisplayOrder = 1;
  85. return View(model);
  86. }
  87. [HttpPost, FormValueExists("save", "save-continue", "continueEditing")]
  88. public ActionResult CreateForum(ForumModel model, bool continueEditing)
  89. {
  90. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  91. return AccessDeniedView();
  92. if (ModelState.IsValid)
  93. {
  94. var forum = model.ToEntity();
  95. forum.CreatedOnUtc = DateTime.UtcNow;
  96. forum.UpdatedOnUtc = DateTime.UtcNow;
  97. _forumService.InsertForum(forum);
  98. SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.Forums.Forum.Added"));
  99. return continueEditing ? RedirectToAction("EditForum", new { forum.Id }) : RedirectToAction("List");
  100. }
  101. //If we got this far, something failed, redisplay form
  102. model.ForumGroups = _forumService.GetAllForumGroups().ToList();
  103. return View(model);
  104. }
  105. #endregion
  106. #region Edit
  107. public ActionResult EditForumGroup(int id)
  108. {
  109. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  110. return AccessDeniedView();
  111. var forumGroup = _forumService.GetForumGroupById(id);
  112. if (forumGroup == null)
  113. throw new ArgumentException("No Forum Group found with the specified id", "id");
  114. var model = forumGroup.ToModel();
  115. return View(model);
  116. }
  117. [HttpPost, FormValueExists("save", "save-continue", "continueEditing")]
  118. public ActionResult EditForumGroup(ForumGroupModel model, bool continueEditing)
  119. {
  120. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  121. return AccessDeniedView();
  122. var forumGroup = _forumService.GetForumGroupById(model.Id);
  123. if (ModelState.IsValid)
  124. {
  125. forumGroup = model.ToEntity(forumGroup);
  126. forumGroup.UpdatedOnUtc = DateTime.UtcNow;
  127. _forumService.UpdateForumGroup(forumGroup);
  128. SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.Forums.ForumGroup.Updated"));
  129. return continueEditing ? RedirectToAction("EditForumGroup", forumGroup.Id) : RedirectToAction("List");
  130. }
  131. //If we got this far, something failed, redisplay form
  132. return View(model);
  133. }
  134. public ActionResult EditForum(int id)
  135. {
  136. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  137. return AccessDeniedView();
  138. var forum = _forumService.GetForumById(id);
  139. if (forum == null)
  140. throw new ArgumentException("No Forum found with the specified id", "id");
  141. var model = forum.ToModel();
  142. model.ForumGroups = _forumService.GetAllForumGroups().ToList();
  143. return View(model);
  144. }
  145. [HttpPost, FormValueExists("save", "save-continue", "continueEditing")]
  146. public ActionResult EditForum(ForumModel model, bool continueEditing)
  147. {
  148. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  149. return AccessDeniedView();
  150. var forum = _forumService.GetForumById(model.Id);
  151. if (ModelState.IsValid)
  152. {
  153. forum = model.ToEntity(forum);
  154. forum.UpdatedOnUtc = DateTime.UtcNow;
  155. _forumService.UpdateForum(forum);
  156. SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.Forums.Forum.Updated"));
  157. return continueEditing ? RedirectToAction("EditForum", forum.Id) : RedirectToAction("List");
  158. }
  159. //If we got this far, something failed, redisplay form
  160. model.ForumGroups = _forumService.GetAllForumGroups().ToList();
  161. return View(model);
  162. }
  163. #endregion
  164. #region Delete
  165. [HttpPost]
  166. public ActionResult DeleteForumGroup(int id)
  167. {
  168. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  169. return AccessDeniedView();
  170. var forumGroup = _forumService.GetForumGroupById(id);
  171. _forumService.DeleteForumGroup(forumGroup);
  172. SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.Forums.ForumGroup.Deleted"));
  173. return RedirectToAction("List");
  174. }
  175. [HttpPost]
  176. public ActionResult DeleteForum(int id)
  177. {
  178. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  179. return AccessDeniedView();
  180. var forum = _forumService.GetForumById(id);
  181. _forumService.DeleteForum(forum);
  182. SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.Forums.Forum.Deleted"));
  183. return RedirectToAction("List");
  184. }
  185. #endregion
  186. }
  187. }