Added Primary organization of tenant in get organization list

This commit is contained in:
ashutosh.nehete 2025-09-29 14:48:42 +05:30
parent 1cd8203d27
commit c3670eaab9

View File

@ -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();