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,
|
2025-10-10 15:56:40 -03:00
|
|
|
2,
|
2025-10-08 18:55:29 -03:00
|
|
|
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-09 09:39:07 -03:00
|
|
|
try {
|
2025-10-13 00:42:38 -03:00
|
|
|
const [rows] = await pool.execute(query, values)
|
2025-10-09 09:39:07 -03:00
|
|
|
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) {
|
2025-10-13 00:42:38 -03:00
|
|
|
logInfo(`Entidade não encontrada para: ${id} `);
|
2025-10-10 09:06:44 -03:00
|
|
|
return null;
|
|
|
|
|
}
|
2025-10-13 00:42:38 -03:00
|
|
|
|
|
|
|
|
logInfo(`Entidade encontrada para: ${id}`);
|
|
|
|
|
|
|
|
|
|
|
2025-10-10 09:06:44 -03:00
|
|
|
return Number(rows[0].id);
|
2025-10-08 18:55:29 -03:00
|
|
|
} catch (err) {
|
2025-10-13 00:42:38 -03:00
|
|
|
logError(`Erro ao buscar entidade: ${err}`);
|
2025-10-08 18:55:29 -03:00
|
|
|
throw err;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-10-10 15:05:05 -03:00
|
|
|
|
|
|
|
|
static async insertGroupTickets(glpiTicketId) {
|
|
|
|
|
const query = `
|
|
|
|
|
INSERT INTO glpi_groups_tickets (tickets_id, groups_id, type)
|
|
|
|
|
VALUES (?, ?, ?)
|
|
|
|
|
`;
|
|
|
|
|
const values = [glpiTicketId, 25, 2];
|
|
|
|
|
try {
|
2025-10-13 00:42:38 -03:00
|
|
|
const [rows] = await pool.query(query, values);
|
|
|
|
|
return rows && rows.insertId ? rows.insertId : null;
|
2025-10-10 15:05:05 -03:00
|
|
|
}
|
|
|
|
|
catch (err) {
|
2025-10-13 00:42:38 -03:00
|
|
|
logError(`Erro ao Adicionar Grupo Operação NOC: ${err}`);
|
2025-10-10 15:05:05 -03:00
|
|
|
throw err;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-08 18:55:29 -03:00
|
|
|
}
|
|
|
|
|
|
2025-10-09 09:39:07 -03:00
|
|
|
module.exports = GlpiModel;
|