using Microsoft.AspNetCore.Mvc; using rgbc_sds.services.Models; using rgbc_sds.services.Services; namespace rgbc_sds.website.Controllers.Users { public class UserController : Controller { #region [ Variables ] private readonly UserService _userService; #endregion [ Variables ] #region [ Constructor ] public UserController(UserService userService) { _userService = userService; } #endregion [ Constructor ] public IActionResult Index() { return View(); } [HttpGet] public IActionResult UserList() { var model = _userService.GetUserList(); model.LoggedInUserRole = HttpContext.Session.GetString("LoggedInUserRole"); return View("~/Views/Maintenance/Users/UsersList.cshtml", model); } [HttpGet] public IActionResult AddUser() { var model = new UserViewModel(); // create list of ports to be selected model.Roles.Add(new RoleModel { Id = (int)services.Enums.RoleEnum.Admin, Name = "Admin" }); model.Roles.Add(new RoleModel { Id = (int)services.Enums.RoleEnum.Viewer, Name = "Viewer" }); model.Roles.Add(new RoleModel { Id = (int)services.Enums.RoleEnum.Logistics, Name = "Logistics" }); model.LoggedInUserRole = HttpContext.Session.GetString("LoggedInUserRole"); ViewBag.RoleList = model.Roles; return View("~/Views/Maintenance/Users/AddUser.cshtml", model); } [HttpGet] public IActionResult GetUserToUpdate(int id) { var model = new UserViewModel(); var existingUser = _userService.GetUser(id); if (existingUser != null) { model.Id = existingUser.Id; model.FirstName = existingUser.FirstName; model.LastName = existingUser.LastName; model.Email = existingUser.Email; model.RoleId = Convert.ToInt32(existingUser.RoleId); } // create list of ports to be selected model.Roles.Add(new RoleModel { Id = (int)services.Enums.RoleEnum.Admin, Name = "Admin" }); model.Roles.Add(new RoleModel { Id = (int)services.Enums.RoleEnum.Viewer, Name = "Viewer" }); model.Roles.Add(new RoleModel { Id = (int)services.Enums.RoleEnum.Logistics, Name = "Logistics" }); ViewBag.RoleList = model.Roles; return View("~/Views/Maintenance/Users/UpdateUser.cshtml", model); } [HttpPost] public ActionResult SaveUser(UserViewModel model, IFormCollection fc) { var userModel = new UserModel(); userModel.FirstName = model.FirstName; userModel.LastName = model.LastName; userModel.Email = model.Email; userModel.RoleId = Convert.ToInt32(fc["Roles"]); _userService.AddUser(userModel); userModel.LoggedInUserRole = HttpContext.Session.GetString("LoggedInUserRole"); return RedirectToAction("UserList", "User"); } [HttpPost] public ActionResult UpdateUser(UserViewModel model, IFormCollection fc) { var updateModel = new UserModel(); var existingUser = _userService.GetUser(model.Id); if (existingUser != null) { updateModel.Id = existingUser.Id; updateModel.FirstName = existingUser.FirstName; updateModel.LastName = existingUser.LastName; updateModel.Email = existingUser.Email; updateModel.RoleId = Convert.ToInt32(fc["Roles"]); _userService.UpdateUser(updateModel); } updateModel.LoggedInUserRole = HttpContext.Session.GetString("LoggedInUserRole"); return RedirectToAction("UserList", "User"); } [HttpPost] public ActionResult DeleteUser(int Id) { var result = _userService.DeleteUser(Id); return RedirectToAction("UserList", "User"); } } }