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; using Neo.Afx.Common; namespace Neo.LegitimateLicences.ApplicationRequestTypeSetupConsole.Controllers { public partial class ApplicationRequestTypeSetupConsoleController : Neo.LegitimateLicences.Common.ControllerBase { #region Action Results #region Console public ActionResult Console(long applicationRequestTypeDivisionSetupID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.AdminModule)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new ConsoleModel() { ApplicationRequestTypeDivisionSetupID = applicationRequestTypeDivisionSetupID }; ViewBag.Controller = "Association Details"; ViewBag.Page = "Association Details"; return View("Console", model); } #endregion #region Default public ActionResult Default(long applicationRequestTypeDivisionSetupID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.AdminModule)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new DefaultModel { ApplicationRequestTypeDivisionSetup = database.GetApplicationRequestTypeDivisionSetup(applicationRequestTypeDivisionSetupID), Lookups = GetLookups() }; ViewBag.Controller = "Document Details"; ViewBag.Page = "Document Details"; return View("Default", model); } #endregion #region DocumentSetup public ActionResult DocumentSetup(long applicationRequestTypeDivisionSetupID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.AdminModule)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var applicationRequestTypeDivisionSetup = database.GetApplicationRequestTypeDivisionSetup(applicationRequestTypeDivisionSetupID); List applicationRequestDocumentMappings = new List(); List licenceIssueRequestDocumentMappings = new List(); if (applicationRequestTypeDivisionSetup != null) { applicationRequestDocumentMappings = database.GetApplicationRequestTypeDocumentSetup(applicationRequestTypeDivisionSetup.DivisionTypeID, applicationRequestTypeDivisionSetup.ProvinceID, applicationRequestTypeDivisionSetup.ApplicationRequestTypeID, (short)WorkflowTemplatesEnum.ApplicationRequestV1); if(applicationRequestDocumentMappings == null) { applicationRequestDocumentMappings = new List(); } } if (applicationRequestTypeDivisionSetup != null) { licenceIssueRequestDocumentMappings = database.GetApplicationRequestTypeDocumentSetup(applicationRequestTypeDivisionSetup.DivisionTypeID, applicationRequestTypeDivisionSetup.ProvinceID, applicationRequestTypeDivisionSetup.ApplicationRequestTypeID, (short)WorkflowTemplatesEnum.LicenceIssueRequestV1); if (licenceIssueRequestDocumentMappings == null) { licenceIssueRequestDocumentMappings = new List(); } } var model = new DocumentSetupModel { ApplicationRequestTypeDivisionSetup = database.GetApplicationRequestTypeDivisionSetup(applicationRequestTypeDivisionSetupID), ApplicationRequestDocumentMappings = applicationRequestDocumentMappings, LicenceIssueRequestDocumentMappings = licenceIssueRequestDocumentMappings, Lookups = GetLookups() }; ViewBag.Controller = "Document Details"; ViewBag.Page = "Document Setup"; return View("DocumentSetup", model); } #endregion #endregion #region JSON endpoints #region ApplicationRequestTypeSetupSave [HttpPost] public JsonResult ApplicationRequestTypeSetupSave(ApplicationRequestTypeDivisionSetup value) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.SecurableEnum.AdminModule_ManageUsers)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; ApplicationRequestTypeDivisionSetup applicationRequestTypeDivisionSetup = new ApplicationRequestTypeDivisionSetup(); try { database.CreateApplicationRequestTypeDivisionSetup(value, Profile.UserID); } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { Response = applicationRequestTypeDivisionSetup, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region ApplicationRequestTypeSetupUpdate [HttpPost] public JsonResult ApplicationRequestTypeSetupUpdate(ApplicationRequestTypeDivisionSetup value) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.SecurableEnum.AdminModule_ManageUsers)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; ApplicationRequestTypeDivisionSetup applicationRequestTypeDivisionSetup = new ApplicationRequestTypeDivisionSetup(); try { database.UpdateApplicationRequestTypeDivisionSetup(value, Profile.UserID); } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { Response = applicationRequestTypeDivisionSetup, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region DocumentSetupSave [HttpPost] public JsonResult DocumentSetupSave(ApplicationRequestTypeDivisionSetup applicationRequestTypeDivisionSetup, List applicationRequestDocumentMappings, List licenceIssueRequestDocumentMappings, List removedApplicationRequestDocumentMappings, List removedLicenceIssueRequestDocumentMappings) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.SecurableEnum.AdminModule_ManageUsers)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; DocumentTypes returnValue = new DocumentTypes(); try { #region Add Application Request Document Mappings if(applicationRequestDocumentMappings != null) { foreach (var document in applicationRequestDocumentMappings) { database.UpsertApplicationRequestTypeDocument(document.ApplicationRequestTypeDocumentID, applicationRequestTypeDivisionSetup.DivisionTypeID, applicationRequestTypeDivisionSetup.ProvinceID, applicationRequestTypeDivisionSetup.ApplicationRequestTypeID, document.DocumentTypeID, (long)WorkflowTemplatesEnum.ApplicationRequestV1, document.IsAvailableForUpload, document.IsMandatory, Profile.UserID); } } #endregion #region Add Application Request Document Mappings if (licenceIssueRequestDocumentMappings != null) { foreach (var document in licenceIssueRequestDocumentMappings) { database.UpsertApplicationRequestTypeDocument(document.ApplicationRequestTypeDocumentID, applicationRequestTypeDivisionSetup.DivisionTypeID, applicationRequestTypeDivisionSetup.ProvinceID, applicationRequestTypeDivisionSetup.ApplicationRequestTypeID, document.DocumentTypeID, (long)WorkflowTemplatesEnum.LicenceIssueRequestV1, document.IsAvailableForUpload, document.IsMandatory, Profile.UserID); } } #endregion #region Remove Application Request Document Mappings if(removedApplicationRequestDocumentMappings != null) { foreach (var document in removedApplicationRequestDocumentMappings) { database.CancelApplicationRequestTypeDocument(document.ApplicationRequestTypeDocumentID, Profile.UserID); } } #endregion #region Remove Licence Issue Request Document Mappings if(removedLicenceIssueRequestDocumentMappings != null) { foreach (var document in removedLicenceIssueRequestDocumentMappings) { database.CancelApplicationRequestTypeDocument(document.ApplicationRequestTypeDocumentID, Profile.UserID); } } #endregion } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { Response = returnValue, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region SaveApplicationRequestDocumentMapping [HttpPost] public JsonResult SaveApplicationRequestDocumentMapping(ApplicationRequestTypeDivisionSetup applicationRequestTypeDivisionSetup, ApplicationRequestTypeDocumentSetup applicationRequestDocumentMapping) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.SecurableEnum.AdminModule_ManageUsers)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; DocumentTypes returnValue = new DocumentTypes(); List applicationRequestDocumentMappings = new List(); try { #region Add Application Request Document Mappings database.UpsertApplicationRequestTypeDocument(applicationRequestDocumentMapping.ApplicationRequestTypeDocumentID, applicationRequestTypeDivisionSetup.DivisionTypeID, applicationRequestTypeDivisionSetup.ProvinceID, applicationRequestTypeDivisionSetup.ApplicationRequestTypeID, applicationRequestDocumentMapping.DocumentTypeID, (long)WorkflowTemplatesEnum.ApplicationRequestV1, applicationRequestDocumentMapping.IsAvailableForUpload, applicationRequestDocumentMapping.IsMandatory, Profile.UserID); applicationRequestDocumentMappings = database.GetApplicationRequestTypeDocumentSetup(applicationRequestTypeDivisionSetup.DivisionTypeID, applicationRequestTypeDivisionSetup.ProvinceID, applicationRequestTypeDivisionSetup.ApplicationRequestTypeID, (short)WorkflowTemplatesEnum.ApplicationRequestV1); if (applicationRequestDocumentMappings == null) { applicationRequestDocumentMappings = new List(); } #endregion } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { Response = returnValue, ApplicationRequestTypeDocumentSetup = applicationRequestDocumentMappings, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region SaveLicenseIssuingDocumentMapping [HttpPost] public JsonResult SaveLicenseIssuingDocumentMapping(ApplicationRequestTypeDivisionSetup applicationRequestTypeDivisionSetup, ApplicationRequestTypeDocumentSetup licenseIssuingRequestDocumentMapping) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.SecurableEnum.AdminModule_ManageUsers)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; DocumentTypes returnValue = new DocumentTypes(); List licenceIssueRequestDocumentMappings = new List(); try { #region Save License Issuing Document Mapping database.UpsertApplicationRequestTypeDocument(licenseIssuingRequestDocumentMapping.ApplicationRequestTypeDocumentID, applicationRequestTypeDivisionSetup.DivisionTypeID, applicationRequestTypeDivisionSetup.ProvinceID, applicationRequestTypeDivisionSetup.ApplicationRequestTypeID, licenseIssuingRequestDocumentMapping.DocumentTypeID, (long)WorkflowTemplatesEnum.LicenceIssueRequestV1, licenseIssuingRequestDocumentMapping.IsAvailableForUpload, licenseIssuingRequestDocumentMapping.IsMandatory, Profile.UserID); licenceIssueRequestDocumentMappings = database.GetApplicationRequestTypeDocumentSetup(applicationRequestTypeDivisionSetup.DivisionTypeID, applicationRequestTypeDivisionSetup.ProvinceID, applicationRequestTypeDivisionSetup.ApplicationRequestTypeID, (short)WorkflowTemplatesEnum.LicenceIssueRequestV1); if (licenceIssueRequestDocumentMappings == null) { licenceIssueRequestDocumentMappings = new List(); } #endregion } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { Response = returnValue, ApplicationRequestTypeDocumentSetup = licenceIssueRequestDocumentMappings, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region CancelApplicationRequestDocumentMapping [HttpPost] public JsonResult CancelApplicationRequestDocumentMapping(ApplicationRequestTypeDivisionSetup applicationRequestTypeDivisionSetup, ApplicationRequestTypeDocumentSetup applicationRequestDocumentMapping) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.SecurableEnum.AdminModule_ManageUsers)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; DocumentTypes returnValue = new DocumentTypes(); try { #region Cancel Application Request Document Mappings database.CancelApplicationRequestTypeDocument(applicationRequestDocumentMapping.ApplicationRequestTypeDocumentID, Profile.UserID); #endregion } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { Response = returnValue, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region CancelLicenseIssuingDocumentMapping [HttpPost] public JsonResult CancelLicenseIssuingDocumentMapping(ApplicationRequestTypeDivisionSetup applicationRequestTypeDivisionSetup, ApplicationRequestTypeDocumentSetup licenseIssuingRequestDocumentMapping) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.SecurableEnum.AdminModule_ManageUsers)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; DocumentTypes returnValue = new DocumentTypes(); try { #region Cancel Licence Issuing Document Mappings database.CancelApplicationRequestTypeDocument(licenseIssuingRequestDocumentMapping.ApplicationRequestTypeDocumentID, Profile.UserID); #endregion } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { Response = returnValue, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region GetSetupAvailableOptions public ActionResult GetSetupAvailableOptions(short entityID) { var database = new LegitimateDatabase(); var data = new List(); var model = new DocumentSetupModel { AvailableSetupOptions = database.GetSetupAvailableOptions(entityID, Profile.UserID) }; return View("DocumentSetup.AvailableOptions", model); } #endregion #endregion #region GetLookups public List GetLookups() { var lookups = new List(); var integrationStore = new SqlIntegrationStore(); try { integrationStore.Open(); lookups.Add(new LookupList("ApplicationRequestTypes", integrationStore.GetDataEntities("ApplicationRequestTypes", string.Empty).OrderBy(a => a.Title))); lookups.Add(new LookupList("DivisionTypes", integrationStore.GetDataEntities("DivisionTypes", string.Empty).OrderBy(a => a.Title))); lookups.Add(new LookupList("Provinces", integrationStore.GetDataEntities("Provinces", string.Empty).OrderBy(a => a.Title))); lookups.Add(new LookupList("DocumentTypes", integrationStore.GetDataEntities("DocumentTypes", string.Empty).OrderBy(a => a.Title))); } finally { integrationStore.Close(); } return lookups; } #endregion } }