skailan-crm
Version:
Servicio de CRM y gestión de ventas para Skailan
52 lines • 2.58 kB
JavaScript
import { QuoteItem } from "../../../domain/entities/QuoteItem";
export class QuoteItemPrismaRepository {
prisma;
constructor(prisma) {
this.prisma = prisma;
}
async findById(id, organizationId) {
const quoteItemData = await this.prisma.quoteItem.findUnique({
where: { id, organizationId },
});
return quoteItemData
? new QuoteItem(quoteItemData.id, quoteItemData.organizationId, quoteItemData.quoteId, quoteItemData.productId, quoteItemData.quantity, quoteItemData.unitPrice, quoteItemData.totalPrice, quoteItemData.notes, quoteItemData.createdAt, quoteItemData.updatedAt)
: null;
}
async findAll(organizationId, quoteId) {
const quoteItemsData = await this.prisma.quoteItem.findMany({
where: { organizationId, ...(quoteId && { quoteId }) },
});
return quoteItemsData.map((quoteItemData) => new QuoteItem(quoteItemData.id, quoteItemData.organizationId, quoteItemData.quoteId, quoteItemData.productId, quoteItemData.quantity, quoteItemData.unitPrice, quoteItemData.totalPrice, quoteItemData.notes, quoteItemData.createdAt, quoteItemData.updatedAt));
}
async save(quoteItem) {
const savedQuoteItem = await this.prisma.quoteItem.upsert({
where: { id: quoteItem.id },
update: {
quoteId: quoteItem.quoteId,
productId: quoteItem.productId,
quantity: quoteItem.quantity,
unitPrice: quoteItem.unitPrice,
totalPrice: quoteItem.totalPrice,
notes: quoteItem.notes,
updatedAt: new Date(),
},
create: {
id: quoteItem.id,
organizationId: quoteItem.organizationId,
quoteId: quoteItem.quoteId,
productId: quoteItem.productId,
quantity: quoteItem.quantity,
unitPrice: quoteItem.unitPrice,
totalPrice: quoteItem.totalPrice,
notes: quoteItem.notes,
},
});
return new QuoteItem(savedQuoteItem.id, savedQuoteItem.organizationId, savedQuoteItem.quoteId, savedQuoteItem.productId, savedQuoteItem.quantity, savedQuoteItem.unitPrice, savedQuoteItem.totalPrice, savedQuoteItem.notes, savedQuoteItem.createdAt, savedQuoteItem.updatedAt);
}
async delete(id, organizationId) {
await this.prisma.quoteItem.delete({
where: { id, organizationId },
});
}
}
//# sourceMappingURL=QuoteItemPrismaRepository.js.map