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.OperatingLicenceConsole { public partial class OperatingLicenceConsoleController : Neo.LegitimateLicences.Common.ControllerBase { private const long _entityID = 1011; private const long _documentStoreLocationID = 3; #region Action Results #region Console public ActionResult Console(long licenceID) { ////if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.AssociationsModule_ViewAssociationConsole)) ////{ //// return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); ////} var database = new LegitimateDatabase(); var ol = database.GetVerifiedLicence(licenceID); var model = new ConsoleModel() { LicenceID = licenceID, MemberID = ol.MemberID }; //model.BrowserTitle = model.Association.AssociationName; ViewBag.Controller = "Operating Licence Details"; ViewBag.Page = "Operating Licence Details"; return View("Console", model); } #endregion #region Default public ActionResult Default(long licenceID) { ////if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.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, Profile.UserID), //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 Member public ActionResult Member(long memberID) { ////if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.MembersModule_ViewMemberConsole)) ////{ //// return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); ////} var database = new LegitimateDatabase(); var model = new MemberModel { Member = database.GetVerifiedMember(memberID, Profile.UserID), entityID = 1009, itemID = memberID, DocumentStoreLocationID = _documentStoreLocationID }; //model.BrowserTitle = (model.Member.MemberID == -1) ? "New member" : model.Member.FullName; ViewBag.Controller = "Member Details"; ViewBag.Page = "Member Details"; return View("Member", model); } #endregion #region Vehicle public ActionResult Vehicle(long licenceID) { ////if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.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"); if(licence.Vehicle == null) { licence.Vehicle = new Vehicle(); } var model = new VehicleModel { OperatingLicence = licence, entityID = _entityID, itemID = licenceID, DocumentStoreLocationID = _documentStoreLocationID, //VehicleDocuments = vehicleDocuments, Lookups= GetLookups(), ShowFlagVinAsCorrectButton = showFlagVinAsCorrectButton, IsVehicleDelinked = IsVehicleDelinked }; ViewBag.Controller = "Vehicle"; ViewBag.Page = "Vehicle"; return View("Vehicle", 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(), SecurableEnum.OperatingLicencesModule_LicenceConsole_UpdateVerifiedVehicleDetalis)) { throw new Exception("Security error"); } var errorMessage = ""; var success = false; var database = new LegitimateDatabase(); try { if (SecurityHelper.UserHasRole(Profile.Roles, RoleEnum.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(), SecurableEnum.OperatingLicencesModule_LicenceConsole_FlagVINasCorrect)) { throw new Exception("Security error"); } var errorMessage = ""; var success = false; var database = new LegitimateDatabase(); try { if (SecurityHelper.UserHasRole(Profile.Roles, RoleEnum.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(), SecurableEnum.OperatingLicencesModule_DelinkVehicle)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; var success = false; try { if (SecurityHelper.UserHasRole(Profile.Roles, RoleEnum.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 #region GetLookups public List GetLookups() { var lookups = new List(); var integrationStore = new SqlIntegrationStore(); try { integrationStore.Open(); lookups.Add(new LookupList("VehicleTypes", integrationStore.GetDataEntities("VehicleTypes", string.Empty).OrderBy(a => a.Title))); lookups.Add(new LookupList("CarryingCapacities", integrationStore.GetDataEntities("CarryingCapacities", string.Empty).OrderBy(a => a.Title))); lookups.Add(new LookupList("VehicleMakes", integrationStore.GetDataEntities("VehicleMakes", string.Empty).OrderBy(a => a.Title))); } finally { integrationStore.Close(); } return lookups; } #endregion } }