using Neo.Afx.Mvc; using Neo.Afx.Services.Workflows; 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.Applications { public partial class ApplicationsController { #region Action Results #region AwaitingInspections public ActionResult AwaitingInspections() { var database = new LegitimateDatabase(); var model = new InspectionModel(); //if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Adjudication)) //{ // return RedirectToAction("Default", "Applications"); //} model.ScheduledInspections = database.GetInspectorInspections(Profile.UserID); model.UnScheduledApplications = database.GetApplicationsAwaitingInspections(Profile.UserID); // Debug: Log the unscheduled applications System.Diagnostics.Debug.WriteLine($"UnScheduledApplications count: {model.UnScheduledApplications?.Count ?? 0}"); if (model.UnScheduledApplications != null && model.UnScheduledApplications.Any()) { foreach (var app in model.UnScheduledApplications) { System.Diagnostics.Debug.WriteLine($"ApplicationDetailID: {app.ApplicationDetailID}, ReferenceNumber: {app.ReferenceNumber}"); } } // Use the basic inspection data directly for the DataGrid if (model.UnScheduledApplications != null && model.UnScheduledApplications.Any()) { // Use the UnScheduledApplications directly since they have the properties we need model.AllApplications = model.UnScheduledApplications.ToList(); } else { model.AllApplications = new List(); } model.Inspectors = database.GetInspectors(Profile.UserID); WebHelper.SetLastPageVisited(HttpContext, "Applications/AwaitingInspections"); ViewBag.Controller = "AwaitingInspections"; ViewBag.Page = "AwaitingInspections"; return View("AwaitingInspections", model); } #endregion #region AwaitingInspectionOutcomes public ActionResult AwaitingInspectionOutcomes() { var database = new LegitimateDatabase(); var model = new InspectionOutcomesModel(); //if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Adjudication)) //{ // return RedirectToAction("Default", "Applications"); //} model.AwaitingInspectionOutcomes = database.GetApplicationsAwaitingInspectionOutcomes(Profile.UserID); WebHelper.SetLastPageVisited(HttpContext, "Applications/AwaitingInspectionOutcomes"); ViewBag.Controller = "AwaitingInspectionsOutcomes"; ViewBag.Page = "AwaitingInspectionsOutcomes"; return View("AwaitingInspectionsOutcomes", model); } #endregion #endregion #region JSON endpoints #region UpdateApplicationInspectionDetail [HttpPost] public JsonResult UpdateApplicationInspectionDetail(long? applicationDetailID, short? inspectionStatusID, long? inspectorID, DateTime? inspectionDateFrom, DateTime? inspectionDateTo) { var database = new LegitimateDatabase(); var errorMessage = ""; bool success; try { // Pass through inspectionStatusID: 2 for new schedules, null for reschedules database.UpdateApplicationInspectionDetails(applicationDetailID, inspectionStatusID, inspectorID, inspectionDateFrom, inspectionDateTo, Profile.UserID); success = true; } catch { success = false; } var results = new { Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region ResolveApplicationDetailId [HttpPost] public JsonResult ResolveApplicationDetailId(string referenceNumber) { long? applicationDetailID = null; var errorMessage = ""; try { var database = new LegitimateDatabase(); var details = database.GetApplicationDetail_ViewOnly(referenceNumber); if (details != null) { applicationDetailID = details.ApplicationDetailID; } } catch (Exception ex) { errorMessage = ex.Message; } var result = new { Success = applicationDetailID.HasValue, ApplicationDetailID = applicationDetailID, ErrorMessage = errorMessage }; return Json(result, JsonSerializerOptions.None); } #endregion #endregion } }