oex2003/evolution-api
0
1import { InstanceDto } from '@api/dto/instance.dto';2import { ProviderFiles } from '@api/provider/sessions';3import { PrismaRepository } from '@api/repository/repository.service';4import { CacheService } from '@api/services/cache.service';5import { WAMonitoringService } from '@api/services/monitor.service';6import { Integration } from '@api/types/wa.types';7import { ConfigService } from '@config/env.config';8import { BadRequestException } from '@exceptions';9import EventEmitter2 from 'eventemitter2';10 11import { EvolutionStartupService } from './evolution/evolution.channel.service';12import { BusinessStartupService } from './meta/whatsapp.business.service';13import { BaileysStartupService } from './whatsapp/whatsapp.baileys.service';14 15type ChannelDataType = {16 configService: ConfigService;17 eventEmitter: EventEmitter2;18 prismaRepository: PrismaRepository;19 cache: CacheService;20 chatwootCache: CacheService;21 baileysCache: CacheService;22 providerFiles: ProviderFiles;23};24 25export interface ChannelControllerInterface {26 receiveWebhook(data: any): Promise<any>;27}28 29export class ChannelController {30 public prismaRepository: PrismaRepository;31 public waMonitor: WAMonitoringService;32 33 constructor(prismaRepository: PrismaRepository, waMonitor: WAMonitoringService) {34 this.prisma = prismaRepository;35 this.monitor = waMonitor;36 }37 38 public set prisma(prisma: PrismaRepository) {39 this.prismaRepository = prisma;40 }41 42 public get prisma() {43 return this.prismaRepository;44 }45 46 public set monitor(waMonitor: WAMonitoringService) {47 this.waMonitor = waMonitor;48 }49 50 public get monitor() {51 return this.waMonitor;52 }53 54 public init(instanceData: InstanceDto, data: ChannelDataType) {55 if (!instanceData.token && instanceData.integration === Integration.WHATSAPP_BUSINESS) {56 throw new BadRequestException('token is required');57 }58 59 if (instanceData.integration === Integration.WHATSAPP_BUSINESS) {60 return new BusinessStartupService(61 data.configService,62 data.eventEmitter,63 data.prismaRepository,64 data.cache,65 data.chatwootCache,66 data.baileysCache,67 data.providerFiles,68 );69 }70 71 if (instanceData.integration === Integration.EVOLUTION) {72 return new EvolutionStartupService(73 data.configService,74 data.eventEmitter,75 data.prismaRepository,76 data.cache,77 data.chatwootCache,78 );79 }80 81 if (instanceData.integration === Integration.WHATSAPP_BAILEYS) {82 return new BaileysStartupService(83 data.configService,84 data.eventEmitter,85 data.prismaRepository,86 data.cache,87 data.chatwootCache,88 data.baileysCache,89 data.providerFiles,90 );91 }92 93 return null;94 }95}96 