From 7b2a3887deb27a1cc8186a05451dd44454f5aa0e Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Thu, 17 Jul 2025 17:36:58 +0530 Subject: [PATCH] Solved the rebase issues --- .../Controllers/DashboardController.cs | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/Marco.Pms.Services/Controllers/DashboardController.cs b/Marco.Pms.Services/Controllers/DashboardController.cs index 0e01717..108a3ec 100644 --- a/Marco.Pms.Services/Controllers/DashboardController.cs +++ b/Marco.Pms.Services/Controllers/DashboardController.cs @@ -6,6 +6,7 @@ using Marco.Pms.Model.Projects; using Marco.Pms.Model.Utilities; using Marco.Pms.Model.ViewModels.DashBoard; using Marco.Pms.Services.Service; +using Marco.Pms.Services.Service.ServiceInterfaces; using MarcoBMS.Services.Helpers; using MarcoBMS.Services.Service; using Microsoft.AspNetCore.Authorization; @@ -21,15 +22,15 @@ namespace Marco.Pms.Services.Controllers { private readonly ApplicationDbContext _context; private readonly UserHelper _userHelper; - private readonly ProjectsHelper _projectsHelper; + private readonly IProjectServices _projectServices; private readonly ILoggingService _logger; private readonly PermissionServices _permissionServices; public static readonly Guid ActiveId = Guid.Parse("b74da4c2-d07e-46f2-9919-e75e49b12731"); - public DashboardController(ApplicationDbContext context, UserHelper userHelper, ProjectsHelper projectsHelper, ILoggingService logger, PermissionServices permissionServices) + public DashboardController(ApplicationDbContext context, UserHelper userHelper, IProjectServices projectServices, ILoggingService logger, PermissionServices permissionServices) { _context = context; _userHelper = userHelper; - _projectsHelper = projectsHelper; + _projectServices = projectServices; _logger = logger; _permissionServices = permissionServices; } @@ -182,11 +183,13 @@ namespace Marco.Pms.Services.Controllers // --- Step 1: Get the list of projects the user can access --- // This query is more efficient as it only selects the IDs needed. - var projects = await _projectsHelper.GetMyProjects(tenantId, loggedInEmployee); - var accessibleActiveProjectIds = projects - .Where(p => p.ProjectStatusId == ActiveId) + var projects = await _projectServices.GetMyProjectIdsAsync(tenantId, loggedInEmployee); + + var accessibleActiveProjectIds = await _context.Projects + .Where(p => p.ProjectStatusId == ActiveId && projects.Contains(p.Id)) .Select(p => p.Id) - .ToList(); + .ToListAsync(); + if (!accessibleActiveProjectIds.Any()) { _logger.LogInfo("User {UserId} has no accessible active projects.", loggedInEmployee.Id); @@ -199,7 +202,7 @@ namespace Marco.Pms.Services.Controllers if (projectId.HasValue) { // Security Check: Ensure the requested project is in the user's accessible list. - var hasPermission = await _permissionServices.HasProjectPermission(loggedInEmployee, projectId.Value.ToString()); + var hasPermission = await _permissionServices.HasProjectPermission(loggedInEmployee, projectId.Value); if (!hasPermission) { _logger.LogWarning("Access DENIED for user {UserId} on project {ProjectId} (not active or not accessible).", loggedInEmployee.Id, projectId.Value); @@ -250,7 +253,7 @@ namespace Marco.Pms.Services.Controllers } catch (Exception ex) { - _logger.LogError("An unexpected error occurred in GetTotalEmployees for projectId {ProjectId} \n {Error}", projectId ?? Guid.Empty, ex.Message); + _logger.LogError(ex, "An unexpected error occurred in GetTotalEmployees for projectId {ProjectId}", projectId ?? Guid.Empty); return StatusCode(500, ApiResponse.ErrorResponse("An internal server error occurred.", null, 500)); } } @@ -281,7 +284,7 @@ namespace Marco.Pms.Services.Controllers // --- Logic for a SINGLE Project --- // 2a. Security Check: Verify permission for the specific project. - var hasPermission = await _permissionServices.HasProjectPermission(loggedInEmployee, projectId.Value.ToString()); + var hasPermission = await _permissionServices.HasProjectPermission(loggedInEmployee, projectId.Value); if (!hasPermission) { _logger.LogWarning("Access DENIED for user {UserId} on project {ProjectId}.", loggedInEmployee.Id, projectId.Value); @@ -301,8 +304,8 @@ namespace Marco.Pms.Services.Controllers // --- Logic for ALL Accessible Projects --- // 2c. Get a list of all projects the user is allowed to see. - var accessibleProject = await _projectsHelper.GetMyProjects(tenantId, loggedInEmployee); - var accessibleProjectIds = accessibleProject.Select(p => p.Id).ToList(); + var accessibleProjectIds = await _projectServices.GetMyProjectIdsAsync(tenantId, loggedInEmployee); + if (!accessibleProjectIds.Any()) { _logger.LogInfo("User {UserId} has no accessible projects.", loggedInEmployee.Id); @@ -341,7 +344,7 @@ namespace Marco.Pms.Services.Controllers } catch (Exception ex) { - _logger.LogError("An unexpected error occurred in GetTotalTasks for projectId {ProjectId} \n {Error}", projectId ?? Guid.Empty, ex.Message); + _logger.LogError(ex, "An unexpected error occurred in GetTotalTasks for projectId {ProjectId}", projectId ?? Guid.Empty); return StatusCode(500, ApiResponse.ErrorResponse("An internal server error occurred.", null, 500)); } }