using System.Web.Mvc; using Neo.Legitimate.Routes.Models; using Neo.Legitimate.Data.Models; using System; using System.Collections.Generic; using Neo.Legitimate.Common; using System.Linq; using Neo.Legitimate.Common.Helpers; namespace Neo.Legitimate.Routes.Controllers { public partial class RoutesController : Neo.Legitimate.Common.ControllerBase { #region Action Results #region Purification public ActionResult Purification() { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.Securable.RoutesModule_Purification)) { return RedirectToAction("Default", "Applications"); } var database = new LegitimateDatabase(); var model = new PurificationModel(); var counts = database.GetRoutePurificationCounts(Profile.UserID); model.AwaitingRouteDescriptionCheckCount = counts.AwaitingRouteDescriptionCheckCount.Value; model.DuplicateNationalRouteNumbersCount = counts.DuplicateNationalRouteNumbersCount.Value; model.DuplicateBoardRouteNumbersCount = counts.DuplicateBoardRouteNumbersCount.Value; model.DuplicatePlacesCount = counts.DuplicatePlacesCount.Value; model.PotentialOlasRouteChangeCount = counts.PotentialOleasDescriptionChangeCount.Value; WebHelper.SetLastPageVisited(HttpContext, "Routes/Purification"); ViewBag.Controller = "Routes"; ViewBag.Page = "Purification"; return View("Purification", model); } #endregion #region Purification_DuplicateNationalRouteNumbersList public ActionResult Purification_DuplicateNationalRouteNumbersList(int top) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.Securable.RoutesModule_Purification_Resolveduplicatenationalroutenumbers)) { return RedirectToAction("Default", "Applications"); } var database = new LegitimateDatabase(); var model = new Purification_DuplicateNationalRouteNumbersModel(); model.DuplicateNationalRouteNumbers = database.GetRoutePurification_DuplicateNationalRouteNumbersList(top, Profile.UserID); ViewBag.Controller = "Routes"; ViewBag.Page = "Purification"; return View("Purification_DuplicateNationalRouteNumbersList", model); } #endregion #region Purification_DuplicateBoardRouteNumbersList public ActionResult Purification_DuplicateBoardRouteNumbersList(int top) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.Securable.RoutesModule_Purification_Resolveduplicateboardroutenumbers)) { return RedirectToAction("Default", "Applications"); } var database = new LegitimateDatabase(); var model = new Purification_DuplicateBoardRouteNumbersModel(); model.DuplicateBoardRouteNumbers = database.GetRoutePurification_DuplicateBoardRouteNumbersList(top, Profile.UserID); ViewBag.Controller = "Routes"; ViewBag.Page = "Purification"; return View("Purification_DuplicateBoardRouteNumbersList", model); } #endregion #region Purification_PotentialOlasRouteChangeList public ActionResult Purification_PotentialOlasRouteChangeList(int top) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.Securable.RoutesModule_Purification_UpdatepotentialOLASdescriptions)) { return RedirectToAction("Default", "Applications"); } var database = new LegitimateDatabase(); var model = new Purification_PotentialOlasRouteChangeModel(); model.PotentialRouteChanges = database.GetPotentialOLASRouteChangeList(top, Profile.UserID); ViewBag.Controller = "Routes"; ViewBag.Page = "Purification"; return View("Purification_PotentialRouteDescriptionChangeList", model); } #endregion #region Purification_AwaitingRouteDescriptionCheckList public ActionResult Purification_AwaitingRouteDescriptionCheckList(int top) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.Securable.RoutesModule_Purification_Checkroutedescription)) { return RedirectToAction("Default", "Applications"); } var database = new LegitimateDatabase(); var model = new Purification_AwaitingRouteDescriptionCheckModel(); model.AwaitingRouteDescriptionChecks = database.GetRoutePurification_RouteAwaitingRouteDescriptionChecksList(top, Profile.UserID); ViewBag.Controller = "Routes"; ViewBag.Page = "Purification"; return View("Purification_AwaitingRouteDescriptionCheckList", model); } #endregion #endregion #region JSON endpoints #region UpdateVerifiedRouteDescriptionFromPurification [HttpPost] public JsonResult UpdateVerifiedRouteDescriptionFromPurification(long routeID, long originPlaceID, long destinationPlaceID, string description, int routeTypeID, long? timeTableDocumentID, long? fareScheduleDocumentID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.Securable.RoutesModule_Purification)) { throw new Exception("Security Error"); } var database = new LegitimateDatabase(); var success = true; var errorMessage = ""; try { database.UpdateVerifiedRouteDescriptionFromPurification(routeID, originPlaceID, destinationPlaceID, description, routeTypeID, timeTableDocumentID, fareScheduleDocumentID, Profile.UserID); } catch (Exception ex) { success = false; errorMessage = database.GetInnermostMessage(ex); } return Json(new { routeID, success, errorMessage }); } #endregion #region DeleteRoute [HttpPost] public JsonResult DeleteRoute(long routeID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.Securable.RoutesModule_Purification)) { throw new Exception("Security Error"); } var database = new LegitimateDatabase(); var success = true; var errorMessage = ""; try { database.DeleteVerifiedRouteFromPurification(routeID, Profile.UserID); } catch (Exception ex) { success = false; errorMessage = database.GetInnermostMessage(ex); } return Json(new { routeID, success, errorMessage }); } #endregion #region GetDuplicateNationalRouteNumberDetails [HttpPost] public JsonResult GetDuplicateNationalRouteNumberDetails(string nationalRouteNumber) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.Securable.RoutesModule_Purification)) { throw new Exception("Security Error"); } var database = new LegitimateDatabase(); var success = true; var errorMessage = ""; dynamic data = null; try { data = database.GetDuplicateNationalRouteNumberDetails(nationalRouteNumber, Profile.UserID); } catch (Exception ex) { success = false; errorMessage = database.GetInnermostMessage(ex); } return Json(new { data, success, errorMessage }, Pilotfish.Afx.Mvc.JsonSerializerOptions.FormatDateTime); } #endregion #region MergeRoutes [HttpPost] public JsonResult MergeRoutes(long mergeWithRouteID, List obsoleteRoutes) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.Securable.RoutesModule_Purification)) { throw new Exception("Security Error"); } var database = new LegitimateDatabase(); var success = true; var errorMessage = ""; try { foreach (var obsoleteRoute in obsoleteRoutes) { database.MergeRoutes(mergeWithRouteID, obsoleteRoute, Profile.UserID); } } catch (Exception ex) { success = false; errorMessage = database.GetInnermostMessage(ex); } return Json(new { mergeWithRouteID, success, errorMessage }); } #endregion #region GetDuplicateBoardRouteNumberDetails [HttpPost] public JsonResult GetDuplicateBoardRouteNumberDetails(string boardRouteNumber) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.Securable.RoutesModule_Purification)) { throw new Exception("Security Error"); } var database = new LegitimateDatabase(); var success = true; var errorMessage = ""; dynamic data = null; try { data = database.GetDuplicateBoardRouteNumberDetails(boardRouteNumber, Profile.UserID); } catch (Exception ex) { success = false; errorMessage = database.GetInnermostMessage(ex); } return Json(new { data, success, errorMessage }, Pilotfish.Afx.Mvc.JsonSerializerOptions.FormatDateTime); } #endregion #endregion } }