Files
twenty_crm/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/jobs/create-company-and-contact.job.ts
bosiraphael 96cad2accd 4398 decouple contacts and companies creation from messages import (#4590)
* emit event

* create queue and listener

* filter participants with role 'from'

* create job

* Add job to job module

* Refactoring

* Refactor contact creation in CreateCompanyAndContactService

* update job

* wip

* add getByHandlesWithoutPersonIdAndWorkspaceMemberId to calendar event attendee repository

* refactoring

* refactoring

* Revert "refactoring"

This reverts commit e5434f0b871e45447227aa8d55ba5af381c3ff1c.

* fix nest imports

* add await

* fix contact creation condition

* emit contact creation event after calendar-full-sync

* add await

* add missing transactionManager

* calendar event attendees personId update is working

* messageParticipant and calendarEventAttendee update is working as intended

* rename module

* fix lodash import

* add test

* update package.json
2024-03-22 18:44:14 +01:00

37 lines
1.1 KiB
TypeScript

import { Injectable } from '@nestjs/common';
import { MessageQueueJob } from 'src/engine/integrations/message-queue/interfaces/message-queue-job.interface';
import { CreateCompanyAndContactService } from 'src/modules/connected-account/auto-companies-and-contacts-creation/services/create-company-and-contact.service';
export type CreateCompanyAndContactJobData = {
workspaceId: string;
connectedAccountHandle: string;
contactsToCreate: {
displayName: string;
handle: string;
}[];
};
@Injectable()
export class CreateCompanyAndContactJob
implements MessageQueueJob<CreateCompanyAndContactJobData>
{
constructor(
private readonly createCompanyAndContactService: CreateCompanyAndContactService,
) {}
async handle(data: CreateCompanyAndContactJobData): Promise<void> {
const { workspaceId, connectedAccountHandle, contactsToCreate } = data;
await this.createCompanyAndContactService.createCompaniesAndContactsAndUpdateParticipants(
connectedAccountHandle,
contactsToCreate.map((contact) => ({
handle: contact.handle,
displayName: contact.displayName,
})),
workspaceId,
);
}
}