using Neo.Afx.Common; 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 AdjudicationCalendar public ActionResult AdjudicationCalendar() { var database = new LegitimateDatabase(); var model = new AdjudicationModel_AdjudicationCalendar(); if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Adjudication)) { return RedirectToAction("Default", "Applications"); } model.OfficeLocation = database.GetOfficeLocations(Profile.UserID).Where(a => a.OfficeLocationID == Profile.OfficeLocationID).FirstOrDefault(); if (SecurityHelper.UserHasRole(Profile.Roles, Neo.LegitimateLicences.Common.RoleEnum.AgendaOfficer)) { model.Adjudications = database.AdjudicationSearch(-1, DateHelper.FirstDayOfMonth, DateHelper.LastDayOfMonth, Profile); model.AdjudicationTypes = database.GetAdjudicationTypes().Where(a => a.Description != "Bypassed").ToList(); model.TotalHearingAwaitingAutoSchedule = database.GetApplicationsAwaitingAdjudicationDataSubset((short)ApplicationSubStatusEnum.AwaitingNextAvailableAdjudication_Automated, (short)AdjudicationTypeEnum.Hearing, Profile.UserID).Count; model.TotalHearingAwaitingManualSchedule = database.GetApplicationsAwaitingAdjudicationDataSubset((short)ApplicationSubStatusEnum.AwaitingNextAvailableAdjudicationManual, (short)AdjudicationTypeEnum.Hearing, Profile.UserID).Count; model.TotalMeetingAwaitingAutoSchedule = database.GetApplicationsAwaitingAdjudicationDataSubset((short)ApplicationSubStatusEnum.AwaitingNextAvailableAdjudication_Automated, (short)AdjudicationTypeEnum.Meeting, Profile.UserID).Count; model.TotalMeetingAwaitingManualSchedule = database.GetApplicationsAwaitingAdjudicationDataSubset((short)ApplicationSubStatusEnum.AwaitingNextAvailableAdjudicationManual, (short)AdjudicationTypeEnum.Meeting, Profile.UserID).Count; } WebHelper.SetLastPageVisited(HttpContext, "Applications/AdjudicationCalendar"); ViewBag.Controller = "Applications"; ViewBag.Page = "AdjudicationCalendar"; return View("Adjudication.AdjudicationCalendar", model); } #endregion #region AdjudicationQueue public ActionResult AdjudicationQueue(short adjudicationTypeID = 1, short applicationSubStatusID=7) { var database = new LegitimateDatabase(); var model = new AdjudicationModel_AdjudicationQueue(); if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Adjudication)) { return RedirectToAction("Default", "Applications"); } if (SecurityHelper.UserHasRole(Profile.Roles, Neo.LegitimateLicences.Common.RoleEnum.AgendaOfficer)) { model.CurrentAdjudicationHearing = database.GetCurrentAdjudicationDetail(-1, (short)Common.AdjudicationTypeEnum.Hearing, Profile.OfficeLocationID.Value, Profile.UserID); model.CurrentAdjudicationMeeting = database.GetCurrentAdjudicationDetail(-1, (short)Common.AdjudicationTypeEnum.Meeting, Profile.OfficeLocationID.Value, Profile.UserID); model.ApplicationsAwaitingAdjudicationHearing_Automated = database.GetApplicationsAwaitingAdjudicationDataSubset((short)ApplicationSubStatusEnum.AwaitingNextAvailableAdjudication_Automated, (short)AdjudicationTypeEnum.Hearing, Profile.UserID); model.ApplicationsAwaitingAdjudicationMeeting_Automated = database.GetApplicationsAwaitingAdjudicationDataSubset((short)ApplicationSubStatusEnum.AwaitingNextAvailableAdjudication_Automated, (short)AdjudicationTypeEnum.Meeting, Profile.UserID); model.ApplicationsAwaitingAdjudicationHearing_Manual = database.GetApplicationsAwaitingAdjudicationDataSubset((short)ApplicationSubStatusEnum.AwaitingNextAvailableAdjudicationManual, (short)AdjudicationTypeEnum.Hearing, Profile.UserID); model.ApplicationsAwaitingAdjudicationMeeting_Manual = database.GetApplicationsAwaitingAdjudicationDataSubset((short)ApplicationSubStatusEnum.AwaitingNextAvailableAdjudicationManual, (short)AdjudicationTypeEnum.Meeting, Profile.UserID); model.ApplicationsAwaitingAdjudication_HearingAutomatedTotalCount = model.ApplicationsAwaitingAdjudicationHearing_Automated.Sum(a => a.LicenceCount); model.ApplicationsAwaitingAdjudication_MeetingAutomatedTotalCount = model.ApplicationsAwaitingAdjudicationMeeting_Automated.Sum(a => a.LicenceCount); model.ApplicationsAwaitingAdjudication_HearingManualTotalCount = model.ApplicationsAwaitingAdjudicationHearing_Manual.Sum(a => a.LicenceCount); model.ApplicationsAwaitingAdjudication_MeetingManualTotalCount = model.ApplicationsAwaitingAdjudicationMeeting_Manual.Sum(a => a.LicenceCount); model.AdjudicationTypeID = adjudicationTypeID; model.ApplicationSubStatusID = applicationSubStatusID; } WebHelper.SetLastPageVisited(HttpContext, "Applications/AdjudicationQueue"); ViewBag.Controller = "Applications"; ViewBag.Page = "AdjudicationQueue"; return View("Adjudication.AdjudicationQueue", model); } #endregion #region AwaitingAdjudicationPanel public ActionResult AwaitingAdjudicationPanel() { var database = new LegitimateDatabase(); var model = new AdjudicationModel_AwaitingAdjudicationPanel(); ////if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Adjudication)) ////{ //// return RedirectToAction("Default", "Applications"); ////} ////if (SecurityHelper.UserHasRole(Profile.Roles, Neo.LegitimateLicences.Common.RoleEnum.AdjudicationSecretary)) ////{ //// model.AdjudicationsAwaitingAdjudicationPanel = database.AdjudicationSearch((short)AdjudicationDetailStatusEnum.AwaitingPanelMembers, Profile); ////} WebHelper.SetLastPageVisited(HttpContext, "Applications/AwaitingAdjudicationPanel"); ViewBag.Controller = "Applications"; ViewBag.Page = "AwaitingAdjudicationPanel"; return View("Adjudication.AwaitingAdjudicationPanel", model); } #endregion #region AwaitingAdjudicationOutcome public ActionResult AwaitingAdjudicationOutcome() { var database = new LegitimateDatabase(); var model = new AdjudicationModel_AwaitingAdjudicationOutcome(); if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Adjudication)) { return RedirectToAction("Default", "Applications"); } ////model.Regions = database.GetAdjudicationRegions(); ////#region Set region ////if (Request.QueryString["regionid"] != null) ////{ //// int regionID; //// if (int.TryParse(Request.QueryString["regionid"], out regionID)) //// { //// model.CurrentRegionID = regionID; //// } //// else //// { //// model.CurrentRegionID = model.Regions.First().RegionID; //// } ////} ////else ////{ //// model.CurrentRegionID = model.Regions.First().RegionID; ////} ////#endregion //if ( // SecurityHelper.UserHasRole(Profile.Roles, Neo.LegitimateLicences.Common.RoleEnum.AdjudicationSecretary) || // SecurityHelper.UserHasRole(Profile.Roles, Neo.LegitimateLicences.Common.RoleEnum.ChairmanOfTheAdjudicationPanel) || // SecurityHelper.UserHasRole(Profile.Roles, Neo.LegitimateLicences.Common.RoleEnum.AdjudicationPanelmember) //) //{ // model.AdjudicationsAwaitingDecisions = database.GetAdjudicationsAwaitingHearingDecision(model.CurrentRegionID, Profile); //} WebHelper.SetLastPageVisited(HttpContext, "Applications/AwaitingAdjudicationOutcome"); ViewBag.Controller = "Applications"; ViewBag.Page = "AwaitingAdjudicationOutcome"; return View("Adjudication.AwaitingAdjudicationOutcome", model); } #endregion #region AdjudicationArchive public ActionResult AdjudicationArchive() { var database = new LegitimateDatabase(); var model = new AdjudicationModel_AdjudicationArchive(); if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Adjudication)) { return RedirectToAction("Default", "Applications"); } model.AdjudicationArchive = database.GetAdjudicationArchive(Profile.OfficeLocationID.Value); WebHelper.SetLastPageVisited(HttpContext, "Applications/AdjudicationArchive"); ViewBag.Controller = "Applications"; ViewBag.Page = "AdjudicationArchive"; return View("Adjudication.Archive", model); } #endregion #region JSON endpoints #region CreateAdjudication [HttpPost] public JsonResult CreateAdjudication(short adjudicationTypeID, DateTime meetingDate, DateTime meetingDateEnd, short maxAdjudicationAutoApplicationCount) { var database = new LegitimateDatabase(); var errorMessage = ""; var success = false; var adjudicationDetail = new AdjudicationDetail(); try { adjudicationDetail = database.CreateAdjudication(adjudicationTypeID, meetingDate, meetingDateEnd, maxAdjudicationAutoApplicationCount, Profile.OfficeLocationID.Value, Profile.UserID); success = true; } catch (Exception ex) { errorMessage = ErrorHelper.GetInnerMostError(ex).Message; } var results = new { Result = adjudicationDetail, Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region UpdateAdjudicationDates [HttpPost] public JsonResult UpdateAdjudicationDates(long adjudicationDetailID, DateTime meetingDate, DateTime meetingDateEnd) { var database = new LegitimateDatabase(); var errorMessage = ""; var success = false; var adjudicationDetail = new AdjudicationDetail(); try { database.UpdateAdjudicationDates(adjudicationDetailID, meetingDate, meetingDateEnd, Profile.UserID); success = true; } catch (Exception ex) { errorMessage = ErrorHelper.GetInnerMostError(ex).Message; } var results = new { Result = adjudicationDetail, Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region AdjudicationApplications [HttpPost] public JsonResult AddToAdjudication(string applicationsToAdjudication, short regionID) { var database = new LegitimateDatabase(); var errorMessage = ""; var success = database.AddApplicationsToAdjudication(applicationsToAdjudication, Profile.OfficeLocationID.Value, Profile.UserID, out errorMessage); var results = new { Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region GetApplicationsAwaitingAdjudicationList [HttpPost] public JsonResult GetApplicationsAwaitingAdjudicationList(short regionID) { var database = new LegitimateDatabase(); var errorMessage = ""; bool success; List records; try { records = database.GetApplicationsAwaitingAdjudicationDataSubset(-1, null, Profile.UserID).Where(a => a.AdjudicationCount == 0).ToList(); success = true; } catch { records = null; success = false; } var results = new { Success = success, Records = records, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion ////#region GetPostponedApplicationsList ////[HttpPost] ////public JsonResult GetPostponedApplicationsList(long regionID) ////{ //// var database = new LegitimateDatabase(); //// var errorMessage = ""; //// bool success; //// IEnumerable records; //// try //// { //// records = database.GetApplicationsAwaitingAdjudicationDataSubset((long)Defaults.SystemUserID, "15", regionID).Where(a => a.AdjudicationCount > 0).ToList(); //// success = true; //// } //// catch //// { //// records = null; //// success = false; //// } //// var results = new //// { //// Success = success, //// Records = records, //// ErrorMessage = errorMessage //// }; //// return Json(results, JsonSerializerOptions.None); ////} ////#endregion ////#region GetAdjournedApplicationsList ////[HttpPost] ////public JsonResult GetAdjournedApplicationsList(long regionID) ////{ //// var database = new LegitimateDatabase(); //// var errorMessage = ""; //// bool success; //// IEnumerable records; //// try //// { //// records = database.GetApplicationsAwaitingAdjudicationDataSubset((long)Defaults.SystemUserID, "16", regionID); //// success = true; //// } //// catch //// { //// records = null; //// success = false; //// } //// var results = new //// { //// Success = success, //// Records = records, //// ErrorMessage = errorMessage //// }; //// return Json(results, JsonSerializerOptions.None); ////} ////#endregion #endregion } }