2025-10-09 09:39:07 -03:00
|
|
|
// src/models/glpiModel.js
|
2025-10-08 18:55:29 -03:00
|
|
|
const dbConfig = require('../config/dbConfig.js');
|
|
|
|
|
const { logError, logInfo} = require('../utils/logger');
|
2025-10-09 09:39:07 -03:00
|
|
|
const mysql = require('mysql2/promise');
|
2025-10-08 18:55:29 -03:00
|
|
|
|
2025-10-09 09:39:07 -03:00
|
|
|
const pool = mysql.createPool({
|
2025-10-08 18:55:29 -03:00
|
|
|
host: dbConfig.glpi.databaseHost,
|
|
|
|
|
port: dbConfig.glpi.databasePort,
|
|
|
|
|
database: dbConfig.glpi.databaseName,
|
|
|
|
|
user: dbConfig.glpi.databaseUser,
|
2025-10-09 09:39:07 -03:00
|
|
|
password: dbConfig.glpi.databasePassword,
|
|
|
|
|
waitForConnections: true,
|
|
|
|
|
connectionLimit: 10,
|
|
|
|
|
queueLimit: 0
|
2025-10-08 18:55:29 -03:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
2025-10-09 09:39:07 -03:00
|
|
|
class GlpiModel {
|
|
|
|
|
|
2025-10-08 18:55:29 -03:00
|
|
|
static async insertTicket(ticketData) {
|
|
|
|
|
|
|
|
|
|
const query = `
|
|
|
|
|
INSERT INTO glpi_tickets(
|
|
|
|
|
entities_id,
|
2025-10-09 09:39:07 -03:00
|
|
|
name,
|
|
|
|
|
date,
|
2025-10-08 18:55:29 -03:00
|
|
|
date_mod,
|
|
|
|
|
status,
|
2025-10-10 09:06:44 -03:00
|
|
|
users_id_recipient,
|
2025-10-08 18:55:29 -03:00
|
|
|
content,
|
|
|
|
|
urgency,
|
|
|
|
|
impact,
|
|
|
|
|
priority,
|
|
|
|
|
type,
|
|
|
|
|
itilcategories_id,
|
|
|
|
|
date_creation,
|
|
|
|
|
slas_id_ttr
|
|
|
|
|
)
|
2025-10-09 09:39:07 -03:00
|
|
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
2025-10-08 18:55:29 -03:00
|
|
|
`;
|
|
|
|
|
|
|
|
|
|
const values = [
|
|
|
|
|
ticketData.entidades_id,
|
2025-10-10 09:06:44 -03:00
|
|
|
ticketData.titulo,
|
|
|
|
|
ticketData.created_at,
|
2025-10-08 18:55:29 -03:00
|
|
|
ticketData.date_mod,
|
|
|
|
|
ticketData.status_atendimento,
|
|
|
|
|
ticketData.user_id_recipient,
|
|
|
|
|
ticketData.descricao_abertura,
|
|
|
|
|
ticketData.urgency,
|
|
|
|
|
ticketData.impact,
|
|
|
|
|
ticketData.priority,
|
|
|
|
|
ticketData.type,
|
|
|
|
|
ticketData.itilcategories_id,
|
|
|
|
|
ticketData.date_creation,
|
2025-10-10 09:06:44 -03:00
|
|
|
37
|
2025-10-08 18:55:29 -03:00
|
|
|
];
|
2025-10-10 09:06:44 -03:00
|
|
|
console.log(query, values);
|
2025-10-09 09:39:07 -03:00
|
|
|
try {
|
|
|
|
|
const [rows] = await pool.execute(query, values);
|
|
|
|
|
logInfo('Ticket inserido com sucesso:', rows);
|
|
|
|
|
return rows;
|
|
|
|
|
} catch (error) {
|
|
|
|
|
logError('Erro ao inserir ticket:', error);
|
|
|
|
|
throw error;
|
|
|
|
|
}
|
2025-10-08 18:55:29 -03:00
|
|
|
}
|
|
|
|
|
|
2025-10-10 09:06:44 -03:00
|
|
|
static async selectEntityId(id) {
|
|
|
|
|
|
|
|
|
|
const query = `SELECT id FROM glpi_entities WHERE name LIKE ? OR name LIKE ? LIMIT 1;`;
|
|
|
|
|
const values = [`%${id} -%`, `%${id}-%`];
|
2025-10-08 18:55:29 -03:00
|
|
|
|
|
|
|
|
try {
|
2025-10-09 09:39:07 -03:00
|
|
|
const [rows] = await pool.execute(query, values);
|
2025-10-10 09:06:44 -03:00
|
|
|
if (!rows || rows.length === 0) {
|
|
|
|
|
logInfo('Entidade não encontrada para:', id);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
2025-10-09 09:39:07 -03:00
|
|
|
logInfo('Entidade encontrada:', rows[0]);
|
2025-10-10 09:06:44 -03:00
|
|
|
return Number(rows[0].id);
|
2025-10-08 18:55:29 -03:00
|
|
|
} catch (err) {
|
|
|
|
|
logError('Erro ao buscar entidade', err);
|
|
|
|
|
throw err;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-09 09:39:07 -03:00
|
|
|
module.exports = GlpiModel;
|