Added the API to get the organization list assigned to the project
This commit is contained in:
parent
5fab8371ac
commit
f633e11e97
@ -540,5 +540,17 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
return StatusCode(response.StatusCode, response);
|
return StatusCode(response.StatusCode, response);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region =================================================================== Assign Organization APIs ===================================================================
|
||||||
|
|
||||||
|
[HttpGet("get/assigned/organization/{projectId}")]
|
||||||
|
public async Task<IActionResult> GetAssignedOrganizationsToProject(Guid projectId)
|
||||||
|
{
|
||||||
|
Employee loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||||
|
var response = await _projectServices.GetAssignedOrganizationsToProjectAsync(projectId, tenantId, loggedInEmployee);
|
||||||
|
return StatusCode(response.StatusCode, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
};
|
};
|
@ -16,6 +16,7 @@ using Marco.Pms.Model.Utilities;
|
|||||||
using Marco.Pms.Model.ViewModels.Activities;
|
using Marco.Pms.Model.ViewModels.Activities;
|
||||||
using Marco.Pms.Model.ViewModels.Employee;
|
using Marco.Pms.Model.ViewModels.Employee;
|
||||||
using Marco.Pms.Model.ViewModels.Master;
|
using Marco.Pms.Model.ViewModels.Master;
|
||||||
|
using Marco.Pms.Model.ViewModels.Organization;
|
||||||
using Marco.Pms.Model.ViewModels.Projects;
|
using Marco.Pms.Model.ViewModels.Projects;
|
||||||
using Marco.Pms.Services.Helpers;
|
using Marco.Pms.Services.Helpers;
|
||||||
using Marco.Pms.Services.Service.ServiceInterfaces;
|
using Marco.Pms.Services.Service.ServiceInterfaces;
|
||||||
@ -2053,6 +2054,53 @@ namespace Marco.Pms.Services.Service
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region =================================================================== Assign Organization APIs ===================================================================
|
||||||
|
|
||||||
|
public async Task<ApiResponse<object>> GetAssignedOrganizationsToProjectAsync(Guid projectId, Guid tenantId, Employee loggedInEmployee)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var scope = _serviceScopeFactory.CreateScope();
|
||||||
|
var _permission = scope.ServiceProvider.GetRequiredService<PermissionServices>();
|
||||||
|
|
||||||
|
var project = await _context.Projects.FirstOrDefaultAsync(p => p.Id == projectId && p.TenantId == tenantId);
|
||||||
|
if (project == null)
|
||||||
|
{
|
||||||
|
return ApiResponse<object>.ErrorResponse("Project not found", "Project not found in database", 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
var hasPermission = await _permission.HasProjectPermission(loggedInEmployee, projectId);
|
||||||
|
if (!hasPermission)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("Access DENIED for user {UserId} attempting to update project {ProjectId}.", loggedInEmployee.Id, projectId);
|
||||||
|
return ApiResponse<object>.ErrorResponse("Access Denied.", "You do not have permission to modify this project.", 403);
|
||||||
|
}
|
||||||
|
|
||||||
|
var projectOrgMapping = await _context.ProjectOrgMappings
|
||||||
|
.Include(po => po.ProjectService)
|
||||||
|
.Include(po => po.Organization)
|
||||||
|
.Where(po => po.ProjectService != null && po.ProjectService.ProjectId == projectId && po.TenantId == tenantId).ToListAsync();
|
||||||
|
|
||||||
|
var response = projectOrgMapping.Select(po => _mapper.Map<OrganizationVM>(po.Organization)).ToList();
|
||||||
|
|
||||||
|
return ApiResponse<object>.SuccessResponse(response, "Successfully fetched the list of organization assigned to the project", 200);
|
||||||
|
}
|
||||||
|
catch (DbUpdateException dbEx)
|
||||||
|
{
|
||||||
|
//await transaction.RollbackAsync();
|
||||||
|
|
||||||
|
_logger.LogError(dbEx, "Database Exception has been occured, While deassigning the sevice to the project");
|
||||||
|
return ApiResponse<object>.ErrorResponse("Internal error", "An database exception has been occured", 500);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Exception has been occured, While deassigning the sevice to the project");
|
||||||
|
return ApiResponse<object>.ErrorResponse("Internal error", "An internal exception has been occured", 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region =================================================================== Helper Functions ===================================================================
|
#region =================================================================== Helper Functions ===================================================================
|
||||||
|
|
||||||
public async Task<List<Project>> GetAllProjectByTanentID(Guid tanentId)
|
public async Task<List<Project>> GetAllProjectByTanentID(Guid tanentId)
|
||||||
|
@ -47,5 +47,7 @@ namespace Marco.Pms.Services.Service.ServiceInterfaces
|
|||||||
Task<ApiResponse<object>> AssignServiceToProjectAsync(AssignServiceDto model, Guid tenantId, Employee loggedInEmployee);
|
Task<ApiResponse<object>> AssignServiceToProjectAsync(AssignServiceDto model, Guid tenantId, Employee loggedInEmployee);
|
||||||
Task<ApiResponse<object>> DeassignServiceToProjectAsync(DeassignServiceDto model, Guid tenantId, Employee loggedInEmployee);
|
Task<ApiResponse<object>> DeassignServiceToProjectAsync(DeassignServiceDto model, Guid tenantId, Employee loggedInEmployee);
|
||||||
|
|
||||||
|
Task<ApiResponse<object>> GetAssignedOrganizationsToProjectAsync(Guid projectId, Guid tenantId, Employee loggedInEmployee);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user