UNPKG

skailan-crm

Version:

Servicio de CRM y gestión de ventas para Skailan

58 lines 2.96 kB
import { Activity } from "../../../domain/entities/Activity"; export class ActivityPrismaRepository { prisma; constructor(prisma) { this.prisma = prisma; } async findById(id, organizationId) { const activityData = await this.prisma.activity.findUnique({ where: { id, organizationId }, }); return activityData ? new Activity(activityData.id, activityData.organizationId, activityData.type, activityData.description, activityData.date, activityData.relatedLeadId, activityData.relatedOpportunityId, activityData.assignedToUserId, activityData.status, activityData.createdAt, activityData.updatedAt) : null; } async findAll(organizationId, relatedLeadId, relatedOpportunityId) { const activitiesData = await this.prisma.activity.findMany({ where: { organizationId, ...(relatedLeadId && { relatedLeadId }), ...(relatedOpportunityId && { relatedOpportunityId }), }, }); return activitiesData.map((activityData) => new Activity(activityData.id, activityData.organizationId, activityData.type, activityData.description, activityData.date, activityData.relatedLeadId, activityData.relatedOpportunityId, activityData.assignedToUserId, activityData.status, activityData.createdAt, activityData.updatedAt)); } async save(activity) { const savedActivity = await this.prisma.activity.upsert({ where: { id: activity.id }, update: { type: activity.type, description: activity.description, date: activity.date, relatedLeadId: activity.relatedLeadId, relatedOpportunityId: activity.relatedOpportunityId, assignedToUserId: activity.assignedToUserId, status: activity.status, updatedAt: new Date(), }, create: { id: activity.id, organizationId: activity.organizationId, type: activity.type, description: activity.description, date: activity.date, relatedLeadId: activity.relatedLeadId, relatedOpportunityId: activity.relatedOpportunityId, assignedToUserId: activity.assignedToUserId, status: activity.status, }, }); return new Activity(savedActivity.id, savedActivity.organizationId, savedActivity.type, savedActivity.description, savedActivity.date, savedActivity.relatedLeadId, savedActivity.relatedOpportunityId, savedActivity.assignedToUserId, savedActivity.status, savedActivity.createdAt, savedActivity.updatedAt); } async delete(id, organizationId) { await this.prisma.activity.delete({ where: { id, organizationId }, }); } } //# sourceMappingURL=ActivityPrismaRepository.js.map