459 lines
14 KiB
C#
459 lines
14 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
#if !NET8
|
|
using System.Web;
|
|
using System.Web.Mvc;
|
|
#endif
|
|
|
|
#if NET8
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
#endif
|
|
|
|
using Fab2ApprovalSystem.DMO;
|
|
using Fab2ApprovalSystem.Misc;
|
|
using Fab2ApprovalSystem.Models;
|
|
#if !NET8
|
|
using System.Linq;
|
|
using Fab2ApprovalSystem.ViewModels;
|
|
#endif
|
|
|
|
#if !NET8
|
|
using Kendo.Mvc.Extensions;
|
|
using Kendo.Mvc.UI;
|
|
#endif
|
|
|
|
namespace Fab2ApprovalSystem.Controllers;
|
|
|
|
[Authorize]
|
|
#if !NET8
|
|
[SessionExpireFilter]
|
|
#endif
|
|
#if NET8
|
|
[Route("[controller]")]
|
|
#endif
|
|
public class AdminController : Controller {
|
|
// GET: /Admin/
|
|
private readonly UserAccountDMO userDMO = new();
|
|
private readonly AdminDMO adminDMO = new();
|
|
private readonly TrainingDMO trainingDMO = new();
|
|
private readonly LotDispositionDMO ldDMO = new();
|
|
private readonly AppSettings? _AppSettings = GlobalVars.AppSettings;
|
|
|
|
public ActionResult Index() {
|
|
if (GlobalVars.IsAdmin(GetSession())) {
|
|
var model = userDMO.GetAllUsers();
|
|
ViewBag.AllActiveUsers = userDMO.GetAllActiveUsers();
|
|
return View(model);
|
|
} else
|
|
return Content("Not Autthorized");
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult AssignRoles() {
|
|
if (GlobalVars.IsAdmin(GetSession())) {
|
|
ViewBag.ToplevelNode = GetRoles_SubRolesList();
|
|
return View();
|
|
} else
|
|
return Content("Not Autthorized");
|
|
}
|
|
|
|
public ActionResult GetAllUserList([DataSourceRequest] DataSourceRequest request) {
|
|
IEnumerable<LoginModel> userlist = userDMO.GetAllActiveUsers();
|
|
return GetJsonResult(userlist);
|
|
}
|
|
|
|
public ActionResult GetGridUserList([DataSourceRequest] DataSourceRequest request) {
|
|
return GetJsonResult(userDMO.GetAllUsers().ToDataSourceResult(request));
|
|
}
|
|
|
|
#endif
|
|
|
|
public JsonResult GetAllUserListBySubRole(int subRole) {
|
|
IEnumerable<LoginModel> userlist = adminDMO.GetAllUsersBySubRole(subRole);
|
|
return GetJsonResult(userlist);
|
|
}
|
|
|
|
public JsonResult AllSubRoles(string showInactiveRoles = "") {
|
|
List<ParentChildModel> newRoles = adminDMO.GetAllSubRoles(showInactiveRoles);
|
|
return GetJsonResult(newRoles);
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult GetSubRoleListByUserId([DataSourceRequest] DataSourceRequest request, string userId) {
|
|
int userIdInt = Convert.ToInt32(userId);
|
|
|
|
return Json(adminDMO.GetUserSubRoles(userIdInt).ToDataSourceResult(request));
|
|
}
|
|
|
|
private IEnumerable<TreeViewItemModel> GetRoles_SubRolesList() {
|
|
List<Role> roles = adminDMO.GetSubRoles();
|
|
|
|
List<TreeViewItemModel> ToplevelNode = new List<TreeViewItemModel>();
|
|
List<TreeViewItemModel> parentList = new List<TreeViewItemModel>();
|
|
List<TreeViewItemModel> childList = new List<TreeViewItemModel>();
|
|
|
|
TreeViewItemModel parent = new TreeViewItemModel();
|
|
TreeViewItemModel child = new TreeViewItemModel();
|
|
|
|
foreach (Role r in roles) {
|
|
parent = new TreeViewItemModel();
|
|
parent.HasChildren = true;
|
|
parent.Text = r.RoleName;
|
|
parent.Id = r.RoleID.ToString();
|
|
|
|
foreach (SubRole sr in r.SubRoles) {
|
|
child = new TreeViewItemModel();
|
|
child.Text = sr.SubRoleCategoryItem;
|
|
child.Id = sr.SubRoleID.ToString();
|
|
|
|
parent.Items.Add(child);
|
|
}
|
|
|
|
ToplevelNode.Add(parent);
|
|
};
|
|
|
|
return ToplevelNode;
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult AddUserRoles(int subRole, string users) {
|
|
adminDMO.AddUserRoles(subRole, users);
|
|
return View();
|
|
}
|
|
|
|
public ActionResult ReplaceUserRoles(int subRole, string users) {
|
|
adminDMO.AddUserRoles(subRole, users);
|
|
return Content("Success");
|
|
}
|
|
|
|
public ActionResult DeleteUserRoles(int subRole, string users) {
|
|
adminDMO.DeleteUserRoles(subRole, users);
|
|
return Content("");
|
|
}
|
|
|
|
// GET: /Workflow/Details/5
|
|
public ActionResult Details(int id) {
|
|
return View();
|
|
}
|
|
|
|
// GET: /Workflow/Create
|
|
public ActionResult Create() {
|
|
return View();
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
// POST: /Workflow/Create
|
|
[HttpPost]
|
|
public ActionResult Create(FormCollection collection) {
|
|
try {
|
|
// TODO: Add insert logic here
|
|
|
|
return RedirectToAction("Index");
|
|
} catch {
|
|
return View();
|
|
}
|
|
}
|
|
|
|
[AcceptVerbs(HttpVerbs.Post)]
|
|
public ActionResult BatchUpdateUser([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")] IEnumerable<LoginModel> model) {
|
|
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
|
|
}
|
|
|
|
[AcceptVerbs(HttpVerbs.Post)]
|
|
public ActionResult UpdateUser([DataSourceRequest] DataSourceRequest request, LoginModel model) {
|
|
if (model != null && ModelState.IsValid) {
|
|
userDMO.UpdateUser(model);
|
|
}
|
|
|
|
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult DeleteUser(string userId) {
|
|
LoginModel loginModel = userDMO.GetUserByID(Convert.ToInt32(userId));
|
|
adminDMO.DeleteUser(userDMO, trainingDMO, loginModel);
|
|
return Content("Success");
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
[AcceptVerbs(HttpVerbs.Post)]
|
|
public ActionResult InsertUser([DataSourceRequest] DataSourceRequest request, LoginModel model) {
|
|
try {
|
|
if (model != null && ModelState.IsValid) {
|
|
userDMO.InsertUser(model);
|
|
}
|
|
} catch (Exception ex) {
|
|
// TODO
|
|
throw new Exception(ex.Message);
|
|
}
|
|
|
|
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult EnableOOOStatus(int oooUserID, int delegatedTo, DateTime startDate, DateTime endDate) {
|
|
int returnValue = MiscDMO.EnableOOOStatus(oooUserID, delegatedTo, startDate, endDate);
|
|
if (returnValue == 3) // the delegator is already a delegator to someone else
|
|
{
|
|
return Content("3");
|
|
} else
|
|
return Content("");
|
|
|
|
// TODO - Send an email to the OOO person and to the Delegated person
|
|
}
|
|
|
|
public void ExpireOOOStatus(int oooUserID) {
|
|
MiscDMO.ExpireOOOStatus(oooUserID);
|
|
// TODO - Does it need to send an email
|
|
}
|
|
|
|
public ActionResult ManageTrainingGroups() {
|
|
if (GlobalVars.IsAdmin(GetSession())) {
|
|
ViewBag.AllGroups = GetTrainingGroups();
|
|
return View();
|
|
} else
|
|
return Content("Not Autthorized");
|
|
}
|
|
|
|
public void RefreshGroups() {
|
|
ViewBag.AllGroups = GetTrainingGroups();
|
|
}
|
|
|
|
public ActionResult TrainingGroups() {
|
|
List<TrainingGroup> trainingGroups = adminDMO.GetTrainingGroups();
|
|
return PartialView(trainingGroups);
|
|
}
|
|
|
|
public List<TrainingGroup> GetTrainingGroups() {
|
|
List<TrainingGroup> TrainingGroups = adminDMO.GetTrainingGroups();
|
|
return TrainingGroups;
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult GetTaskListByUser([DataSourceRequest] DataSourceRequest request, string userId) {
|
|
IEnumerable<IssuesViewModel> data = ldDMO.GetTaskList(Convert.ToInt32(userId));
|
|
data = from a in data where a.PendingApprovers != null select a;
|
|
return GetJsonResult(data.ToDataSourceResult(request));
|
|
}
|
|
|
|
public ActionResult GetOpenActionItemsByUser([DataSourceRequest] DataSourceRequest request, string userId) {
|
|
IEnumerable<OpenActionItemViewModel> data = ldDMO.GetMyOpenActionItems(Convert.ToInt32(userId));
|
|
return GetJsonResult(data.ToDataSourceResult(request));
|
|
}
|
|
|
|
public ActionResult AddNewTrainingGroup(string groupName) {
|
|
try {
|
|
adminDMO.AddNewTrainingGroup(groupName);
|
|
return Json(new { test = "Succesfully saved" });
|
|
} catch {
|
|
return Content("Unable to Save Group", "application/json");
|
|
}
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult DeleteTrainingGroup(int groupID) {
|
|
try {
|
|
adminDMO.DeleteTrainingGroup(groupID);
|
|
return Json(new { response = "Successfully Deleted" });
|
|
} catch {
|
|
return Json(new { response = "Unsuccessfully Deleted" });
|
|
}
|
|
}
|
|
|
|
public ActionResult ViewTrainingGroup(int TrainingGroupID) {
|
|
ViewBag.GroupID = TrainingGroupID;
|
|
return View();
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult TrainingGroupPartial(int TrainingGroupID) {
|
|
ViewBag.AllUsers = userDMO.GetAllActiveUsers();
|
|
ViewBag.TrainingGroupId = TrainingGroupID;
|
|
List<TrainingGroupMember> trainingGroupMembers = adminDMO.GetTrainingGroupMembers(TrainingGroupID);
|
|
return PartialView(trainingGroupMembers);
|
|
}
|
|
|
|
public ActionResult AddToGroup(int userId, int groupId) {
|
|
try {
|
|
adminDMO.AddUserToGroup(userId, groupId);
|
|
} catch (Exception e) {
|
|
return Json(new { test = e.Message });
|
|
}
|
|
|
|
return Json(new { test = "Succesfully saved" });
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult DeleteFromGroup(int userId, int groupId) {
|
|
try {
|
|
adminDMO.DeleteFromGroup(userId, groupId);
|
|
} catch (Exception e) {
|
|
return Json(new { test = e.Message });
|
|
}
|
|
|
|
return Json(new { test = "Succesfully removed" });
|
|
}
|
|
|
|
public ActionResult JobSchedulerConfiguration() {
|
|
if (GlobalVars.IsAdmin(GetSession())) {
|
|
return View();
|
|
} else
|
|
return Content("Not Autthorized");
|
|
}
|
|
|
|
public ActionResult TrainingReportConfig() {
|
|
ViewBag.AllUsers = userDMO.GetAllActiveUsers();
|
|
List<TrainingReportUser> currentTrainingReportUsersIds = adminDMO.GetTrainingReportUsers();
|
|
List<LoginModel> currentTrainingReportUsers = new();
|
|
|
|
foreach (TrainingReportUser id in currentTrainingReportUsersIds) {
|
|
currentTrainingReportUsers.Add(userDMO.GetUserByID(id.UserId));
|
|
}
|
|
ViewBag.CurrentReportUsers = currentTrainingReportUsers;
|
|
return PartialView();
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult TECNNotificationConfig() {
|
|
ViewBag.AllUsers = userDMO.GetAllActiveUsers();
|
|
List<TECNNotificationsUser> currentTECNNotificationUsersIds = adminDMO.GetTECNNotificationUsers();
|
|
List<LoginModel> currentTECNNotificationUsers = new();
|
|
|
|
foreach (TECNNotificationsUser id in currentTECNNotificationUsersIds) {
|
|
currentTECNNotificationUsers.Add(userDMO.GetUserByID(id.UserId));
|
|
}
|
|
ViewBag.CurrentReportUsers = currentTECNNotificationUsers;
|
|
return PartialView();
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult AddToTrainingReport(int userId) {
|
|
if (GlobalVars.IsAdmin(GetSession())) {
|
|
// Check to make sure user is not apart of the group already
|
|
bool userExists = false;
|
|
List<TrainingReportUser> existingUsers = adminDMO.GetTrainingReportUsers();
|
|
foreach (var item in existingUsers) {
|
|
if (item.UserId == userId) {
|
|
userExists = true;
|
|
}
|
|
}
|
|
// Check if user is valid
|
|
var validUser = userDMO.GetUserByID(userId);
|
|
|
|
// Add to group
|
|
if (!userExists && validUser != null) {
|
|
adminDMO.TrainingReportAddUser(userId);
|
|
return Json("Success Added");
|
|
} else {
|
|
return Content("User either doesn't exist OR is already added");
|
|
}
|
|
} else {
|
|
return Content("Not Autthorized");
|
|
}
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
public ActionResult AddToTECNNotification(int userId) {
|
|
if (GlobalVars.IsAdmin(GetSession())) {
|
|
// Check to make sure user is not apart of the group already
|
|
bool userExists = false;
|
|
List<TECNNotificationsUser> existingUsers = adminDMO.GetTECNNotificationUsers();
|
|
foreach (var item in existingUsers) {
|
|
if (item.UserId == userId) {
|
|
userExists = true;
|
|
}
|
|
}
|
|
// Check if user is valid
|
|
var validUser = userDMO.GetUserByID(userId);
|
|
|
|
// Add to group
|
|
if (!userExists && validUser != null) {
|
|
try {
|
|
adminDMO.TECNExpirationAddUser(userId);
|
|
} catch (Exception e) {
|
|
string exception = e.Message;
|
|
return Content(exception);
|
|
}
|
|
|
|
return Json("Success Added");
|
|
} else {
|
|
return Content("User either doesn't exist OR is already added");
|
|
}
|
|
} else {
|
|
return Content("Not Autthorized");
|
|
}
|
|
}
|
|
|
|
#endif
|
|
|
|
public ActionResult DeleteFromTrainingReport(int userId) {
|
|
if (GlobalVars.IsAdmin(GetSession())) {
|
|
try {
|
|
adminDMO.TrainingReportDeleteUser(userId);
|
|
return Content("Successfully Deleted");
|
|
} catch {
|
|
return Content("Error while trying to delete");
|
|
}
|
|
} else {
|
|
return Content("Not Autthorized");
|
|
}
|
|
}
|
|
|
|
public ActionResult DeleteFromTECNNotification(int userId) {
|
|
if (GlobalVars.IsAdmin(GetSession())) {
|
|
try {
|
|
adminDMO.TECNExpirationDeleteUser(userId);
|
|
return Content("Successfully Deleted");
|
|
} catch {
|
|
return Content("Error while trying to delete");
|
|
}
|
|
} else {
|
|
return Content("Not Autthorized");
|
|
}
|
|
}
|
|
|
|
#if !NET8
|
|
|
|
private System.Web.HttpSessionStateBase GetSession() =>
|
|
Session;
|
|
|
|
private JsonResult GetJsonResult(object? data) =>
|
|
Json(data, JsonRequestBehavior.AllowGet);
|
|
|
|
private bool IsAjaxRequest() =>
|
|
Request.IsAjaxRequest();
|
|
|
|
#endif
|
|
|
|
#if NET8
|
|
|
|
private Microsoft.AspNetCore.Http.ISession GetSession() =>
|
|
HttpContext.Session;
|
|
|
|
private JsonResult GetJsonResult(object? data) =>
|
|
Json(data);
|
|
|
|
private bool IsAjaxRequest() =>
|
|
Request.Headers.TryGetValue("X-Requested-With", out Microsoft.Extensions.Primitives.StringValues strings) && strings[0] == "XMLHttpRequest";
|
|
|
|
#endif
|
|
|
|
private string GetUserIdentityName() =>
|
|
@User.Identity.Name;
|
|
|
|
} |