using Neo.Afx.Services.Workflows; using Neo.LegitimateLicences.Common; using Neo.LegitimateLicences.Data.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Neo.LegitimateLicences.Common.Helpers; using Neo.Afx.Common; using Neo.Afx.Mvc; namespace Neo.LegitimateLicences.Dashboards { public class DashboardsController : Neo.LegitimateLicences.Common.ControllerBase { #region Default public ActionResult Default() { var m = new DashboardModel(); var db = new LegitimateDatabase(); var wf = new WorkflowsDatabase(); var allTasks = db.SearchAppTasks(Profile.UserID, Profile.UserID); m.EscalatedTasks = allTasks.Where( a => a.EscalatedFromID != null).ToList(); m.StandardTasks = allTasks.Where(a => a.EscalatedFromID == null).ToList(); m.TasksAwaitingCorrections = db.GetApplicationAwaitingCorrections(Profile.UserID, Profile.UserID); m.MessageQueue = db.GetSystemAdministratorDashboard(Profile.UserID); m.FailedTasks = db.GetSystemAdministratorDashboard_FailedTasks(Profile.UserID); m.UserCanHandleEscalatedTasks = SecurityHelper.UserHasRole(Profile.Roles, RoleEnum.OperatingLicenseAdministrator); if(m.StandardTasks.Any() && m.TasksAwaitingCorrections.Any()) { m.StandardTasks = m.StandardTasks.Where(t2 => !m.TasksAwaitingCorrections.Any(t1 => t2.WorkflowInstanceTaskID == t1.WorkflowInstanceTaskID)).ToList(); } if (m.EscalatedTasks.Any() && m.TasksAwaitingCorrections.Any()) { m.EscalatedTasks = m.EscalatedTasks.Where(t2 => !m.TasksAwaitingCorrections.Any(t1 => t2.WorkflowInstanceTaskID == t1.WorkflowInstanceTaskID)).ToList(); } m.SelectedDashboard = "My Dashboard"; return View("Dashboard_Default", m); } #endregion #region ApplicationsInProgress public ActionResult ApplicationsInProgress() { var m = new DashboardModel(); var db = new LegitimateDatabase(); m.ApplicationStatusSummary = db.GetApplicationSummaryDashboard(Profile.UserID); m.GazetteStatusSummary = db.GetGazetteSummaryDashboard(Profile.UserID); m.AdjudicationStatusSummary = db.GetAdjudicationSummaryDashboard(Profile.UserID); m.SelectedDashboard = "Applications in progress"; return View("Dashboard_ApplicationsInProgress", m); } #endregion #region ApplicationsAwaitingAdjudication public ActionResult ApplicationsAwaitingAdjudication() { var m = new DashboardModel(); var db = new LegitimateDatabase(); m.AdjudicationStatusSummary = db.GetAdjudicationSummaryDashboard(Profile.UserID); m.AdjudicationExceptionStatusSummary = db.GetAdjudicationSummaryExceptionsDashboard(Profile.UserID); m.SelectedDashboard = "Applications awaiting adjudication"; return View("Dashboard_ApplicationsAwaitingAdjudication", m); } #endregion #region LicencesAwaitingIssuing public ActionResult LicencesAwaitingIssuing() { var m = new DashboardModel(); var db = new LegitimateDatabase(); m.LicenceIssuingStatusSummary = db.GetLicenceIssuingSummaryDashboard(Profile.UserID); m.LicenceCancelStatusSummary = db.GetLicenceCancelSummaryDashboard(Profile.UserID); m.AccreditationIssuingStatusSummary = db.GetAccreditationIssuingSummaryDashboard(Profile.UserID); m.SelectedDashboard = "Licences awaiting issuing"; return View("Dashboard_LicencesAwaitingIssuing", m); } #endregion #region RouteRequestsInProgress public ActionResult RouteRequestsInProgress() { var m = new DashboardModel(); var db = new LegitimateDatabase(); m.NewRouteRequestSummary = db.GetNewRouteRequestDashboard(Profile.UserID); m.SelectedDashboard = "Route requests in progress"; return View("Dashboard_RouteRequestsInProgress", m); } #endregion #region ApplicationAnalytics public ActionResult ApplicationAnalytics() { var m = new DashboardModel(); var db = new LegitimateDatabase(); DateTime date = DateTime.Now; var firstDayOfMonth = new DateTime(date.Year, date.Month, 1); var lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddDays(-1); m.NewRouteRequestSummary = db.GetNewRouteRequestDashboard(Profile.UserID); m.ApplicationAnalytics_ApplicationRequestTypeSummmary = db.GetApplicationAnalytics_ApplicationRequestTypeSummmary(firstDayOfMonth, lastDayOfMonth, Profile.UserID); m.ApplicationAnalytics_ApplicationCreatedBySummmary = db.GetApplicationAnalytics_ApplicationCreatedBySummmary(firstDayOfMonth, lastDayOfMonth, Profile.UserID); m.ApplicationAnalytics_ApplicationPerRegion = db.GetApplicationAnalytics_ApplicationPerRegion(firstDayOfMonth, lastDayOfMonth, Profile.UserID); m.SelectedDashboard = "Application Analytics"; m.ApplicationAnalytics_FromDate = firstDayOfMonth.Year.ToString() + "-" + firstDayOfMonth.Month.ToString().PadLeft(2,'0') + "-" + firstDayOfMonth.Day.ToString().PadLeft(2, '0'); m.ApplicationAnalytics_ToDate = lastDayOfMonth.Year.ToString() + "-" + lastDayOfMonth.Month.ToString().PadLeft(2, '0') + "-" + lastDayOfMonth.Day.ToString().PadLeft(2, '0'); return View("Dashboard_ApplicationAnalytics", m); } #endregion #region GetApplicationAnalytics [HttpPost] public JsonResult GetApplicationAnalytics(DateTime fromDate, DateTime toDate) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Common.SecurableEnum.DashboardsModule_ApplicationAnalytics)) { throw new Exception("Security error"); } var db = new LegitimateDatabase(); var errorMessage = ""; bool success = true; List applicationAnalytics_ApplicationRequestTypeSummmary = new List(); List applicationAnalytics_ApplicationCreatedBySummmary = new List(); List applicationAnalytics_ApplicationPerRegion = new List(); try { applicationAnalytics_ApplicationRequestTypeSummmary = db.GetApplicationAnalytics_ApplicationRequestTypeSummmary(fromDate, toDate, Profile.UserID); applicationAnalytics_ApplicationCreatedBySummmary = db.GetApplicationAnalytics_ApplicationCreatedBySummmary(fromDate, toDate, Profile.UserID); applicationAnalytics_ApplicationPerRegion = db.GetApplicationAnalytics_ApplicationPerRegion(fromDate, toDate, Profile.UserID); } catch (Exception ex) { errorMessage = ExceptionHelper.GetInnermostMessage(ex); success = false; } var results = new { ErrorMessage = errorMessage, Success = success, ApplicationAnalytics_ApplicationRequestTypeSummmary = applicationAnalytics_ApplicationRequestTypeSummmary, ApplicationAnalytics_ApplicationCreatedBySummmary = applicationAnalytics_ApplicationCreatedBySummmary, ApplicationAnalytics_ApplicationPerRegion = applicationAnalytics_ApplicationPerRegion }; return Json(results, JsonSerializerOptions.None); } #endregion } }