using Neo.Afx.Services.Workflows; using Neo.LegitimateLicences.Common; using Neo.LegitimateLicences.Data.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Neo.Afx.ViewModels; using Neo.Afx.Services.Integration; using Neo.LegitimateLicences.Common.Helpers; using Neo.Afx.Mvc; using System.Dynamic; namespace Neo.LegitimateLicences.Purification.Controllers { public partial class PurificationController : Neo.LegitimateLicences.Common.ControllerBase { #region Action Results #region CorrectRouteDetails public ActionResult CorrectRouteDetails() { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.SecurableEnum.AdminModule)) { return RedirectToAction("Default", "Dashboard"); } var database = new LegitimateDatabase(); var model = new PurificationCorrectRoutesModel { ApplicationRoutes = new List(), LicenceRoutes = new List() }; WebHelper.SetLastPageVisited(HttpContext, "Purification/CorrectRouteDetails"); ViewBag.Controller = "Purification"; ViewBag.Page = "CorrectRouteDetails"; return View("CorrectRouteDetails", model); } #endregion #endregion #region JSON endpoints #region CorrectRoutes_SearchbyReferenceNumber [HttpPost] public JsonResult CorrectRoutes_SearchbyReferenceNumber(string updateType, string referenceNumber) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Purification_CorrectRoute)) { throw new Exception("Security error"); } var errorMessage = ""; var success = false; var searchResults = new PurificationCorrectRoutesSearchResult(); var applicationLicenseRequests = new List(); var verifiedLicenceServiceTypes = new List(); var database = new LegitimateDatabase(); var wf = new WorkflowsDatabase(); try { if (SecurityHelper.UserHasRole(Profile.Roles, RoleEnum.ApplicationAdministrator)) { switch (updateType) { case "A running application": searchResults.Routes = database.Purification_GetApplicationRoutes(referenceNumber, Profile.UserID); applicationLicenseRequests = database.Purification_SearchApplicationLicense(referenceNumber, Profile.UserID); break; case "A running licence": searchResults.Routes = database.Purification_GetLicenceRoutes(referenceNumber, Profile.UserID); break; default: break; } success = true; } else { errorMessage = "Security error"; } } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } dynamic response = new ExpandoObject(); long? itemID = -1L; itemID = database.Purification_GetItemIDFromReferenceNumber(referenceNumber); response.ItemID = itemID; response.SearchResults = searchResults.Routes; response.ApplicationLicenseRequests = applicationLicenseRequests; if(updateType == "A running licence" && response.ItemID != null) { var licenceIssue = database.GetLicenceIssueDetail_ViewOnly(response.ItemID); verifiedLicenceServiceTypes = database.Purification_VerifiedLicenceServiceTypesGet(licenceIssue.VerifiedLicenceID, Profile.UserID); } response.VerifiedLicenceServiceTypes = verifiedLicenceServiceTypes; var results = new { Result = response, Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region Purification_AddApplicationRoute [HttpPost] public JsonResult Purification_AddApplicationRoute(long applicationLicenceID, short serviceTypeID, string nationalRouteNumber, string boardRouteNumber) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Purification_CorrectRoute)) { throw new Exception("Security error"); } var errorMessage = ""; var success = false; var searchResults = new PurificationCorrectRoutesSearchResult(); var database = new LegitimateDatabase(); try { database.Purification_AddApplicationRoute(applicationLicenceID, serviceTypeID, nationalRouteNumber, boardRouteNumber, Profile.UserID); success = true; } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var results = new { ResponseObject = searchResults, Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region Purification_RemoveApplicationRoute [HttpPost] public JsonResult Purification_RemoveApplicationRoute(long applicationLicenceID, long? verifedRouteID, string nationalRouteNumber, string boardRouteNumber) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Purification_CorrectRoute)) { throw new Exception("Security error"); } var errorMessage = ""; var success = false; var searchResults = new PurificationCorrectRoutesSearchResult(); var database = new LegitimateDatabase(); try { database.Purification_RemoveApplicationRoute(applicationLicenceID, verifedRouteID, nationalRouteNumber, boardRouteNumber, Profile.UserID); success = true; } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var results = new { ResponseObject = searchResults, Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region Purification_AddLicenceRoute [HttpPost] public JsonResult Purification_AddLicenceRoute(long licenceIssueDetailID, short serviceTypeID, string nationalRouteNumber, string boardRouteNumber) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Purification_CorrectRoute)) { throw new Exception("Security error"); } var errorMessage = ""; var success = false; var searchResults = new PurificationCorrectRoutesSearchResult(); var database = new LegitimateDatabase(); try { database.Purification_AddLicenceRoute(licenceIssueDetailID, serviceTypeID, nationalRouteNumber, boardRouteNumber, Profile.UserID); success = true; } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var results = new { ResponseObject = searchResults, Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region Purification_RemoveLicenceRoute [HttpPost] public JsonResult Purification_RemoveLicenceRoute(long licenceID, long? verifedRouteID, string licenceNationalRouteNumber, string licenceBoardRouteNumber) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Purification_CorrectRoute)) { throw new Exception("Security error"); } var errorMessage = ""; var success = false; var searchResults = new PurificationCorrectRoutesSearchResult(); var database = new LegitimateDatabase(); try { database.Purification_RemoveLicenceRoute(licenceID, verifedRouteID, licenceNationalRouteNumber, licenceBoardRouteNumber, Profile.UserID); success = true; } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var results = new { ResponseObject = searchResults, Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region Purification_GetLicenceServiceTypes [HttpPost] public JsonResult Purification_GetLicenceServiceTypes(long applicationLicenceID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Purification_CorrectRoute)) { throw new Exception("Security error"); } var errorMessage = ""; var success = false; var searchResults = new List(); var database = new LegitimateDatabase(); try { searchResults = database.Purification_GetLicenceServiceTypes(applicationLicenceID, Profile.UserID); success = true; } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var results = new { Results = searchResults, Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #endregion } }