- 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
174 lines
5.2 KiB
JavaScript
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;
|