using System.Web.Mvc; using Neo.Legitimate.OperatingLicenceConsole.Models; using Neo.Legitimate.Data.Models; using Pilotfish.Afx.Mvc; using Neo.Legitimate.Common; using System; using System.Linq; namespace Neo.Legitimate.OperatingLicenceConsole.Controllers { [Authorize] public class OperatingLicenceConsoleController : Neo.Legitimate.Common.ControllerBase { private const long _entityID = 1011; private const long _documentStoreLocationID = 3; #region Action Results #region Default public ActionResult Default(long licenceID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.OperatingLicencesModule_ViewOperatingLicenceConsole)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new DefaultModel { OperatingLicence = database.GetVerifiedLicence(licenceID), IssueWorkflowDetails = database.GetVerifiedLicenceIssueWorkflowDetails(licenceID), ApplicationWorkflowDetails = database.GetVerifiedLicenceApplicationWorkflowDetails(licenceID), entityID = _entityID, itemID = licenceID, DocumentStoreLocationID = _documentStoreLocationID }; model.BrowserTitle = (model.OperatingLicence.LicenceID == -1) ? "New licence" : model.OperatingLicence.OperatingLicenceNumber; ViewBag.Controller = "Operating Licence Details"; ViewBag.Page = "Operating Licence Details"; return View("Default", model); } #endregion #region Vehicles public ActionResult Vehicles(long licenceID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.OperatingLicencesModule_ViewOperatingLicenceConsole)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var licence = database.GetVerifiedLicence(licenceID); var vehicleDocuments = database.GetVerifiedLicenceWorkflowDocuments(licenceID).Where(a => a.Title == "Vehicle Roadworthy Certificate" || a.Title == "Original certified copy of vehicle registration document / logbook" || a.Title == "Original certified copy of valid COR/COF (corresponding with logbook)"); var ignoreException = licence.Vehicle != null && licence.Vehicle.IgnoreVinException.HasValue && licence.Vehicle.IgnoreVinException.Value == true; var showFlagVinAsCorrectButton = licence.LicenceExceptions.Any(a => a.Exception == "The vehicle VIN appears to be incorrect") && !ignoreException; var IsVehicleDelinked = licence.Vehicle != null && licence.Vehicle.RegistrationNumber.Contains("delinked"); var model = new VehicleModel { OperatingLicence = licence, VehicleTypes = database.GetVehicleTypes(), CarryingCapacities = database.GetVehicleCarryingCapacities(), VehicleMakes = database.GetVehicleMakes(), entityID = _entityID, itemID = licenceID, DocumentStoreLocationID = _documentStoreLocationID, VehicleDocuments = vehicleDocuments, ShowFlagVinAsCorrectButton = showFlagVinAsCorrectButton, IsVehicleDelinked = IsVehicleDelinked }; model.BrowserTitle = (model.OperatingLicence.LicenceID == -1) ? "New licence" : model.OperatingLicence.OperatingLicenceNumber; ViewBag.Controller = "Vehicle"; ViewBag.Page = "Vehicle"; return View("Vehicles", model); } #endregion #region RelatedApplications public ActionResult RelatedApplications(long licenceID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.OperatingLicencesModule_ViewOperatingLicenceConsole)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new RelatedApplicationsModel { OperatingLicence = database.GetVerifiedLicence(licenceID), RelatedApplications = database.GetVerifiedLicenceRelatedApplications(licenceID), entityID = _entityID, itemID = licenceID, DocumentStoreLocationID = _documentStoreLocationID }; model.BrowserTitle = (model.OperatingLicence.LicenceID == -1) ? "New licence" : model.OperatingLicence.OperatingLicenceNumber; ViewBag.Controller = "Related Applications"; ViewBag.Page = "Related Applications"; return View("RelatedApplications", model); } #endregion #region RelatedIssues public ActionResult RelatedIssues(long licenceID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.OperatingLicencesModule_ViewOperatingLicenceConsole)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new RelatedIssuesModel { OperatingLicence = database.GetVerifiedLicence(licenceID), RelatedIssues = database.GetVerifiedLicenceRelatedIssues(licenceID), entityID = _entityID, itemID = licenceID, DocumentStoreLocationID = _documentStoreLocationID }; model.BrowserTitle = (model.OperatingLicence.LicenceID == -1) ? "New licence" : model.OperatingLicence.OperatingLicenceNumber; ViewBag.Controller = "Related Issues"; ViewBag.Page = "Related Issues"; return View("RelatedIssues", model); } #endregion #region Documents public ActionResult Documents(long licenceID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.OperatingLicencesModule_ViewOperatingLicenceConsole)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new DocumentsModel { OperatingLicence = database.GetVerifiedLicence(licenceID), Documents = database.GetVerifiedLicenceWorkflowDocuments(licenceID), entityID = _entityID, itemID = licenceID, DocumentStoreLocationID = _documentStoreLocationID }; model.BrowserTitle = (model.OperatingLicence.LicenceID == -1) ? "New licence" : model.OperatingLicence.OperatingLicenceNumber; ViewBag.Controller = "Documents"; ViewBag.Page = "Documents"; return View("Documents", model); } #endregion #region Routes public ActionResult Routes(long LicenceID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.OperatingLicencesModule_ViewOperatingLicenceConsole)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new RoutesModel { OperatingLicence = database.GetVerifiedLicence(LicenceID), Routes = database.GetVerifiedLicenceRoutes(LicenceID), entityID = _entityID, itemID = LicenceID, DocumentStoreLocationID = _documentStoreLocationID }; model.BrowserTitle = (model.OperatingLicence.LicenceID == -1) ? "New licence" : model.OperatingLicence.OperatingLicenceNumber; ViewBag.Controller = "Routes"; ViewBag.Page = "Routes"; return View("Routes", model); } #endregion #endregion #region JSON endpoints #region SaveVehicleDetails [HttpPost] public JsonResult SaveVehicleDetails(Licence licence) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.OperatingLicencesModule_LicenceConsole_UpdateVerifiedVehicleDetalis)) { throw new Exception("Security error"); } var errorMessage = ""; var success = false; var database = new LegitimateDatabase(); try { if (SecurityHelper.UserHasRole(Profile.Roles, Role.DataPurification)) { database.VerifiedVehicleUpdate(licence.Vehicle, true, "Update from operating licence console", Profile.UserID); database.VerifiedLicenceExceptionsUpdate(licence.LicenceID); success = true; } else { errorMessage = "Security error"; } } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var results = new { Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region FlagvehicleVinAsCorrect [HttpPost] public JsonResult FlagvehicleVinAsCorrect(Licence licence) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.OperatingLicencesModule_LicenceConsole_FlagVINasCorrect)) { throw new Exception("Security error"); } var errorMessage = ""; var success = false; var database = new LegitimateDatabase(); try { if (SecurityHelper.UserHasRole(Profile.Roles, Role.DataPurification)) { database.FlagVehicleVinAsCorrect(licence.Vehicle.VehicleID, Profile.UserID); database.VerifiedLicenceExceptionsUpdate(licence.LicenceID); success = true; } else { errorMessage = "Security error"; } } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var results = new { Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region DelinkVehicle [HttpPost] public JsonResult DelinkVehicle(long licenceId, string reason) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.OperatingLicencesModule_DelinkVehicle)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; var success = false; try { if (SecurityHelper.UserHasRole(Profile.Roles, Role.DataPurification)) { database.DelinkVehicle(licenceId, reason, 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 } }