using System; using System.Collections.Generic; using System.Web.Mvc; using Neo.Legitimate.Admin.Models; using Neo.Legitimate.Data.Models; using Pilotfish.Afx.Services.Integration; using Pilotfish.Afx.ViewModels; using Pilotfish.Afx.Admin.Security; using Pilotfish.Afx.Common; using Pilotfish.Afx.Mvc; using Neo.Legitimate.Common; using System.Linq; using Neo.Legitimate.Common.Helpers; namespace Neo.Legitimate.Admin.Controllers { [Authorize] public partial class AdminController : Neo.Legitimate.Common.ControllerBase { #region Action Results #region Users public ActionResult Users() { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.Securable.AdminModule_ManageUsers)) { return RedirectToAction("Default", "Applications"); } var securityDatabase = new SecurityDatabase(); var model = new DefaultModel { Users = securityDatabase.GetUsers() }; WebHelper.SetLastPageVisited(HttpContext, "Admin/Users"); ViewBag.Controller = "Admin"; ViewBag.Page = "Users"; return View("Users", model); } #endregion #region Places public ActionResult Places() { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.Securable.AdminModule_ManagePlaces)) { return RedirectToAction("Default", "Applications"); } var database = new LegitimateDatabase(); var model = new PlacesModel { Places = database.GetVerifiedPlaces(), PlaceTypes = database.GetPlaceTypes() }; WebHelper.SetLastPageVisited(HttpContext, "Admin/Places"); ViewBag.Controller = "Admin"; ViewBag.Page = "Places"; return View("Places", model); } #endregion #region RoleSecurables public ActionResult RoleSecurables() { if (!SecurityHelper.UserHasRole(Profile.Roles, Neo.Legitimate.Common.Role.LegitimateSystemAdministrator)) { return RedirectToAction("Default", "Applications"); } var database = new SecurityDatabase(); var model = new RoleSecurablesModel(); model.Securables = database.GetSecurables().OrderBy(a => a.Name); model.Roles = database.GetRoles().OrderBy(a => a.Name); WebHelper.SetLastPageVisited(HttpContext, "Admin/RoleSecurables"); ViewBag.Controller = "Admin"; ViewBag.Page = "Role Security"; return View("RoleSecurables", model); } #endregion #endregion #region UpdatePlace [HttpPost] public JsonResult UpdatePlace(long placeID, string placeName, short placeTypeID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.Securable.AdminModule_ManagePlaces)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; try { database.UpdateVerifiedPlace(placeID, placeName, placeTypeID, null, null, Profile.UserID, null, true); } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region GetRoleDetails [HttpPost] public JsonResult GetRoleDetails(short roleID) { if(!SecurityHelper.UserHasRole(Profile.Roles, Neo.Legitimate.Common.Role.LegitimateSystemAdministrator)) { throw new Exception("Security error"); } var database = new SecurityDatabase(); var roleDetails = new RoleDetails(); var errorMessage = ""; try { roleDetails.Role = database.GetRoleByID(roleID); roleDetails.RoleSecurables = database.GetRoleSecurables(roleID); roleDetails.UsersLinkedToRole = database.GetUsers(roleID); } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { RoleDetails = roleDetails, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region GetRoleDetails [HttpPost] public JsonResult SaveRoleSecurables(short roleID, string securables) { if (!SecurityHelper.UserHasRole(Profile.Roles, Neo.Legitimate.Common.Role.LegitimateSystemAdministrator)) { throw new Exception("Security error"); } var database = new SecurityDatabase(); var roleDetails = new RoleDetails(); var errorMessage = ""; try { database.SaveRoleSecurables(roleID, securables, Profile.UserID); } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion } }