Solved the rebase issues
This commit is contained in:
parent
0ac4c23e74
commit
7b2a3887de
@ -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<object>.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<object>.ErrorResponse("An internal server error occurred.", null, 500));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user