UNPKG

skailan-crm

Version:

Servicio de CRM y gestión de ventas para Skailan

52 lines 2.58 kB
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