import { Module } from "@nestjs/common"; import { TypeOrmModule } from "@nestjs/typeorm"; import { BackofficeModule } from "../backoffice/backoffice.module"; import { CompaniesModule } from "../companies/companies.module"; import { FilesModule } from "../files/files.module"; import { NotificationInboxModule } from "../notification-inbox/notification-inbox.module"; import { SupportConversation } from "./entities/support-conversation.entity"; import { SupportMessage } from "./entities/support-message.entity"; import { SupportAttachmentController } from "./support-attachment.controller"; import { SupportChatAgentController } from "./support-chat-agent.controller"; import { SupportChatController } from "./support-chat.controller"; import { SupportChatGateway } from "./support-chat.gateway"; import { SupportChatService } from "./support-chat.service"; import { SupportConversationRepository } from "./support-conversation.repository"; import { SupportMessageRepository } from "./support-message.repository"; @Module({ imports: [ TypeOrmModule.forFeature([SupportConversation, SupportMessage]), // ExternalProfileRepository — company lookup + ownership checks. // CompaniesService — resolve the company an agent opens a thread with. CompaniesModule, // BackofficeService.getAllCurrentEmployeeUserIds — staff room membership. BackofficeModule, // WsAuthService — reused handshake authentication for the gateway. NotificationInboxModule, // FilesService — chat attachments are stored as polymorphic file records. FilesModule, ], controllers: [ SupportChatController, SupportChatAgentController, SupportAttachmentController, ], providers: [ SupportConversationRepository, SupportMessageRepository, SupportChatGateway, SupportChatService, ], // FilesController's ownership check for `support_message` files defers to this // service — see SupportAttachmentAccess. exports: [SupportChatService], }) export class SupportChatModule {}