UNPKG

skailan-contacts

Version:

Servicio de gestión de contactos para Skailan

142 lines 7.15 kB
import { ContactCommunicationPlatform } from '../../../domain/entities/ContactCommunicationPlatform'; export class ContactCommunicationPlatformPrismaRepository { prisma; constructor(prisma) { this.prisma = prisma; } async findById(id, organizationId) { try { const platformData = await this.prisma.contactCommunicationPlatform.findFirst({ where: { id, organizationId }, }); return platformData ? new ContactCommunicationPlatform(platformData.id, platformData.contactId, platformData.organizationId, platformData.platform, platformData.platformUserId, platformData.platformUsername, platformData.isActive, platformData.isPrimary, platformData.config, platformData.createdAt, platformData.updatedAt) : null; } catch (error) { throw new Error(`Error finding platform by ID: ${error instanceof Error ? error.message : 'Unknown error'}`); } } async findByContactId(contactId, organizationId) { try { const platformsData = await this.prisma.contactCommunicationPlatform.findMany({ where: { contactId, organizationId }, orderBy: { isPrimary: 'desc' } }); return platformsData.map(platformData => new ContactCommunicationPlatform(platformData.id, platformData.contactId, platformData.organizationId, platformData.platform, platformData.platformUserId, platformData.platformUsername, platformData.isActive, platformData.isPrimary, platformData.config, platformData.createdAt, platformData.updatedAt)); } catch (error) { throw new Error(`Error finding platforms by contact ID: ${error instanceof Error ? error.message : 'Unknown error'}`); } } async findByPlatform(platform, organizationId) { try { const platformsData = await this.prisma.contactCommunicationPlatform.findMany({ where: { platform, organizationId }, }); return platformsData.map(platformData => new ContactCommunicationPlatform(platformData.id, platformData.contactId, platformData.organizationId, platformData.platform, platformData.platformUserId, platformData.platformUsername, platformData.isActive, platformData.isPrimary, platformData.config, platformData.createdAt, platformData.updatedAt)); } catch (error) { throw new Error(`Error finding platforms by platform type: ${error instanceof Error ? error.message : 'Unknown error'}`); } } async findActiveByContactId(contactId, organizationId) { try { const platformsData = await this.prisma.contactCommunicationPlatform.findMany({ where: { contactId, organizationId, isActive: true }, orderBy: { isPrimary: 'desc' } }); return platformsData.map(platformData => new ContactCommunicationPlatform(platformData.id, platformData.contactId, platformData.organizationId, platformData.platform, platformData.platformUserId, platformData.platformUsername, platformData.isActive, platformData.isPrimary, platformData.config, platformData.createdAt, platformData.updatedAt)); } catch (error) { throw new Error(`Error finding active platforms by contact ID: ${error instanceof Error ? error.message : 'Unknown error'}`); } } async findPrimaryByContactId(contactId, organizationId) { try { const platformData = await this.prisma.contactCommunicationPlatform.findFirst({ where: { contactId, organizationId, isPrimary: true }, }); return platformData ? new ContactCommunicationPlatform(platformData.id, platformData.contactId, platformData.organizationId, platformData.platform, platformData.platformUserId, platformData.platformUsername, platformData.isActive, platformData.isPrimary, platformData.config, platformData.createdAt, platformData.updatedAt) : null; } catch (error) { throw new Error(`Error finding primary platform by contact ID: ${error instanceof Error ? error.message : 'Unknown error'}`); } } async save(platform) { try { const savedPlatform = await this.prisma.contactCommunicationPlatform.upsert({ where: { id: platform.id }, update: { contactId: platform.contactId, organizationId: platform.organizationId, platform: platform.platform, platformUserId: platform.platformUserId, platformUsername: platform.platformUsername, isActive: platform.isActive, isPrimary: platform.isPrimary, config: platform.config, updatedAt: new Date(), }, create: { id: platform.id, contactId: platform.contactId, organizationId: platform.organizationId, platform: platform.platform, platformUserId: platform.platformUserId, platformUsername: platform.platformUsername, isActive: platform.isActive, isPrimary: platform.isPrimary, config: platform.config, }, }); return new ContactCommunicationPlatform(savedPlatform.id, savedPlatform.contactId, savedPlatform.organizationId, savedPlatform.platform, savedPlatform.platformUserId, savedPlatform.platformUsername, savedPlatform.isActive, savedPlatform.isPrimary, savedPlatform.config, savedPlatform.createdAt, savedPlatform.updatedAt); } catch (error) { throw new Error(`Error saving platform: ${error instanceof Error ? error.message : 'Unknown error'}`); } } async delete(id, organizationId) { try { await this.prisma.contactCommunicationPlatform.delete({ where: { id }, }); } catch (error) { throw new Error(`Error deleting platform: ${error instanceof Error ? error.message : 'Unknown error'}`); } } async deleteByContactId(contactId, organizationId) { try { await this.prisma.contactCommunicationPlatform.deleteMany({ where: { contactId, organizationId }, }); } catch (error) { throw new Error(`Error deleting platforms by contact ID: ${error instanceof Error ? error.message : 'Unknown error'}`); } } } //# sourceMappingURL=ContactCommunicationPlatformPrismaRepository.js.map