import { Injectable } from '@nestjs/common'; import { BaseFactory } from './base.factory'; import { IntegrationStrategy } from '../strategies/integration.strategy'; import { OzonetelVoiceStrategy } from '../strategies/telephone/ozonetel-voice.strategy'; import { TubelightVoiceStrategy } from '../strategies/telephone/tubelight-voice.strategy'; @Injectable() export class TelephoneFactory implements BaseFactory { constructor( private ozonetelVoiceStrategy: OzonetelVoiceStrategy, private tubelightVoiceStrategy: TubelightVoiceStrategy, ) {} createProvider(service: string, provider: string): IntegrationStrategy { const providerKey = provider.toLowerCase(); switch (providerKey) { case 'ozonetel': return this.ozonetelVoiceStrategy; case 'tubelight': return this.tubelightVoiceStrategy; default: throw new Error( `Unsupported Telephone provider: ${provider}`, ); } } getSupportedCombinations(): Array<{ service: string; provider: string }> { return [ { service: 'API', provider: 'ozonetel' }, { service: 'API', provider: 'tubelight' } ]; } validateCombination(service: string, provider: string): boolean { const supportedProviders = ['ozonetel', 'tubelight']; return supportedProviders.includes(provider.toLowerCase()); } }