diff --git a/src/modules/catalog/catalog.service.ts b/src/modules/catalog/catalog.service.ts index 5929849..c56313e 100644 --- a/src/modules/catalog/catalog.service.ts +++ b/src/modules/catalog/catalog.service.ts @@ -240,8 +240,44 @@ class CatalogService implements OnModuleInit { ) { this.logger.info('CatalogService - searchDataAssets'); + const { search, page, size, sort_by, order, owner, ...filters } = query; + + // Verificar se filters.owner existe + if (owner !== undefined && owner !== null) { + const { users: customer_users } = + await this.userService.findAllUsersByCustomerId(customer_id); - const { search, page, size, sort_by, order, ...filters } = query; + let ownerValues: string[]; + if (Array.isArray(owner)) { + ownerValues = owner; + } else if (typeof owner === 'string' && owner.includes(',')) { + ownerValues = owner.split(',').map((o: string) => o.trim()); + } else { + ownerValues = [owner]; + } + + // Separar "sem owner" (marcador especial null) dos owners normais + const hasEmptyOwner = ownerValues.some(v => v === 'null'); + const normalOwners = ownerValues.filter(v => v !== 'null'); + + // Converter nomes de owners para IDs + const ownerIds = normalOwners.map((ownerValue: string) => { + const user = customer_users.find(u => + u.name === ownerValue || u.email === ownerValue || u.id === ownerValue + ); + return user ? user.id : ownerValue; + }); + + // Se tiver "sem owner", adicionar marcador especial + if (hasEmptyOwner) { + ownerIds.push('null'); + } + + // Adicionar ao filters apenas se houver valores + if (ownerIds.length > 0) { + filters.owner = ownerIds; + } + } const { data_assets, total } = await lastValueFrom( this.catalogReadService.GetAllDataAssets(