Created the structure for project-level-permissions APIs

This commit is contained in:
ashutosh.nehete 2025-09-02 16:05:08 +05:30
parent 830a9526dd
commit 391d79af3e
4 changed files with 46 additions and 5 deletions

View File

@ -423,8 +423,8 @@ namespace Marco.Pms.Services.Controllers
.ThenInclude(da => da!.UpdatedBy)
.Where(av => av.ParentAttachmentId == parentAttachmentId && av.TenantId == tenantId);
var totalPages = await versionMappingsQuery.CountAsync();
var totalCount = totalPages / pageSize;
var totalCount = await versionMappingsQuery.CountAsync();
var totalPages = totalCount / pageSize;
var versionMappings = await versionMappingsQuery
.OrderByDescending(da => da.ChildAttachment!.UploadedAt)

View File

@ -1,4 +1,5 @@
using Marco.Pms.Model.Dtos.Project;
using Marco.Pms.Model.Dtos.Util;
using Marco.Pms.Model.Employees;
using Marco.Pms.Model.Utilities;
using Marco.Pms.Services.Service.ServiceInterfaces;
@ -454,5 +455,28 @@ namespace MarcoBMS.Services.Controllers
#endregion
[HttpPost("assign/project-level-permission")]
public async Task<IActionResult> ManageProjectLevelPermission([FromBody] ProjctLevelPermissionDto model)
{
Employee loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
var response = await _projectServices.ManageProjectLevelPermissionAsync(model, tenantId, loggedInEmployee);
return StatusCode(response.StatusCode, response);
}
[HttpGet("get/project-level-permission/employee/{employeeId}/prject/{projectId}")]
public async Task<IActionResult> GetAssignedProjectLevelPermission(Guid employeeId, Guid projectId)
{
Employee loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
var response = await _projectServices.GetAssignedProjectLevelPermissionAsync(employeeId, projectId, tenantId, loggedInEmployee);
return StatusCode(response.StatusCode, response);
}
[HttpGet("get/proejct-level/modules")]
public async Task<IActionResult> AssignProjectLevelModules()
{
Employee loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
var response = await _projectServices.AssignProjectLevelModulesAsync(tenantId, loggedInEmployee);
return StatusCode(response.StatusCode, response);
}
}
}
};

View File

@ -1473,7 +1473,9 @@ namespace Marco.Pms.Services.Service
var employeeTask = Task.Run(async () =>
{
await using var context = await _dbContextFactory.CreateDbContextAsync();
return await context.ProjectAllocations.FirstOrDefaultAsync(e => e.Id == model.EmployeeId && e.TenantId == tenantId && e.IsActive);
return await context.ProjectAllocations.Include(pa => pa.Employee)
.Where(pa => pa.EmployeeId == model.EmployeeId && pa.ProjectId == model.ProjectId && pa.TenantId == tenantId && pa.IsActive)
.Select(pa => pa.Employee).FirstOrDefaultAsync();
});
var projectTask = Task.Run(async () =>
{
@ -1492,7 +1494,16 @@ namespace Marco.Pms.Services.Service
}
public async Task<ApiResponse<object>> AssignProjectLevelModulesAsync(Guid tenantId, Employee loggedInEmployee)
{
return ApiResponse<object>.SuccessResponse("");
var moduleList = new Guid[]
{
Guid.Parse("53176ebf-c75d-42e5-839f-4508ffac3def"),
Guid.Parse("9d4b5489-2079-40b9-bd77-6e1bf90bc19f"),
Guid.Parse("81ab8a87-8ccd-4015-a917-0627cee6a100"),
Guid.Parse("52c9cf54-1eb2-44d2-81bb-524cf29c0a94"),
Guid.Parse("a8cf4331-8f04-4961-8360-a3f7c3cc7462")
};
var featurePermissions = await _context.FeaturePermissions.Include(fp => fp.Feature).Where(fp => moduleList.Contains(fp.Id) && fp.IsEnabled).ToListAsync();
return ApiResponse<object>.SuccessResponse(featurePermissions);
}
#endregion

View File

@ -1,4 +1,5 @@
using Marco.Pms.Model.Dtos.Project;
using Marco.Pms.Model.Dtos.Util;
using Marco.Pms.Model.Employees;
using Marco.Pms.Model.Projects;
using Marco.Pms.Model.Utilities;
@ -34,5 +35,10 @@ namespace Marco.Pms.Services.Service.ServiceInterfaces
Task<List<ProjectAllocation>> GetTeamByProject(Guid TenantId, Guid ProjectId, bool IncludeInactive);
Task<List<Guid>> GetMyProjectIdsAsync(Guid tenantId, Employee LoggedInEmployee);
Task<ApiResponse<object>> ManageProjectLevelPermissionAsync(ProjctLevelPermissionDto model, Guid tenantId, Employee loggedInEmployee);
Task<ApiResponse<object>> GetAssignedProjectLevelPermissionAsync(Guid employeeId, Guid projectId, Guid tenantId, Employee loggedInEmployee);
Task<ApiResponse<object>> AssignProjectLevelModulesAsync(Guid tenantId, Employee loggedInEmployee);
}
}