diff --git a/ecosystem.config.js b/ecosystem.config.js index 786cb5f..3667ffd 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -20,7 +20,7 @@ module.exports = { env_production: { watch: false, NODE_ENV: "production", - PORT: 8080 // Porta usada no ambiente de produção + PORT: 3000 // Porta usada no ambiente de produção } }, diff --git a/src/controller/closureController.js b/src/controller/closureController.js new file mode 100644 index 0000000..db76a3c --- /dev/null +++ b/src/controller/closureController.js @@ -0,0 +1,48 @@ +const {fechaTicket} = require('../services/ticketService.js'); +const { logInfo, logError } = require('../utils/logger.js'); + +/** + * Controller para lidar com o webhook de fechamento de ticket do GLPI. + * @param {import('express').Request} req - O objeto de requisição do Express. + * @param {import('express').Response} res - O objeto de resposta do Express. + */ + +const closeTicket = async (req, res) => { + try { + let rawData = ''; + const bodyRequest = req.body; + + req.on('data', chunk => { + rawData += chunk; + }); + + req.on('end', async () => { + let bodyRequest; + try { + bodyRequest = JSON.parse(rawData); + } catch (err) { + logError('Erro ao parsear JSON:', err); + bodyRequest = {}; + } + + const ticketId = bodyRequest.item.items_id; + logInfo(`Ticket ${ticketId} acionado para encerramento.`); + const closingTicket = await fechaTicket(bodyRequest); + res.status(200).json(closingTicket); + }); + + } catch (error) { + res.status(500).json({ error: error.message }); + } +} + + +module.exports = { closeTicket }; +/** + * @module ClosureController + * @description Este controller é o ponto de entrada para as requisições de webhook enviadas pelo GLPI quando um ticket é fechado. + * + * Funções: + * - `closeTicket(req, res)`: Recebe a notificação do GLPI, extrai os dados do corpo da requisição e invoca o `ticketService` para orquestrar o processo de fechamento do ticket correspondente no HubSoft e a atualização no banco de dados local. + * Ele é responsável por validar a requisição e responder ao GLPI com o status do processamento. + */ \ No newline at end of file