Organization_Management #142

Merged
ashutosh.nehete merged 92 commits from Organization_Management into main 2025-09-30 09:05:14 +00:00
Showing only changes of commit 264c9466c9 - Show all commits

View File

@ -1360,10 +1360,28 @@ namespace MarcoBMS.Services.Controllers
}
// Find TenantOrgMapping for given tenantId and organizationId to validate access
var tenantOrganization = await _context.TenantOrgMappings
var tenantOrganizationTask = Task.Run(async () =>
{
await using var context = await _dbContextFactory.CreateDbContextAsync();
return await context.TenantOrgMappings
.FirstOrDefaultAsync(to => to.TenantId == tenantId && to.OrganizationId == organizationId);
if (tenantOrganization == null)
});
var primaryOrganizationTask = Task.Run(async () =>
{
await using var context = await _dbContextFactory.CreateDbContextAsync();
return await context.Tenants
.Where(t => t.Id == tenantId && t.OrganizationId == organizationId).ToListAsync();
});
await Task.WhenAll(tenantOrganizationTask, primaryOrganizationTask);
var tenantOrganization = tenantOrganizationTask.Result;
var primaryOrganization = primaryOrganizationTask.Result;
if (tenantOrganization == null && !primaryOrganization.Any())
{
_logger.LogWarning("Tenant Organization Mapping not found for TenantId: {TenantId} and OrganizationId: {OrganizationId}", tenantId, organizationId);
return NotFound(ApiResponse<object>.ErrorResponse("Tenant Organization Mapping not found", "Tenant Organization Mapping not found in database", 404));
@ -1378,10 +1396,10 @@ namespace MarcoBMS.Services.Controllers
}
// Generate JWT token scoped to selected tenant and logged-in employee
var token = _refreshTokenService.GenerateJwtToken(loggedInEmployee.Email, tenantOrganization.TenantId, loggedInEmployee.OrganizationId, _jwtSettings);
var token = _refreshTokenService.GenerateJwtToken(loggedInEmployee.Email, tenantId, loggedInEmployee.OrganizationId, _jwtSettings);
// Generate and store refresh token
var refreshToken = await _refreshTokenService.CreateRefreshToken(loggedInEmployee.ApplicationUserId, tenantOrganization.TenantId.ToString(), loggedInEmployee.OrganizationId, _jwtSettings);
var refreshToken = await _refreshTokenService.CreateRefreshToken(loggedInEmployee.ApplicationUserId, tenantId.ToString(), loggedInEmployee.OrganizationId, _jwtSettings);
_logger.LogInfo("Tenant selected and tokens generated for TenantId: {TenantId} and Employee: {EmployeeEmail}", tenantId, loggedInEmployee.Email ?? string.Empty);