2026-01-06 17:43:09 -03:00
|
|
|
// src/modules/tickets/services/trocaTitularidade.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/titularidade.model.js')
|
|
|
|
|
const { logInfo, logError } = require('../../../shared/utils/logger.js')
|
|
|
|
|
|
|
|
|
|
async function fetchNew(watermark) {
|
|
|
|
|
logInfo('[TROCA_TITULARIDADE] Coletando novos chamados')
|
|
|
|
|
const raw = await repository.getTrocaTTickets(watermark)
|
|
|
|
|
return raw.map(t => modelHubGlpi.fromHubsoft(t, 'TITULARIDADE'))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function saveHubGlpi(tickets) {
|
|
|
|
|
if (!tickets.length) return
|
|
|
|
|
logInfo('[TROCA_TITULARIDADE] Salvando tickets no HubGLPI')
|
|
|
|
|
await repository.insertTicketsHubGlpi(tickets)
|
|
|
|
|
await repository.insertSyncDataByIds(tickets.map(t => t.id_atendimento))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function sendToGlpi(ticket) {
|
|
|
|
|
logInfo(`[TROCA_TITULARIDADE] 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)
|
2026-06-25 17:41:50 -03:00
|
|
|
await repository.insertGroupTicket(glpiId, 'IMPLANTACAO')
|
2026-01-06 17:43:09 -03:00
|
|
|
await repository.updateSyncDataCreated(ticket.id_atendimento, glpiId)
|
|
|
|
|
|
|
|
|
|
return glpiId
|
|
|
|
|
} catch (err) {
|
|
|
|
|
logError(err, `[TROCA_TITULARIDADE] Erro ao enviar ticket ${ticket.id_atendimento}`)
|
|
|
|
|
throw err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
fetchNew,
|
|
|
|
|
saveHubGlpi,
|
|
|
|
|
sendToGlpi
|
|
|
|
|
}
|