using System.Web.Mvc; using Neo.Legitimate.AssociationConsole.Models; using Neo.Legitimate.Data.Models; using Pilotfish.Afx.Mvc; using Neo.Legitimate.Common; using System.Linq; using System; namespace Neo.Legitimate.AssociationConsole.Controllers { [Authorize] public class AssociationConsoleController : Neo.Legitimate.Common.ControllerBase { private const long _entityID = 1008; private const long _documentStoreLocationID = 3; #region Action Results #region Default public ActionResult Default(long AssociationID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.AssociationsModule_ViewAssociationConsole)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new DefaultModel { Association = database.GetVerifiedAssociation(AssociationID), Provinces = database.GetProvinces(), entityID = _entityID, itemID = AssociationID, DocumentStoreLocationID = _documentStoreLocationID }; model.BrowserTitle = model.Association.AssociationName; ViewBag.Controller = "Association Details"; ViewBag.Page = "Association Details"; return View("Default", model); } #endregion #region Members public ActionResult Members(long AssociationID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.AssociationsModule_ViewAssociationConsole)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new MembersModel { Association = database.GetVerifiedAssociation(AssociationID), Members = database.GetVerifiedAssociationMembers(AssociationID), entityID = _entityID, itemID = AssociationID, DocumentStoreLocationID = _documentStoreLocationID }; model.BrowserTitle = model.Association.AssociationName; ViewBag.Controller = "Members"; ViewBag.Page = "Members"; return View("Members", model); } #endregion #region Routes public ActionResult Routes(long AssociationID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.AssociationsModule_ViewAssociationConsole)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new RoutesModel { Association = database.GetVerifiedAssociation(AssociationID), Routes = database.GetVerifiedAssociationRoutes(AssociationID), entityID = _entityID, itemID = AssociationID, DocumentStoreLocationID = _documentStoreLocationID }; model.BrowserTitle = model.Association.AssociationName; ViewBag.Controller = "Routes"; ViewBag.Page = "Routes"; return View("Routes", model); } #endregion #endregion #region JSON endpoints [HttpPost] public JsonResult LinkRouteToAssociaton(long associationID, string nationalRouteNumber) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.AssociationsModule_AssociationConsole_AdjustRoutes)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; try { var route = database.GetVerifiedRouteByNationalRouteNumber(nationalRouteNumber); if (route != null) { database.LinkAssociationToRoute(associationID, route.RouteID, Profile.UserID); } else { throw new Exception("National route number " + nationalRouteNumber + " not found"); } } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var results = new { ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } [HttpPost] public JsonResult DeLinkRouteFromAssociaton(long associationID, long routeID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.AssociationsModule_AssociationConsole_AdjustRoutes)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; try { database.DelinkAssociationFromRoute(associationID, routeID, Profile.UserID); } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var results = new { ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion } }