skailan-crm
Version:
Servicio de CRM y gestión de ventas para Skailan
26 lines • 1.19 kB
JavaScript
import { Quote } from '../../domain/entities/Quote';
import { v4 as uuidv4 } from 'uuid';
export class CreateQuote {
quoteRepository;
opportunityRepository;
constructor(quoteRepository, opportunityRepository) {
this.quoteRepository = quoteRepository;
this.opportunityRepository = opportunityRepository;
}
async execute(request) {
const { organizationId, opportunityId, quoteNumber, totalAmount } = request;
const opportunity = await this.opportunityRepository.findById(opportunityId, organizationId);
if (!opportunity) {
throw new Error('Opportunity not found.');
}
const existingQuote = await this.quoteRepository.findByQuoteNumber(quoteNumber, organizationId);
if (existingQuote) {
throw new Error('Quote with this number already exists for this organization.');
}
const newQuote = new Quote(uuidv4(), organizationId, opportunityId, quoteNumber, 'Draft', // Default status
totalAmount, 1, // Default version
null, null, new Date(), new Date());
return this.quoteRepository.save(newQuote);
}
}
//# sourceMappingURL=CreateQuote.js.map