hubxglpi/model/hubglpiModel.js
Rafael Lopes 2eba69ac12 FEAT: Dados inseridos no banco de dados intermediário.
- Dados coletados do hubsoft agora estão sendo inseridos no bando de dados hubglpi.
- Dados sendo inseridos através  do model e processos sendo controlado pelo processcontroller
2025-10-07 17:57:23 -03:00

174 lines
5.2 KiB
JavaScript

// src/models/hubglpiModel.js
const dbConfig = require('../config/dbConfig.js');
const { logError, logInfo} = require('../utils/logger');
const { Pool } = require('pg');
const pool = new Pool({
host: dbConfig.hubglpi.databaseHost,
port: dbConfig.hubglpi.databasePort,
database: dbConfig.hubglpi.databaseName,
user: dbConfig.hubglpi.databaseUser,
password: dbConfig.hubglpi.databasePassword
});
class HubglpiModel {
static async insertTicket(ticketData) {
const query = `
INSERT INTO hubsoft_tickets (
id_atendimento,
codigo_cliente,
status_atendimento,
servico_nome,
protocolo_hub,
ticket_mundiale,
cliente_nome,
created_at
)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
RETURNING *;
`;
// Criando dicionario para traduzir status de atendimento
const statusAtendimentoMap = {
1 : 'Pendente',
2 : 'Em atendimento',
3 : 'Resolvido',
31 : 'Pendente',
32 : 'Pendente',
33 : 'Novo'};
// Substituindo o status do atendimento pelo valor correspondente
const status_atendimento = statusAtendimentoMap[ticketData.id_atendimento_status] || ticketData.id_atendimento_status;
// Limpando todos os caracteres que não sao numeros e convertendo ticket_mundiale para int
ticketData.descricao_abertura = ticketData.descricao_abertura.replace(/[^0-9]/g, '');
ticketData.ticket_mundiale = parseInt(ticketData.descricao_abertura) || null;
ticketData.codigo_cliente = parseInt(ticketData.codigo_cliente) || null;
const values = [
ticketData.id_atendimento,
ticketData.codigo_cliente,
status_atendimento,
ticketData.descricao,
ticketData.protocolo_hub,
ticketData.ticket_mundiale,
ticketData.cliente_nome,
ticketData.data_cadastro
];
console.log('Valores para inserção do ticket:', values);
try {
const res = await pool.query(query, values);
logInfo('Ticket Inserido na tabela hubsoft_tickets com sucesso:', res.rows[0]);
return res.rows[0];
} catch (err) {
logError('Erro ao inserir ticket na tabela hubsoft_tickets', err);
throw err;
}
}
static async insertSyncData(syncData) {
const query = `
INSERT INTO sync_data (
hubsoft_ticket_id
)VALUES ($1)
RETURNING *;
`;
const values = [
syncData
];
try {
const res = await pool.query(query, values);
logInfo('Dados inseridos na tabela sync_data com sucesso:', res.rows[0]);
return res.rows[0];
} catch (err) {
logError('Erro ao inserir dados na tabela sync_data', err);
throw err;
}
}
static async update_syncData(sync_update) {
const query = `
UPDATE sync_data
set glpi_ticket_id = $1,
status_sync = $2,
sync_metadata = $3,
last_sync_attempt = $4,
sync_error_message = $5
created_at = $6
updated_at = $7
WHERE id = $8
RETURNING *;
`;
const values = [
sync_update.glpi_ticket_id,
sync_update.status_sync,
sync_update.sync_metadata,
sync_update.last_sync_attempt,
sync_update.sync_error_message,
sync_update.created_at,
sync_update.updated_at,
sync_update.id
];
try {
const res = await pool.query(query, values);
logInfo('Dados atualizados na tabela sync_data com sucesso:', res.rows[0]);
return res.rows[0];
} catch (err) {
logError('Erro ao atualizar dados na tabela sync_data', err);
throw err;
}
}
static async get_idSyncByHubsoftId(hubsoft_ticket_id) {
const query = `
SELECT id FROM sync_data
WHERE hubsoft_ticket_id = $1;
`;
const values = [hubsoft_ticket_id];
try {
const res = await pool.query(query, values);
logInfo('ID de sync_data obtido com sucesso:', res.rows[0]);
return res.rows[0] ? res.rows[0].id : null;
} catch (err) {
logError('Erro ao obter ID de sync_data', err);
throw err;
}
}
static async get_idSyncByGlpiID(glpi_ticket_id) {
const query = `
SELECT id FROM sync_data
WHERE glpi_ticket_id = $1;
`;
const values = [glpi_ticket_id];
try {
const res = await pool.query(query, values);
logInfo('ID de sync_data obtido com sucesso:', res.rows[0]);
return res.rows[0] ? res.rows[0].id : null;
}
catch (err) {
logError('Erro ao obter ID de sync_data', err);
throw err;
}
}
}
module.exports = HubglpiModel;