// src/modules/tickets/services/upgrade.service.js const repository = require('../repositories/ticket.repository.js') const modelHubGlpi = require('../models/hubglpi/model.js') const ticketEntityResolver = require('./resolveTicketEntity.service.js') const ttmodel = require('../models/glpi/upgrade.model.js') const { logInfo, logError } = require('../../../shared/utils/logger.js') async function fetchNew(watermark) { logInfo('[UPGRADE] Coletando novos chamados') const raw = await repository.getUpgradeTickets(watermark) return raw.map(t => modelHubGlpi.fromHubsoft(t, 'UPGRADE')) } async function saveHubGlpi(tickets) { if (!tickets.length) return logInfo('[UPGRADE] Salvando tickets no HubGLPI') await repository.insertTicketsHubGlpi(tickets) await repository.insertSyncDataByIds(tickets.map(t => t.id_atendimento)) } async function sendToGlpi(ticket) { logInfo(`[UPGRADE] Enviando ticket ${ticket.id_atendimento} para GLPI`) try { const resolved = await ticketEntityResolver.resolveEntityId(ticket) const payload = ttmodel.toGlpiPayload(resolved) const glpiId = await repository.insertTicketGlpi(payload) await repository.insertGroupTicket(glpiId, 'UPGRADE') await repository.updateSyncDataCreated(ticket.id_atendimento, glpiId) return glpiId } catch (err) { logError(err, `[UPGRADE] Erro ao enviar ticket ${ticket.id_atendimento}`) throw err } } module.exports = { fetchNew, saveHubGlpi, sendToGlpi }