UNPKG

skailan-contacts

Version:

Servicio de gestión de contactos para Skailan

119 lines 4.99 kB
import { AddCommunicationPlatform } from "../../app/use-cases/AddCommunicationPlatform"; import { ContactPrismaRepository } from "../../infra/database/prisma/ContactPrismaRepository"; import { ContactCommunicationPlatformPrismaRepository } from "../../infra/database/prisma/ContactCommunicationPlatformPrismaRepository"; export const addCommunicationPlatform = async (req, res) => { try { const { contactId } = req.params; const { platform, platformUserId, platformUsername, isPrimary, config } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res .status(400) .json({ error: "Organization ID not found in request." }); } if (!contactId) { return res.status(400).json({ error: "Contact ID is required." }); } const prisma = req.tenantPrisma; if (!prisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const contactRepository = new ContactPrismaRepository(prisma); const platformRepository = new ContactCommunicationPlatformPrismaRepository(prisma); const addCommunicationPlatformUseCase = new AddCommunicationPlatform(contactRepository, platformRepository); const updatedContact = await addCommunicationPlatformUseCase.execute({ contactId, organizationId, platform, platformUserId, platformUsername, isPrimary, config, }); res.status(200).json(updatedContact.toJSON()); } catch (error) { const statusCode = error.message.includes("not found") ? 404 : error.message.includes("already exists") ? 409 : 500; res .status(statusCode) .json({ error: error.message || "Error adding communication platform." }); } }; export const getContactPlatforms = async (req, res) => { try { const { contactId } = req.params; const organizationId = req.organization?.id; if (!organizationId) { return res .status(400) .json({ error: "Organization ID not found in request." }); } if (!contactId) { return res.status(400).json({ error: "Contact ID is required." }); } const prisma = req.tenantPrisma; if (!prisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const platformRepository = new ContactCommunicationPlatformPrismaRepository(prisma); const platforms = await platformRepository.findActiveByContactId(contactId, organizationId); res.status(200).json(platforms.map((platform) => platform.toJSON())); } catch (error) { res .status(500) .json({ error: error.message || "Error getting contact platforms." }); } }; export const sendMessageToContact = async (req, res) => { try { const { contactId } = req.params; const { platform, message } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res .status(400) .json({ error: "Organization ID not found in request." }); } if (!contactId) { return res.status(400).json({ error: "Contact ID is required." }); } if (!platform || !message) { return res .status(400) .json({ error: "Platform and message are required." }); } const prisma = req.tenantPrisma; if (!prisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const contactRepository = new ContactPrismaRepository(prisma); const platformRepository = new ContactCommunicationPlatformPrismaRepository(prisma); // Importar el servicio de integración const { ConversationIntegrationServiceImpl } = await import("../../domain/services/ConversationIntegrationService"); const conversationIntegrationService = new ConversationIntegrationServiceImpl(contactRepository, platformRepository); const result = await conversationIntegrationService.sendMessageToContact(contactId, platform, message, organizationId); res.status(200).json(result); } catch (error) { const statusCode = error.message.includes("not found") ? 404 : error.message.includes("not active") ? 400 : 500; res .status(statusCode) .json({ error: error.message || "Error sending message to contact." }); } }; //# sourceMappingURL=contactPlatformController.js.map