skailan-crm
Version:
Servicio de CRM y gestión de ventas para Skailan
28 lines • 1.39 kB
JavaScript
export class AddCompetitorToOpportunity {
opportunityCompetitorRepository;
opportunityRepository;
competitorRepository;
constructor(opportunityCompetitorRepository, opportunityRepository, competitorRepository) {
this.opportunityCompetitorRepository = opportunityCompetitorRepository;
this.opportunityRepository = opportunityRepository;
this.competitorRepository = competitorRepository;
}
async execute(request) {
const { organizationId, opportunityId, competitorId } = request;
const opportunity = await this.opportunityRepository.findById(opportunityId, organizationId);
if (!opportunity) {
throw new Error('Opportunity not found.');
}
const competitor = await this.competitorRepository.findById(competitorId, organizationId);
if (!competitor) {
throw new Error('Competitor not found.');
}
// Check if already added
const existing = await this.opportunityCompetitorRepository.findCompetitorsByOpportunity(opportunityId);
if (existing.some(oc => oc.competitorId === competitorId)) {
throw new Error('Competitor already added to this opportunity.');
}
return this.opportunityCompetitorRepository.addCompetitorToOpportunity(opportunityId, competitorId);
}
}
//# sourceMappingURL=AddCompetitorToOpportunity.js.map