using Neo.Afx.Mvc; using Neo.Afx.Services.Integration; using Neo.Afx.Services.Workflows; using Neo.Afx.ViewModels; using Neo.LegitimateLicences.Common; using Neo.LegitimateLicences.Common.Helpers; using Neo.LegitimateLicences.Data.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace Neo.LegitimateLicences.AssociationConsole { public partial class AssociationConsoleController : Neo.LegitimateLicences.Common.ControllerBase { private const long _entityID = 1008; private const long _documentStoreLocationID = 3; #region Action Results #region Console public ActionResult Console(long associationID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.AssociationsModule_ViewAssociationConsole)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new ConsoleModel() { AssociationID = associationID }; //model.BrowserTitle = model.Association.AssociationName; ViewBag.Controller = "Association Details"; ViewBag.Page = "Association Details"; return View("Console", model); } #endregion #region Default public ActionResult Default(long associationID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.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(), SecurableEnum.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(), SecurableEnum.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, Profile.UserID), 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(), SecurableEnum.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(), SecurableEnum.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 } }