Files
dsc-api/src/modules/tickets/providers/referral-strategy.factory.ts
T

30 lines
860 B
TypeScript

import { Injectable } from "@nestjs/common";
import { IReferralStrategy } from "../interfaces/referral-strategy";
import { GroupStrategy } from "../strategies/group.strategy";
import { RoundRobinStrategy } from "../strategies/round-robin.strategy";
export enum ReferralStrategyType {
GROUP = "GROUP",
ROUND_ROBIN = "ROUND_ROBIN",
}
@Injectable()
export class ReferralStrategyFactory {
constructor(
private readonly groupStrategy: GroupStrategy,
private readonly roundRobinStrategy: RoundRobinStrategy,
) {}
getStrategy(type: ReferralStrategyType): IReferralStrategy {
switch (type) {
case ReferralStrategyType.GROUP:
return this.groupStrategy;
case ReferralStrategyType.ROUND_ROBIN:
return this.roundRobinStrategy;
default:
return this.groupStrategy; // Default to group strategy
}
}
}