2025-09-17 20:56:32 -03:00
|
|
|
// src/models/ticketSyncModel.js
|
|
|
|
|
const pool = require('../data/database');
|
2025-09-24 20:34:34 -03:00
|
|
|
const { logError } = require('../utils/logger');
|
2025-09-17 20:56:32 -03:00
|
|
|
|
|
|
|
|
class TicketSyncModel {
|
|
|
|
|
|
2025-09-24 20:34:34 -03:00
|
|
|
// Buscar tickets que foram criados com sucesso para sincronizar comentários
|
|
|
|
|
static async getTicketsToSync() {
|
2025-09-17 20:56:32 -03:00
|
|
|
try {
|
2025-09-24 20:34:34 -03:00
|
|
|
const query = 'SELECT id, glpi_ticket_id, sn_ticket_id FROM ticket_sync';
|
|
|
|
|
const { rows } = await pool.query(query);
|
|
|
|
|
return rows;
|
2025-09-17 20:56:32 -03:00
|
|
|
} catch (error) {
|
2025-09-24 20:34:34 -03:00
|
|
|
logError(error, '❌ Erro ao buscar tickets para sincronizar');
|
2025-09-17 20:56:32 -03:00
|
|
|
throw error;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-09-24 20:34:34 -03:00
|
|
|
// Atualiza o status de sincronização de um ticket
|
|
|
|
|
static async updateStatus(ticketSyncId, glpiStatus, snStatus) {
|
2025-09-17 20:56:32 -03:00
|
|
|
try {
|
2025-09-24 20:34:34 -03:00
|
|
|
const query = 'UPDATE ticket_sync SET glpi_sync_status = $1, sn_sync_status = $2 WHERE id = $3';
|
|
|
|
|
await pool.query(query, [glpiStatus, snStatus, ticketSyncId]);
|
2025-09-17 20:56:32 -03:00
|
|
|
} catch (error) {
|
2025-09-24 20:34:34 -03:00
|
|
|
logError(error, `❌ Erro ao atualizar status de sincronização para o ID: ${ticketSyncId}`);
|
2025-09-17 20:56:32 -03:00
|
|
|
throw error;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-09-24 20:34:34 -03:00
|
|
|
|
|
|
|
|
// Buscar o ID de sincronização baseado no glpi_ticket_id
|
|
|
|
|
static async getIdSyncByGlpiId(glpiTicketId) {
|
2025-09-17 20:56:32 -03:00
|
|
|
try {
|
2025-09-24 20:34:34 -03:00
|
|
|
const query = 'SELECT id FROM ticket_sync WHERE glpi_ticket_id = $1';
|
|
|
|
|
const { rows } = await pool.query(query, [glpiTicketId]);
|
|
|
|
|
return rows[0] ? rows[0].id : null;
|
2025-09-17 20:56:32 -03:00
|
|
|
} catch (error) {
|
2025-09-24 20:34:34 -03:00
|
|
|
logError(error, `❌ Erro ao buscar ID de sincronização por GLPI ID: ${glpiTicketId}`);
|
|
|
|
|
throw error;
|
2025-09-17 20:56:32 -03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-09-24 20:34:34 -03:00
|
|
|
/**
|
|
|
|
|
* @module TicketSyncModel
|
|
|
|
|
* @description Este módulo fornece métodos para interagir com a tabela de sincronização de tickets (ticket_sync) no banco de dados.
|
|
|
|
|
* Inclui funcionalidades para buscar tickets para sincronização, atualizar o status de sincronização
|
|
|
|
|
* e buscar o ID de sincronização baseado no glpi_ticket_id.
|
|
|
|
|
*
|
|
|
|
|
* A função getTicketsToSync busca todos os tickets que possuem IDs tanto no GLPI quanto no ServiceNow.
|
|
|
|
|
* A função updateStatus atualiza os status de sincronização do GLPI e do ServiceNow para um ticket específico.
|
|
|
|
|
* A função getIdSyncByGlpiId retorna o ID de sincronização baseado no glpi_ticket_id.
|
|
|
|
|
* Essas funcionalidades são essenciais para manter a consistência e o rastreamento dos tickets entre os dois sistemas.
|
|
|
|
|
*/
|
|
|
|
|
|
2025-09-17 20:56:32 -03:00
|
|
|
|
|
|
|
|
module.exports = TicketSyncModel;
|