using Fab2ApprovalSystem.DMO; using Fab2ApprovalSystem.Models; using Kendo.Mvc.UI; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Kendo.Mvc.Extensions; using Fab2ApprovalSystem.Misc; namespace Fab2ApprovalSystem.Controllers { [Authorize] [SessionExpireFilter] public class AdminController : Controller { // GET: /Admin/ UserAccountDMO userDMO = new UserAccountDMO(); AdminDMO adminDMO = new AdminDMO(); TrainingDMO trainingDMO = new TrainingDMO(); /// /// /// /// public ActionResult Index() { if ((bool)Session[GlobalVars.IS_ADMIN]) { var model = userDMO.GetAllUsers(); return View(model); } else return Content("Not Autthorized"); } /// /// /// /// public ActionResult AssignRoles() { if ((bool)Session[GlobalVars.IS_ADMIN]) { ViewBag.ToplevelNode = GetRoles_SubRolesList(); return View(); } else return Content("Not Autthorized"); } /// /// /// /// /// public ActionResult GetAllUserList([DataSourceRequest] DataSourceRequest request) { IEnumerable userlist = userDMO.GetAllUsers(); return Json(userlist, JsonRequestBehavior.AllowGet); } /// /// For the Administration of the Users /// /// /// public ActionResult GetGridUserList([DataSourceRequest] DataSourceRequest request) { return Json(userDMO.GetAllUsers().ToDataSourceResult(request)); } /// /// /// /// /// public JsonResult GetAllUserListBySubRole(int subRole) { IEnumerable userlist = adminDMO.GetAllUsersBySubRole(subRole); return Json(userlist, JsonRequestBehavior.AllowGet); } /// /// /// /// public JsonResult AllSubRoles(string showInactiveRoles = "") { List roles = adminDMO.GetSubRoles(); ParentChildModel parent; ParentChildModel child = new ParentChildModel(); List newRoles = new List(); foreach (Role r in roles) { parent = new ParentChildModel(); parent.id = r.RoleID; parent.parentid = -1; parent.text = r.RoleName; parent.value = r.RoleID.ToString(); foreach (SubRole sr in r.SubRoles) { if (sr.Inactive) { // hide inactive roles unless parameter says otherwise if (showInactiveRoles.Equals("true") == false) continue; } child = new ParentChildModel(); child.id = sr.SubRoleID; child.parentid = r.RoleID; child.text = sr.SubRoleCategoryItem + (sr.Inactive ? " (Inactive)" : ""); child.value = sr.SubRoleID.ToString(); newRoles.Add(child); } newRoles.Add(parent); }; return Json(newRoles, JsonRequestBehavior.AllowGet); } // /// ///OBSOLETE FUNCTION BELOW FOR THE KENDO TREEVIEW /// /// private IEnumerable GetRoles_SubRolesList() { List roles = adminDMO.GetSubRoles(); List ToplevelNode = new List(); List parentList = new List(); List childList = new List(); 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; } /// /// /// /// /// /// public ActionResult AddUserRoles(int subRole, string users) { adminDMO.AddUserRoles(subRole, users); return View(); } /// /// /// /// /// /// public ActionResult DeleteUserRoles(int subRole, string users) { adminDMO.DeleteUserRoles(subRole, users); return View(); } // // GET: /Workflow/Details/5 public ActionResult Details(int id) { return View(); } // // GET: /Workflow/Create public ActionResult Create() { return View(); } // // 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 model) { //if (model != null && ModelState.IsValid) //{ // userDMO.UpdateUser(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)); } /// /// /// /// /// /// [AcceptVerbs(HttpVerbs.Post)] public ActionResult DeleteUser([DataSourceRequest] DataSourceRequest request, LoginModel model) { if (model != null && ModelState.IsValid) { userDMO.DeleteUser(model); trainingDMO.DeleteAssignmentByUserId(model.UserID); } return Json(new[] { model }.ToDataSourceResult(request, ModelState)); } /// /// /// /// /// /// [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)); } /// /// /// /// 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 //return View(); } /// /// /// /// public void ExpireOOOStatus(int oooUserID) { MiscDMO.ExpireOOOStatus(oooUserID); // TODO - Does it need to send an email } public ActionResult ManageTrainingGroups() { //List allGroups = GetTrainingGroups(); //return View(allGroups); if ((bool)Session[GlobalVars.IS_ADMIN]) { ViewBag.AllGroups = GetTrainingGroups(); return View(); } else return Content("Not Autthorized"); } public void RefreshGroups() { ViewBag.AllGroups = GetTrainingGroups(); } public ActionResult TrainingGroups() { List trainingGroups = adminDMO.GetTrainingGroups(); return PartialView(trainingGroups); } public List GetTrainingGroups() { List TrainingGroups = adminDMO.GetTrainingGroups(); //List ToplevelNode = new List(); //List parentList = new List(); //List childList = new List(); //TreeViewItemModel parent = new TreeViewItemModel(); //TreeViewItemModel child = new TreeViewItemModel(); //parent = new TreeViewItemModel(); //parent.HasChildren = true; //parent.Text = "Training Groups"; //foreach (TrainingGroup group in TrainingGroups) //{ // child = new TreeViewItemModel(); // child.Text = group.TrainingGroupName; // child.Id = group.TrainingGroupID.ToString(); // parent.Items.Add(child); //} //ToplevelNode.Add(parent); ////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 TrainingGroups; } public ActionResult AddNewTrainingGroup(string groupName) { try { adminDMO.AddNewTrainingGroup(groupName); return Json(new {test = "Succesfully saved" }); } catch { return Content("Unable to Save Group", "application/json"); } } 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(); } public ActionResult TrainingGroupPartial(int TrainingGroupID) { ViewBag.AllUsers = userDMO.GetAllUsers(); ViewBag.TrainingGroupId = TrainingGroupID; List trainingGroupMembers = adminDMO.GetTrainingGroupMembers(TrainingGroupID); return PartialView(trainingGroupMembers); } public ActionResult AddToGroup(int userId, int groupId) { adminDMO.AddUserToGroup(userId, groupId); return Json(new { test = "Succesfully saved" }); } public ActionResult DeleteFromGroup(int userId, int groupId) { adminDMO.DeleteFromGroup(userId, groupId); return Json(new { test = "Succesfully removed" }); } public ActionResult JobSchedulerConfiguration() { if ((bool)Session[GlobalVars.IS_ADMIN]) { return View(); } else return Content("Not Autthorized"); } public ActionResult TrainingReportConfig() { ViewBag.AllUsers = userDMO.GetAllUsers(); List currentTrainingReportUsersIds = adminDMO.GetTrainingReportUsers(); List currentTrainingReportUsers = new List(); foreach (TrainingReportUser id in currentTrainingReportUsersIds) { currentTrainingReportUsers.Add(userDMO.GetUserByID(id.UserId)); } ViewBag.CurrentReportUsers = currentTrainingReportUsers; return PartialView(); } public ActionResult TECNNotificationConfig() { ViewBag.AllUsers = userDMO.GetAllUsers(); List currentTECNNotificationUsersIds = adminDMO.GetTECNNotificationUsers(); List currentTECNNotificationUsers = new List(); foreach (TECNNotificationsUser id in currentTECNNotificationUsersIds) { currentTECNNotificationUsers.Add(userDMO.GetUserByID(id.UserId)); } ViewBag.CurrentReportUsers = currentTECNNotificationUsers; return PartialView(); } public ActionResult AddToTrainingReport(int userId) { if ((bool)Session[GlobalVars.IS_ADMIN]) { //Check to make sure user is not apart of the group already bool userExists = false; //bool userValid = true; List 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"); } } public ActionResult AddToTECNNotification(int userId) { if ((bool)Session[GlobalVars.IS_ADMIN]) { //Check to make sure user is not apart of the group already bool userExists = false; //bool userValid = true; List 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"); } } public ActionResult DeleteFromTrainingReport(int userId) { if ((bool)Session[GlobalVars.IS_ADMIN]) { 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 ((bool)Session[GlobalVars.IS_ADMIN]) { try { adminDMO.TECNExpirationDeleteUser(userId); return Content("Successfully Deleted"); } catch { return Content("Error while trying to delete"); } } else { return Content("Not Autthorized"); } } } }