diff --git a/Marco.Pms.Services/Controllers/DashboardController.cs b/Marco.Pms.Services/Controllers/DashboardController.cs
index b720eca..0afd219 100644
--- a/Marco.Pms.Services/Controllers/DashboardController.cs
+++ b/Marco.Pms.Services/Controllers/DashboardController.cs
@@ -1,8 +1,7 @@
using Marco.Pms.DataAccess.Data;
-using Marco.Pms.Model.Activities;
using Marco.Pms.Model.Dtos.Attendance;
-using Marco.Pms.Model.Employees;
-using Marco.Pms.Model.Projects;
+using Marco.Pms.Model.Entitlements;
+using Marco.Pms.Model.Expenses;
using Marco.Pms.Model.Utilities;
using Marco.Pms.Model.ViewModels.DashBoard;
using Marco.Pms.Services.Service;
@@ -12,6 +11,7 @@ using MarcoBMS.Services.Service;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
+using System.Globalization;
namespace Marco.Pms.Services.Controllers
{
@@ -25,145 +25,185 @@ namespace Marco.Pms.Services.Controllers
private readonly IProjectServices _projectServices;
private readonly ILoggingService _logger;
private readonly PermissionServices _permissionServices;
+ private readonly IServiceScopeFactory _serviceScopeFactory;
public static readonly Guid ActiveId = Guid.Parse("b74da4c2-d07e-46f2-9919-e75e49b12731");
- public DashboardController(ApplicationDbContext context, UserHelper userHelper, IProjectServices projectServices, ILoggingService logger, PermissionServices permissionServices)
+ private static readonly Guid Draft = Guid.Parse("297e0d8f-f668-41b5-bfea-e03b354251c8");
+ private static readonly Guid Review = Guid.Parse("6537018f-f4e9-4cb3-a210-6c3b2da999d7");
+ private static readonly Guid Approve = Guid.Parse("4068007f-c92f-4f37-a907-bc15fe57d4d8");
+ private static readonly Guid ProcessPending = Guid.Parse("f18c5cfd-7815-4341-8da2-2c2d65778e27");
+ private static readonly Guid Processed = Guid.Parse("61578360-3a49-4c34-8604-7b35a3787b95");
+ private static readonly Guid RejectedByReviewer = Guid.Parse("965eda62-7907-4963-b4a1-657fb0b2724b");
+ private static readonly Guid RejectedByApprover = Guid.Parse("d1ee5eec-24b6-4364-8673-a8f859c60729");
+ private readonly Guid tenantId;
+ public DashboardController(ApplicationDbContext context,
+ UserHelper userHelper,
+ IProjectServices projectServices,
+ IServiceScopeFactory serviceScopeFactory,
+ ILoggingService logger,
+ PermissionServices permissionServices)
{
_context = context;
_userHelper = userHelper;
_projectServices = projectServices;
_logger = logger;
+ _serviceScopeFactory = serviceScopeFactory;
_permissionServices = permissionServices;
+ tenantId = userHelper.GetTenantId();
}
+ ///
+ /// Fetches project progression data (planned and completed tasks) in graph form for a tenant and specified (or all) projects over a date range.
+ ///
+ /// Number of days back to fetch data for
+ /// Starting date for the graph, or today if null
+ /// Optionally, the project to filter on
[HttpGet("progression")]
- public async Task GetGraph([FromQuery] double days, [FromQuery] string FromDate, [FromQuery] Guid? projectId)
+ public async Task GetGraphAsync([FromQuery] double days, [FromQuery] string FromDate, [FromQuery] Guid? projectId)
{
- var tenantId = _userHelper.GetTenantId();
- var LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
-
- DateTime fromDate = new DateTime();
- DateTime toDate = new DateTime();
- List? projectProgressionVMs = new List();
- if (FromDate != null && DateTime.TryParse(FromDate, out fromDate) == false)
+ if (tenantId == Guid.Empty)
{
+ _logger.LogWarning("Invalid request: TenantId is empty on progression endpoint");
+ return BadRequest(ApiResponse