AdminController.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6. using GreenTree.Nachtragsmanagement.Core.Authentication;
  7. using GreenTree.Nachtragsmanagement.Services.User;
  8. using GreenTree.Nachtragsmanagement.Web.Models.Admin.User;
  9. using GreenTree.Nachtragsmanagement.Core.Domain.User;
  10. using Newtonsoft.Json;
  11. using GreenTree.Nachtragsmanagement.Core;
  12. namespace GreenTree.Nachtragsmanagement.Web.Controllers
  13. {
  14. public class AdminController : Controller
  15. {
  16. private readonly IUserService _userService;
  17. private readonly IUserHelper _userHelper;
  18. public AdminController(
  19. IUserService userService,
  20. IUserHelper userHelper)
  21. {
  22. _userService = userService;
  23. _userHelper = userHelper;
  24. ViewData["AllRoles"] = _userService.GetAllRoles();
  25. }
  26. #region Users
  27. /// <summary>
  28. /// Basic user view function
  29. /// </summary>
  30. public ActionResult ViewUsers()
  31. {
  32. var users = _userService.GetAllUsers();
  33. var userModels = users
  34. .Select(u => UserDataModel.FromUser(u, false))
  35. .ToList();
  36. return View("~/Views/Admin/Users/View.cshtml", userModels);
  37. }
  38. /// <summary>
  39. /// Get JSON data of specific user
  40. /// </summary>
  41. /// <param name="id">User id.</param>
  42. public ActionResult GetUser(int id = -1)
  43. {
  44. var user = _userService.GetUserById(id);
  45. if (user == null)
  46. return new JsonResult
  47. {
  48. Data = "notFound",
  49. JsonRequestBehavior = JsonRequestBehavior.AllowGet
  50. };
  51. var userModel = UserDataModel.FromUser(user, false);
  52. return new JsonResult
  53. {
  54. Data = JsonConvert.SerializeObject(userModel),
  55. JsonRequestBehavior = JsonRequestBehavior.AllowGet
  56. };
  57. }
  58. /// <summary>
  59. /// Callback result for user grid
  60. /// </summary>
  61. public ActionResult PartialUsers()
  62. {
  63. var users = _userService.GetAllUsers();
  64. var userModels = users
  65. .Select(u => UserDataModel.FromUser(u, false))
  66. .ToList();
  67. return PartialView("~/Views/Admin/Users/_UserGridPartial.cshtml", userModels);
  68. }
  69. /// <summary>
  70. /// Partial edit for editing of existing or for new user
  71. /// </summary>
  72. /// <param name="id">Id for existing user, otherweise -1.</param>
  73. public ActionResult EditUser(int id = -1)
  74. {
  75. var user = _userService.GetUserById(id);
  76. var userModel = UserDataModel.FromUser(user, true);
  77. return PartialView("~/Views/Admin/Users/_UserEditPartial.cshtml", userModel);
  78. }
  79. /// <summary>
  80. /// Partial edit result if ModelState is valid, otherwise simple JSON result for success
  81. /// </summary>
  82. /// <param name="userModel">User model to be saved.</param>
  83. [HttpPost, ValidateInput(false)]
  84. public ActionResult EditUser(UserDataModel userModel)
  85. {
  86. if (!ModelState.IsValid)
  87. {
  88. foreach (var role in userModel.RoleValues)
  89. userModel.RoleDescriptions.Add(
  90. ((IList<Role>)ViewData["AllRoles"])
  91. .First(r => r.Id == role).Description);
  92. return PartialView("~/Views/Admin/Users/_UserEditPartial.cshtml", userModel);
  93. }
  94. var selectedRoles = _userService.GetRolesByIds(userModel.RoleValues.ToArray());
  95. if (userModel.Id == -1)
  96. {
  97. var user = userModel.ToUser();
  98. user.SetRoles(selectedRoles);
  99. user.Password = StaticHelper.GetMD5Hash(userModel.Password);
  100. _userService.InsertUser(user);
  101. }
  102. else
  103. {
  104. var user = _userService.GetUserById(userModel.Id);
  105. user.CustomNumber = userModel.CustomerNumber;
  106. user.Forename = userModel.Forename;
  107. user.Lastname = userModel.Lastname;
  108. user.MailAddress = userModel.MailAddress;
  109. if (!String.IsNullOrEmpty(userModel.Password))
  110. user.Password = StaticHelper.GetMD5Hash(userModel.Password);
  111. user.SetRoles(selectedRoles);
  112. _userService.UpdateUser(user);
  113. }
  114. return new JsonResult
  115. {
  116. Data = "success"
  117. };
  118. }
  119. /// <summary>
  120. /// Simple JSON result for deleting a specific user
  121. /// </summary>
  122. /// <param name="id">User id.</param>
  123. [HttpPost]
  124. public ActionResult DeleteUser(int id)
  125. {
  126. var user = _userService.GetUserById(id);
  127. if (user != null)
  128. _userService.DeleteUser(user);
  129. return new JsonResult
  130. {
  131. Data = "success"
  132. };
  133. }
  134. #endregion
  135. #region Roles
  136. /// <summary>
  137. /// Basic role view function
  138. /// </summary>
  139. public ActionResult ViewRoles()
  140. {
  141. return View("~/Views/Admin/Roles/View.cshtml");
  142. }
  143. #endregion
  144. #region Plugins
  145. /// <summary>
  146. /// Basic plugin view function
  147. /// </summary>
  148. public ActionResult ViewPlugins()
  149. {
  150. return View("~/Views/Admin/Plugins/View.cshtml");
  151. }
  152. #endregion
  153. }
  154. }