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.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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user