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.DocumentTypeConsole.Controllers { public partial class DocumentTypeConsoleController : Neo.LegitimateLicences.Common.ControllerBase { #region Action Results #region Console public ActionResult Console(long documentTypeID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.AdminModule)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new ConsoleModel() { DocumentTypeID = documentTypeID }; ViewBag.Controller = "Association Details"; ViewBag.Page = "Association Details"; return View("Console", model); } #endregion #region Default public ActionResult Default(long documentTypeID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.AdminModule)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new DefaultModel { DocumentType = database.GetDocumentType(documentTypeID) }; ViewBag.Controller = "Document Details"; ViewBag.Page = "Document Details"; return View("Default", model); } #endregion #region DocumentQuestions public ActionResult DocumentQuestions(long documentTypeID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.AdminModule)) { return RedirectToAction("ShowError", "Error", new { msg = "Security error" }); } var database = new LegitimateDatabase(); var model = new DocumentQuestionsModel { DocumentType = database.GetDocumentType(documentTypeID) }; ViewBag.Controller = "Document Questions"; ViewBag.Page = "Document Questions"; return View("DocumentQuestions", model); } #endregion #endregion #region JSON endpoints #region DocumentTypeSave [HttpPost] public JsonResult DocumentTypeSave(DocumentTypes value) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.SecurableEnum.AdminModule_ManageUsers)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; long documentTypeID = 0; try { documentTypeID = database.UpsertDocumentType(value, Profile.UserID); } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { Response = documentTypeID, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region DocumentTypeCancel [HttpPost] public JsonResult DocumentTypeCancel(DocumentTypes value) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.SecurableEnum.AdminModule)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; try { database.CancelDocumentType(value.DocumentTypeID, Profile.UserID); } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region DocumentTypeQuestionsSave [HttpPost] public JsonResult DocumentTypeQuestionsSave(DocumentTypes documentType, List removedQuestions) { 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 Save Questions foreach(var question in documentType.DocumentTypeQuestions) { question.DocumentTypeID = documentType.DocumentTypeID; database.UpsertDocumentTypeQuestion(question, Profile.UserID); } #endregion #region Remove Questions if (removedQuestions != null) { string removedDocumentTypeQuestionIDs = ""; foreach (var question in removedQuestions) { removedDocumentTypeQuestionIDs = question.DocumentTypeQuestionID.ToString() + ","; } if (!String.IsNullOrEmpty(removedDocumentTypeQuestionIDs)) { database.CancelDocumentTypeQuestions(removedDocumentTypeQuestionIDs, documentType.DocumentTypeID, Profile.UserID); } } #endregion returnValue = database.GetDocumentType(documentType.DocumentTypeID); } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { Response = returnValue, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region DocumentTypeQuestionSave [HttpPost] public JsonResult DocumentTypeQuestionSave(short documentTypeID, DocumentTypeQuestion documentQuestion) { 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 Save Questions documentQuestion.DocumentTypeID = documentTypeID; database.UpsertDocumentTypeQuestion(documentQuestion, Profile.UserID); #endregion returnValue = database.GetDocumentType(documentTypeID); } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { Response = returnValue, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region DocumentTypeQuestionCancel [HttpPost] public JsonResult DocumentTypeQuestionCancel(short documentTypeID, DocumentTypeQuestion documentQuestion) { 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 Save Questions documentQuestion.DocumentTypeID = documentTypeID; database.CancelDocumentTypeQuestions(documentQuestion.DocumentTypeQuestionID.ToString(), documentTypeID, Profile.UserID); #endregion returnValue = database.GetDocumentType(documentTypeID); } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); } var results = new { Response = returnValue, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #endregion } }