Solved the rebase issues

This commit is contained in:
ashutosh.nehete 2025-07-17 17:36:58 +05:30
parent 0ac4c23e74
commit 7b2a3887de

View File

@ -6,6 +6,7 @@ using Marco.Pms.Model.Projects;
using Marco.Pms.Model.Utilities; using Marco.Pms.Model.Utilities;
using Marco.Pms.Model.ViewModels.DashBoard; using Marco.Pms.Model.ViewModels.DashBoard;
using Marco.Pms.Services.Service; using Marco.Pms.Services.Service;
using Marco.Pms.Services.Service.ServiceInterfaces;
using MarcoBMS.Services.Helpers; using MarcoBMS.Services.Helpers;
using MarcoBMS.Services.Service; using MarcoBMS.Services.Service;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
@ -21,15 +22,15 @@ namespace Marco.Pms.Services.Controllers
{ {
private readonly ApplicationDbContext _context; private readonly ApplicationDbContext _context;
private readonly UserHelper _userHelper; private readonly UserHelper _userHelper;
private readonly ProjectsHelper _projectsHelper; private readonly IProjectServices _projectServices;
private readonly ILoggingService _logger; private readonly ILoggingService _logger;
private readonly PermissionServices _permissionServices; private readonly PermissionServices _permissionServices;
public static readonly Guid ActiveId = Guid.Parse("b74da4c2-d07e-46f2-9919-e75e49b12731"); 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; _context = context;
_userHelper = userHelper; _userHelper = userHelper;
_projectsHelper = projectsHelper; _projectServices = projectServices;
_logger = logger; _logger = logger;
_permissionServices = permissionServices; _permissionServices = permissionServices;
} }
@ -182,11 +183,13 @@ namespace Marco.Pms.Services.Controllers
// --- Step 1: Get the list of projects the user can access --- // --- Step 1: Get the list of projects the user can access ---
// This query is more efficient as it only selects the IDs needed. // This query is more efficient as it only selects the IDs needed.
var projects = await _projectsHelper.GetMyProjects(tenantId, loggedInEmployee); var projects = await _projectServices.GetMyProjectIdsAsync(tenantId, loggedInEmployee);
var accessibleActiveProjectIds = projects
.Where(p => p.ProjectStatusId == ActiveId) var accessibleActiveProjectIds = await _context.Projects
.Where(p => p.ProjectStatusId == ActiveId && projects.Contains(p.Id))
.Select(p => p.Id) .Select(p => p.Id)
.ToList(); .ToListAsync();
if (!accessibleActiveProjectIds.Any()) if (!accessibleActiveProjectIds.Any())
{ {
_logger.LogInfo("User {UserId} has no accessible active projects.", loggedInEmployee.Id); _logger.LogInfo("User {UserId} has no accessible active projects.", loggedInEmployee.Id);
@ -199,7 +202,7 @@ namespace Marco.Pms.Services.Controllers
if (projectId.HasValue) if (projectId.HasValue)
{ {
// Security Check: Ensure the requested project is in the user's accessible list. // 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) if (!hasPermission)
{ {
_logger.LogWarning("Access DENIED for user {UserId} on project {ProjectId} (not active or not accessible).", loggedInEmployee.Id, projectId.Value); _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) 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<object>.ErrorResponse("An internal server error occurred.", null, 500)); return StatusCode(500, ApiResponse<object>.ErrorResponse("An internal server error occurred.", null, 500));
} }
} }
@ -281,7 +284,7 @@ namespace Marco.Pms.Services.Controllers
// --- Logic for a SINGLE Project --- // --- Logic for a SINGLE Project ---
// 2a. Security Check: Verify permission for the specific 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) if (!hasPermission)
{ {
_logger.LogWarning("Access DENIED for user {UserId} on project {ProjectId}.", loggedInEmployee.Id, projectId.Value); _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 --- // --- Logic for ALL Accessible Projects ---
// 2c. Get a list of all projects the user is allowed to see. // 2c. Get a list of all projects the user is allowed to see.
var accessibleProject = await _projectsHelper.GetMyProjects(tenantId, loggedInEmployee); var accessibleProjectIds = await _projectServices.GetMyProjectIdsAsync(tenantId, loggedInEmployee);
var accessibleProjectIds = accessibleProject.Select(p => p.Id).ToList();
if (!accessibleProjectIds.Any()) if (!accessibleProjectIds.Any())
{ {
_logger.LogInfo("User {UserId} has no accessible projects.", loggedInEmployee.Id); _logger.LogInfo("User {UserId} has no accessible projects.", loggedInEmployee.Id);
@ -341,7 +344,7 @@ namespace Marco.Pms.Services.Controllers
} }
catch (Exception ex) 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<object>.ErrorResponse("An internal server error occurred.", null, 500)); return StatusCode(500, ApiResponse<object>.ErrorResponse("An internal server error occurred.", null, 500));
} }
} }