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

# · C# · 266 lines · 207 code · 49 blank · 10 comment · 27 complexity · a3751aa9408fe4e5b6e7f9a16e2148c1 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.Services.Security;
  9. using Nop.Web.Framework.Controllers;
  10. namespace Nop.Admin.Controllers
  11. {
  12. [AdminAuthorize]
  13. public partial 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, ParameterBasedOnFormName("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. foreach (var forumGroup in _forumService.GetAllForumGroups())
  84. {
  85. var forumGroupModel = forumGroup.ToModel();
  86. model.ForumGroups.Add(forumGroupModel);
  87. }
  88. model.DisplayOrder = 1;
  89. return View(model);
  90. }
  91. [HttpPost, ParameterBasedOnFormName("save-continue", "continueEditing")]
  92. public ActionResult CreateForum(ForumModel model, bool continueEditing)
  93. {
  94. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  95. return AccessDeniedView();
  96. if (ModelState.IsValid)
  97. {
  98. var forum = model.ToEntity();
  99. forum.CreatedOnUtc = DateTime.UtcNow;
  100. forum.UpdatedOnUtc = DateTime.UtcNow;
  101. _forumService.InsertForum(forum);
  102. SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.Forums.Forum.Added"));
  103. return continueEditing ? RedirectToAction("EditForum", new { forum.Id }) : RedirectToAction("List");
  104. }
  105. //If we got this far, something failed, redisplay form
  106. foreach (var forumGroup in _forumService.GetAllForumGroups())
  107. {
  108. var forumGroupModel = forumGroup.ToModel();
  109. model.ForumGroups.Add(forumGroupModel);
  110. }
  111. return View(model);
  112. }
  113. #endregion
  114. #region Edit
  115. public ActionResult EditForumGroup(int id)
  116. {
  117. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  118. return AccessDeniedView();
  119. var forumGroup = _forumService.GetForumGroupById(id);
  120. if (forumGroup == null)
  121. //No forum group found with the specified id
  122. return RedirectToAction("List");
  123. var model = forumGroup.ToModel();
  124. return View(model);
  125. }
  126. [HttpPost, ParameterBasedOnFormName("save-continue", "continueEditing")]
  127. public ActionResult EditForumGroup(ForumGroupModel model, bool continueEditing)
  128. {
  129. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  130. return AccessDeniedView();
  131. var forumGroup = _forumService.GetForumGroupById(model.Id);
  132. if (forumGroup == null)
  133. //No forum group found with the specified id
  134. return RedirectToAction("List");
  135. if (ModelState.IsValid)
  136. {
  137. forumGroup = model.ToEntity(forumGroup);
  138. forumGroup.UpdatedOnUtc = DateTime.UtcNow;
  139. _forumService.UpdateForumGroup(forumGroup);
  140. SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.Forums.ForumGroup.Updated"));
  141. return continueEditing ? RedirectToAction("EditForumGroup", forumGroup.Id) : RedirectToAction("List");
  142. }
  143. //If we got this far, something failed, redisplay form
  144. return View(model);
  145. }
  146. public ActionResult EditForum(int id)
  147. {
  148. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  149. return AccessDeniedView();
  150. var forum = _forumService.GetForumById(id);
  151. if (forum == null)
  152. //No forum found with the specified id
  153. return RedirectToAction("List");
  154. var model = forum.ToModel();
  155. foreach (var forumGroup in _forumService.GetAllForumGroups())
  156. {
  157. var forumGroupModel = forumGroup.ToModel();
  158. model.ForumGroups.Add(forumGroupModel);
  159. }
  160. return View(model);
  161. }
  162. [HttpPost, ParameterBasedOnFormName("save-continue", "continueEditing")]
  163. public ActionResult EditForum(ForumModel model, bool continueEditing)
  164. {
  165. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  166. return AccessDeniedView();
  167. var forum = _forumService.GetForumById(model.Id);
  168. if (forum == null)
  169. //No forum found with the specified id
  170. return RedirectToAction("List");
  171. if (ModelState.IsValid)
  172. {
  173. forum = model.ToEntity(forum);
  174. forum.UpdatedOnUtc = DateTime.UtcNow;
  175. _forumService.UpdateForum(forum);
  176. SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.Forums.Forum.Updated"));
  177. return continueEditing ? RedirectToAction("EditForum", forum.Id) : RedirectToAction("List");
  178. }
  179. //If we got this far, something failed, redisplay form
  180. foreach (var forumGroup in _forumService.GetAllForumGroups())
  181. {
  182. var forumGroupModel = forumGroup.ToModel();
  183. model.ForumGroups.Add(forumGroupModel);
  184. }
  185. return View(model);
  186. }
  187. #endregion
  188. #region Delete
  189. [HttpPost]
  190. public ActionResult DeleteForumGroup(int id)
  191. {
  192. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  193. return AccessDeniedView();
  194. var forumGroup = _forumService.GetForumGroupById(id);
  195. if (forumGroup == null)
  196. //No forum group found with the specified id
  197. return RedirectToAction("List");
  198. _forumService.DeleteForumGroup(forumGroup);
  199. SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.Forums.ForumGroup.Deleted"));
  200. return RedirectToAction("List");
  201. }
  202. [HttpPost]
  203. public ActionResult DeleteForum(int id)
  204. {
  205. if (!_permissionService.Authorize(StandardPermissionProvider.ManageForums))
  206. return AccessDeniedView();
  207. var forum = _forumService.GetForumById(id);
  208. if (forum == null)
  209. //No forum found with the specified id
  210. return RedirectToAction("List");
  211. _forumService.DeleteForum(forum);
  212. SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.Forums.Forum.Deleted"));
  213. return RedirectToAction("List");
  214. }
  215. #endregion
  216. }
  217. }