diff --git a/backend/src/entities/connection/repository/connection.repository.interface.ts b/backend/src/entities/connection/repository/connection.repository.interface.ts index d28ea7475..251f8a723 100644 --- a/backend/src/entities/connection/repository/connection.repository.interface.ts +++ b/backend/src/entities/connection/repository/connection.repository.interface.ts @@ -41,4 +41,6 @@ export interface IConnectionRepository { freezeConnections(connectionsIds: Array): Promise; unFreezeConnections(connectionsIds: Array): Promise; + + foundUserTestConnectionsWithoutCompany(userId: string): Promise>; } diff --git a/backend/src/entities/connection/repository/custom-connection-repository-extension.ts b/backend/src/entities/connection/repository/custom-connection-repository-extension.ts index 784962b33..ff15fe559 100644 --- a/backend/src/entities/connection/repository/custom-connection-repository-extension.ts +++ b/backend/src/entities/connection/repository/custom-connection-repository-extension.ts @@ -207,6 +207,15 @@ export const customConnectionRepositoryExtension: IConnectionRepository = { .execute(); }, + async foundUserTestConnectionsWithoutCompany(userId: string): Promise> { + const qb = this.createQueryBuilder('connection') + .leftJoin('connection.author', 'user') + .where('user.id = :userId', { userId: userId }) + .andWhere('connection.isTestConnection = :isTest', { isTest: true }) + .andWhere('connection.company IS NULL'); + return await qb.getMany(); + }, + decryptConnectionField(field: string): string { try { return Encryptor.decryptData(field); diff --git a/backend/src/microservices/saas-microservice/use-cases/register-company-webhook.use.case.ts b/backend/src/microservices/saas-microservice/use-cases/register-company-webhook.use.case.ts index fb595463f..5be65367d 100644 --- a/backend/src/microservices/saas-microservice/use-cases/register-company-webhook.use.case.ts +++ b/backend/src/microservices/saas-microservice/use-cases/register-company-webhook.use.case.ts @@ -8,6 +8,7 @@ import { IGlobalDatabaseContext } from '../../../common/application/global-datab import { Messages } from '../../../exceptions/text/messages.js'; import { CompanyInfoEntity } from '../../../entities/company-info/company-info.entity.js'; import { UserRoleEnum } from '../../../entities/user/enums/user-role.enum.js'; +import * as Sentry from '@sentry/node'; @Injectable() export class RegisteredCompanyWebhookUseCase @@ -50,6 +51,20 @@ export class RegisteredCompanyWebhookUseCase foundUser.company = savedCompanyInfo; foundUser.role = UserRoleEnum.ADMIN; const savedUser = await this._dbContext.userRepository.saveUserEntity(foundUser); + + try { + const userTestConnectionsWithoutCompany = + await this._dbContext.connectionRepository.foundUserTestConnectionsWithoutCompany(registrarUserId); + if (userTestConnectionsWithoutCompany.length) { + userTestConnectionsWithoutCompany.forEach((connection) => { + connection.company = savedCompanyInfo; + }); + await this._dbContext.connectionRepository.save(userTestConnectionsWithoutCompany); + } + } catch (error) { + Sentry.captureException(error); + } + return { userId: savedUser.id, companyId: savedCompanyInfo.id,