Organization_Management #142
@ -74,10 +74,36 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Get organization IDs mapped to current tenant that are active
|
// Get organization IDs mapped to current tenant that are active
|
||||||
var organizationIds = await _context.TenantOrgMappings
|
var organizationIdsTask = Task.Run(async () =>
|
||||||
|
{
|
||||||
|
await using var context = await _dbContextFactory.CreateDbContextAsync();
|
||||||
|
return await context.TenantOrgMappings
|
||||||
.Where(to => to.TenantId == tenantId && to.IsActive)
|
.Where(to => to.TenantId == tenantId && to.IsActive)
|
||||||
.Select(to => to.OrganizationId)
|
.Select(to => to.OrganizationId)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
});
|
||||||
|
|
||||||
|
var tenantTask = Task.Run(async () =>
|
||||||
|
{
|
||||||
|
await using var context = await _dbContextFactory.CreateDbContextAsync();
|
||||||
|
return await context.Tenants
|
||||||
|
.FirstOrDefaultAsync(t => t.Id == tenantId && t.IsActive);
|
||||||
|
});
|
||||||
|
|
||||||
|
await Task.WhenAll(organizationIdsTask, tenantTask);
|
||||||
|
|
||||||
|
var organizationIds = organizationIdsTask.Result;
|
||||||
|
var tenant = tenantTask.Result;
|
||||||
|
|
||||||
|
if (tenant == null)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("Tenant {TenantId} is not found", tenantId);
|
||||||
|
return NotFound(ApiResponse<object>.ErrorResponse("Tenant not found", "Tenant not found in database", 404));
|
||||||
|
}
|
||||||
|
|
||||||
|
organizationIds.Add(tenant.OrganizationId);
|
||||||
|
|
||||||
|
organizationIds = organizationIds.Distinct().ToList();
|
||||||
|
|
||||||
organizationQuery = organizationQuery.Where(o => organizationIds.Contains(o.Id));
|
organizationQuery = organizationQuery.Where(o => organizationIds.Contains(o.Id));
|
||||||
_logger.LogDebug("Filtering organizations by tenant's mapped IDs count: {Count}", organizationIds.Count);
|
_logger.LogDebug("Filtering organizations by tenant's mapped IDs count: {Count}", organizationIds.Count);
|
||||||
@ -101,6 +127,14 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
.Take(pageSize)
|
.Take(pageSize)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
|
if (organizations.Any())
|
||||||
|
{
|
||||||
|
organizations = await _context.Tenants.AsNoTracking()
|
||||||
|
.Include(t => t.Organization)
|
||||||
|
.Where(t => t.Id == tenantId && t.OrganizationId == loggedInEmployee.OrganizationId && t.Organization != null && t.IsActive)
|
||||||
|
.Select(t => t.Organization!).ToListAsync();
|
||||||
|
}
|
||||||
|
|
||||||
// Collect creator and updater employee IDs
|
// Collect creator and updater employee IDs
|
||||||
var createdByIds = organizations.Where(o => o.CreatedById != null).Select(o => o.CreatedById!.Value).Distinct().ToList();
|
var createdByIds = organizations.Where(o => o.CreatedById != null).Select(o => o.CreatedById!.Value).Distinct().ToList();
|
||||||
var updatedByIds = organizations.Where(o => o.UpdatedById != null).Select(o => o.UpdatedById!.Value).Distinct().ToList();
|
var updatedByIds = organizations.Where(o => o.UpdatedById != null).Select(o => o.UpdatedById!.Value).Distinct().ToList();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user