skailan-crm
Version:
Servicio de CRM y gestión de ventas para Skailan
58 lines • 2.96 kB
JavaScript
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