UNPKG

@poli-digital/n8n-nodes-poli

Version:
146 lines 6.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ForwardContact = void 0; const n8n_workflow_1 = require("n8n-workflow"); const transport_1 = require("./transport"); class ForwardContact { constructor() { this.description = { displayName: 'Forward Contact', name: 'forwardContact', icon: 'file:poli.svg', group: ['output'], version: 1, description: 'Forward a contact to a user or team', defaults: { name: 'Forward Contact', }, inputs: ['main'], outputs: ['main'], credentials: [ { name: 'poliApi', required: true, }, ], properties: [ { displayName: 'Contact ID', name: 'contactUuid', type: 'string', default: '', description: 'UUID do contato que será encaminhado', required: true, }, { displayName: 'Forward to', name: 'forwardType', type: 'options', noDataExpression: true, options: [ { name: 'User', value: 'user', description: 'Encaminhar para um usuário específico', }, { name: 'Team', value: 'team', description: 'Encaminhar para uma equipe', }, ], default: 'user', description: 'Escolha se deseja encaminhar o contato para um usuário ou uma equipe', required: true, }, { displayName: 'User ID', name: 'userUuid', type: 'string', default: '', description: 'UUID do usuário que receberá o contato encaminhado', displayOptions: { show: { forwardType: ['user'], }, }, required: true, }, { displayName: 'Team ID', name: 'teamUuid', type: 'string', default: '', description: 'UUID da equipe que receberá o contato encaminhado', displayOptions: { show: { forwardType: ['team'], }, }, required: true, }, ], }; } async execute() { const items = this.getInputData(); const returnData = []; for (let i = 0; i < items.length; i++) { try { const contactUuid = this.getNodeParameter('contactUuid', i); const forwardType = this.getNodeParameter('forwardType', i); if (!contactUuid || contactUuid.trim() === '') { throw new n8n_workflow_1.NodeApiError(this.getNode(), { message: 'Contact UUID é obrigatório e não pode estar vazio', }); } const body = {}; if (forwardType === 'user') { const userUuid = this.getNodeParameter('userUuid', i); if (!userUuid || userUuid.trim() === '') { throw new n8n_workflow_1.NodeApiError(this.getNode(), { message: 'UUID do Usuário é obrigatório quando "Usuário" é selecionado', }); } body.user_uuid = userUuid; } else if (forwardType === 'team') { const teamUuid = this.getNodeParameter('teamUuid', i); if (!teamUuid || teamUuid.trim() === '') { throw new n8n_workflow_1.NodeApiError(this.getNode(), { message: 'UUID da Equipe é obrigatório quando "Equipe" é selecionada', }); } body.team_uuid = teamUuid; } else { throw new n8n_workflow_1.NodeApiError(this.getNode(), { message: 'Tipo de encaminhamento inválido. Deve ser "user" ou "team"', }); } if (body.user_uuid && body.team_uuid) { throw new n8n_workflow_1.NodeApiError(this.getNode(), { message: 'Erro interno: Não é possível encaminhar para usuário e equipe simultaneamente', }); } if (!body.user_uuid && !body.team_uuid) { throw new n8n_workflow_1.NodeApiError(this.getNode(), { message: 'Erro interno: Nenhum destinatário foi definido para o encaminhamento', }); } const endpoint = `/contacts/${contactUuid}/forward`; const responseData = await transport_1.apiRequest.call(this, 'POST', endpoint, body); returnData.push({ json: responseData }); } catch (error) { if (error instanceof n8n_workflow_1.NodeApiError) { throw error; } throw new n8n_workflow_1.NodeApiError(this.getNode(), error); } } return [returnData]; } } exports.ForwardContact = ForwardContact; //# sourceMappingURL=ForwardContact.operation.js.map