using System.Web.Mvc; using Neo.Legitimate.GazetteConsole.Models; using Neo.Legitimate.Data.Models; using Pilotfish.Afx.Mvc; using System; using Neo.Legitimate.Common; using System.Linq; namespace Neo.Legitimate.GazetteConsole.Controllers { [Authorize] public class GazetteConsoleController : Neo.Legitimate.Common.ControllerBase { private const long _entityID = 1006; private const long _documentStoreLocationID = 3; #region Action Results #region Default public ActionResult Default(long gazetteDetailID) { var database = new LegitimateDatabase(); var model = new DefaultModel { GazetteDetail = database.GetGazetteDetail(gazetteDetailID, Profile.UserID), HasApplications = database.GetGazetteApplications(gazetteDetailID).Count > 0, Provinces = database.GetProvinces(), Regions = database.GetRegions(), GazettePeriodDays = Convert.ToInt32(database.GetSettingValue("GazettePeriodDays")), entityID = _entityID, itemID = gazetteDetailID, DocumentStoreLocationID = _documentStoreLocationID, RegionID = -1 }; model.BrowserTitle = (model.GazetteDetail.GazetteDetailID == -1) ? "New Gazette" : model.GazetteDetail.GazetteNumber; ViewBag.Controller = "Gazette Details"; ViewBag.Page = "Gazette Details"; return View("Default", model); } #endregion #region Applications public ActionResult Applications(long gazetteDetailID) { var database = new LegitimateDatabase(); var applications = database.GetGazetteApplications(gazetteDetailID); var model = new ApplicationsModel { GazetteDetail = database.GetGazetteDetail(gazetteDetailID, Profile.UserID), Applications = applications, HasApplications = applications.Count > 0, entityID = _entityID, itemID = gazetteDetailID, DocumentStoreLocationID = _documentStoreLocationID, CanBypassGazetteExpiry = SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.ApplicationsModule_Gazettes_Console_Bypassgazetteexpiry) }; model.BrowserTitle = (model.GazetteDetail.GazetteDetailID == -1) ? "New Gazette" : model.GazetteDetail.GazetteNumber; ViewBag.Controller = "Applications"; ViewBag.Page = "Applications"; return View("Applications", model); } #endregion #endregion #region JSON endpoints [HttpPost] public JsonResult Save(GazetteDetail value) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.ApplicationsModule_Createnewgazette)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; var currentGazette = database.SaveGazetteDetail(value, Profile.UserID, out errorMessage); var results = new { GazetteDetail = currentGazette, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } [HttpPost] public JsonResult FinaliseAndPrintGazette(long gazetteDetailID, string comments) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.ApplicationsModule_Gazettes_Console_FinaliseAndPublishGazette)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; var success = database.GazetteStatusUpdate(gazetteDetailID, Profile.UserID, comments, GazetteDetailStatus.AwaitingGazettePrintDate, out errorMessage); var results = new { Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } [HttpPost] public JsonResult SetGazetteAsPublished(long gazetteDetailID, string comments) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.ApplicationsModule_Gazettes_Console_FinaliseAndPublishGazette)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; var success = database.GazetteStatusUpdate(gazetteDetailID, Profile.UserID, comments, GazetteDetailStatus.AwaitingNoticePeriodExpiry, out errorMessage); var results = new { Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } [HttpPost] public JsonResult BypassGazetteExpiry(long applicationRequestDetailID, string comments) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.ApplicationsModule_Gazettes_Console_Bypassgazetteexpiry)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; var success = database.BypassGazetteExpiry(applicationRequestDetailID, comments, Profile.UserID, out errorMessage); var results = new { Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion } }