RightsController.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using GreenTree.Strohrmann.ERP.Core.Domain.Rights;
  6. using GreenTree.Strohrmann.ERP.Core.Helper;
  7. using GreenTree.Strohrmann.ERP.Domain.Model;
  8. using GreenTree.Strohrmann.ERP.Web.Models.Rights.User;
  9. using Microsoft.AspNetCore.Http;
  10. using Microsoft.AspNetCore.Mvc;
  11. namespace GreenTree.Strohrmann.ERP.Web.Controllers
  12. {
  13. public class RightsController : Controller
  14. {
  15. #region DI fields
  16. // The global DbContext
  17. private readonly ERPDbContext _eRPDbContext;
  18. // The global user helper
  19. private readonly IUserHelper _userHelper;
  20. #endregion
  21. #region Ctor
  22. /// <summary>
  23. /// Initializes a new instance of the RightsController class
  24. /// </summary>
  25. /// <param name="eRPDbContext">Global DbContext.</param>
  26. /// <param name="userHelper">Global user helper.</param>
  27. public RightsController(
  28. ERPDbContext eRPDbContext,
  29. IUserHelper userHelper)
  30. {
  31. _eRPDbContext = eRPDbContext;
  32. _userHelper = userHelper;
  33. }
  34. #endregion
  35. #region Actions
  36. // GET: Rights
  37. public ActionResult Index()
  38. {
  39. var users = _eRPDbContext.Users
  40. .ToList()
  41. .Select(u => new UserModel(u));
  42. return View("~/Views/Rights/User/Index.cshtml", users);
  43. }
  44. // GET: Rights/Details/5
  45. public ActionResult Details(int id)
  46. {
  47. var user = _eRPDbContext.Users
  48. .FirstOrDefault(u => u.Id == id);
  49. var userModel = new UserModel(user);
  50. return View("~/Views/Rights/User/Details.cshtml", userModel);
  51. }
  52. // GET: Rights/Create
  53. public ActionResult Create()
  54. {
  55. ViewData.Add("AvailablePolicies", Startup._availablePolicies);
  56. return View("~/Views/Rights/User/Create.cshtml");
  57. }
  58. // POST: Rights/Create
  59. [HttpPost]
  60. [ValidateAntiForgeryToken]
  61. public ActionResult Create(UserModel userModel)
  62. {
  63. if (!ModelState.IsValid)
  64. return View("~/Views/Rights/User/Create.cshtml", userModel);
  65. var user = new User
  66. {
  67. Accountname = userModel.Accountname,
  68. Password = _userHelper.HashString(userModel.Password, true),
  69. Forename = userModel.Forename,
  70. Lastname = userModel.Lastname,
  71. MailAddress = userModel.MailAddress,
  72. Birthdate = userModel.Birthdate,
  73. Activated = true
  74. };
  75. if (userModel.Policies != null)
  76. {
  77. user.Policies = new List<UserPolicy>(
  78. userModel.Policies
  79. .Select(p => new UserPolicy
  80. {
  81. PolicyName = p,
  82. User = user
  83. }));
  84. }
  85. _eRPDbContext.Users.Add(user);
  86. _eRPDbContext.SaveChanges();
  87. return RedirectToAction(nameof(Index));
  88. }
  89. // GET: Rights/Edit/5
  90. public ActionResult Edit(int id)
  91. {
  92. ViewData.Add("AvailablePolicies", Startup._availablePolicies);
  93. var user = _eRPDbContext.Users
  94. .FirstOrDefault(u => u.Id == id);
  95. var userModel = new UserModel(user);
  96. return View("~/Views/Rights/User/Edit.cshtml", userModel);
  97. }
  98. // POST: Rights/Edit/5
  99. [HttpPost]
  100. [ValidateAntiForgeryToken]
  101. public ActionResult Edit(int id, UserModel userModel)
  102. {
  103. if (!ModelState.IsValid)
  104. return View("~/Views/Rights/User/Edit.cshtml", userModel);
  105. var user = _eRPDbContext.Users
  106. .FirstOrDefault(u => u.Id == id);
  107. user.Accountname = userModel.Accountname;
  108. user.Forename = userModel.Forename;
  109. user.Lastname = userModel.Lastname;
  110. user.MailAddress = userModel.MailAddress;
  111. user.Birthdate = userModel.Birthdate;
  112. user.Activated = userModel.Activated;
  113. user.Policies.Clear();
  114. _eRPDbContext.SaveChanges();
  115. if (userModel.Policies != null)
  116. {
  117. user.Policies = new List<UserPolicy>(
  118. userModel.Policies
  119. .Select(p => new UserPolicy
  120. {
  121. PolicyName = p,
  122. User = user
  123. }));
  124. }
  125. _eRPDbContext.SaveChanges();
  126. return RedirectToAction(nameof(Index));
  127. }
  128. // POST: Rights/Delete/5
  129. [HttpPost]
  130. [ValidateAntiForgeryToken]
  131. public ActionResult Delete(int id, IFormCollection collection)
  132. {
  133. var user = _eRPDbContext.Users
  134. .FirstOrDefault(u => u.Id == id);
  135. _eRPDbContext.Users.Remove(user);
  136. _eRPDbContext.SaveChanges();
  137. return RedirectToAction(nameof(Index));
  138. }
  139. #endregion
  140. }
  141. }