using System.Web.Mvc; using Neo.Legitimate.RouteConsole.Models; using Neo.Legitimate.Data.Models; using Pilotfish.Afx.Mvc; using Pilotfish.Afx.Services.Workflows; using System; using Neo.Legitimate.Common; using System.Linq; namespace Neo.Legitimate.RouteConsole.Controllers { [Authorize] public class RouteConsoleController : Neo.Legitimate.Common.ControllerBase { private const long _entityID = 1010; private const long _documentStoreLocationID = 3; #region Action Results #region Default public ActionResult Default(long RouteID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.RoutesModule_ViewRouteConsole)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new DefaultModel { Route = database.GetVerifiedRoute(RouteID), Provinces = database.GetProvinces(), Workflows = database.GetNewRouteRequestWorkflows(RouteID), entityID = _entityID, itemID = RouteID, DocumentStoreLocationID = _documentStoreLocationID }; model.BrowserTitle = (model.Route.RouteID == -1) ? "New route" : model.Route.NationalRouteNumber; ViewBag.Controller = "Route Details"; ViewBag.Page = "Route Details"; return View("Default", model); } #endregion #region OperatingLicences public ActionResult OperatingLicences(long RouteID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.RoutesModule_ViewRouteConsole)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new OperatingLicenceModel { Route = database.GetVerifiedRoute(RouteID), OperatingLicences = database.GetVerifiedRouteLicences(RouteID), entityID = _entityID, itemID = RouteID, DocumentStoreLocationID = _documentStoreLocationID }; model.BrowserTitle = (model.Route.RouteID == -1) ? "New route" : model.Route.NationalRouteNumber; ViewBag.Controller = "Operating Licences"; ViewBag.Page = "Operating Licences"; return View("OperatingLicences", model); } #endregion #region Nodes public ActionResult Nodes(long RouteID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.RoutesModule_ViewRouteConsole)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new NodeModel { Route = database.GetVerifiedRoute(RouteID), RouteNodes = database.GetVerifiedRouteRouteNodes(RouteID), entityID = _entityID, itemID = RouteID, DocumentStoreLocationID = _documentStoreLocationID }; model.BrowserTitle = (model.Route.RouteID == -1) ? "New route" : model.Route.NationalRouteNumber; ViewBag.Controller = "Route Nodes"; ViewBag.Page = "Route Nodes"; return View("Nodes", model); } #endregion #region Associations public ActionResult Associations(long RouteID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.RoutesModule_ViewRouteConsole)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new AssociationsModel { Route = database.GetVerifiedRoute(RouteID), Associations = database.GetRouteAssociationSummary(RouteID, Profile.UserID), entityID = _entityID, itemID = RouteID, DocumentStoreLocationID = _documentStoreLocationID }; model.BrowserTitle = (model.Route.RouteID == -1) ? "New route" : model.Route.NationalRouteNumber; ViewBag.Controller = "Associations"; ViewBag.Page = "Associations"; return View("Associations", model); } #endregion #endregion #region JSON endpoints #region SendToPurification [HttpPost] public JsonResult SendToPurification(long routeId) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.RoutesModule_SendToPurification)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; var success = false; try { if (SecurityHelper.UserHasRole(Profile.Roles, Role.DataPurification)) { database.SendToPurification(routeId, Profile.UserID); success = true; } else { errorMessage = "Security error"; } } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var result = new { Success = success, ErrorMessage = errorMessage }; return Json(result, JsonSerializerOptions.None); } #endregion #endregion } }