REFACTOR: Alterei a ordem das instruções no glpiModel e descomentei a função que executa o glpiService no app.js.
This commit is contained in:
parent
40d0b2f4c6
commit
9926aee962
28248
servicenow_requests.json
Normal file
28248
servicenow_requests.json
Normal file
File diff suppressed because it is too large
Load Diff
9418
servicenow_tickets.json
Normal file
9418
servicenow_tickets.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -11,7 +11,7 @@ logInfo('Aplicação iniciada', {
|
||||
async function main() {
|
||||
try {
|
||||
await snServices();
|
||||
//await glpiServices();
|
||||
await glpiServices();
|
||||
|
||||
} catch (error) {
|
||||
logInfo('Erro na aplicação:', error);
|
||||
|
||||
@ -44,43 +44,42 @@ class TicketGlpiModel {
|
||||
// src/models/ticketGlpiModel.js
|
||||
|
||||
static async createTicket(ticketData) {
|
||||
const connection = await glpiPool.getConnection();
|
||||
const connection = await glpiPool.getConnection();
|
||||
|
||||
try {
|
||||
await connection.beginTransaction();
|
||||
try {
|
||||
await connection.beginTransaction();
|
||||
|
||||
// 1. Preparar dados para o GLPI (usando valores fixos para teste)
|
||||
const glpiTicketData = {
|
||||
entities_id: 1371, // Valor fixo para teste
|
||||
name: ticketData.short_description || 'Sem título',
|
||||
date: ticketData.opened_at || new Date(),
|
||||
date_mod: ticketData.updated_at || new Date(),
|
||||
status: TicketGlpiModel.mapStatus(ticketData.state || '1'),
|
||||
users_id_recipient: 917, // Valor fixo para teste
|
||||
requesttypes_id: 1,
|
||||
content: ticketData.description || '',
|
||||
urgency: 3, // Valor fixo
|
||||
impact: 3, // Valor fixo
|
||||
priority: TicketGlpiModel.mapPriority(ticketData.priority || '3'),
|
||||
type: 1, // Incidente
|
||||
itilcategories_id: TicketGlpiModel.mapCategory(ticketData.short_description),
|
||||
global_validation: 1,
|
||||
date_creation: ticketData.opened_at || new Date()
|
||||
};
|
||||
// 1. Preparar dados para o GLPI (usando valores fixos para teste)
|
||||
const glpiTicketData = {
|
||||
entities_id: 1371, // Valor fixo para teste
|
||||
name: ticketData.short_description || 'Sem título',
|
||||
date: ticketData.opened_at || new Date(),
|
||||
date_mod: ticketData.updated_at || new Date(),
|
||||
status: TicketGlpiModel.mapStatus(ticketData.state || '1'),
|
||||
users_id_recipient: 917, // Valor fixo para teste
|
||||
requesttypes_id: 1,
|
||||
content: ticketData.description || '',
|
||||
urgency: 3, // Valor fixo
|
||||
impact: 3, // Valor fixo
|
||||
priority: TicketGlpiModel.mapPriority(ticketData.priority || '3'),
|
||||
type: 1, // Incidente
|
||||
itilcategories_id: TicketGlpiModel.mapCategory(ticketData.short_description),
|
||||
global_validation: 1,
|
||||
date_creation: ticketData.opened_at || new Date()
|
||||
};
|
||||
|
||||
await connection.execute(requesterQuery, [ticketId, 917]); // Default user
|
||||
// Construir a query manualmente
|
||||
// Construir a query dinamicamente e inserir o ticket principal
|
||||
const fields = Object.keys(glpiTicketData).join(', ');
|
||||
const placeholders = Object.keys(glpiTicketData).map(() => '?').join(', ');
|
||||
const values = Object.values(glpiTicketData);
|
||||
|
||||
const ticketQuery = `INSERT INTO glpi_tickets (${fields}) VALUES (${placeholders})`;
|
||||
|
||||
// Inserir ticket principal
|
||||
// Inserir ticket principal e obter insertId
|
||||
const [ticketResult] = await connection.execute(ticketQuery, values);
|
||||
const ticketId = ticketResult.insertId;
|
||||
|
||||
// Adicionar requerente
|
||||
// Adicionar requerente (usa ticketId agora que foi criado)
|
||||
await connection.execute(
|
||||
`INSERT INTO glpi_tickets_users
|
||||
(tickets_id, users_id, type, use_notification, alternative_email)
|
||||
@ -110,26 +109,26 @@ try {
|
||||
}
|
||||
}
|
||||
|
||||
// Verificar se ticket já existe no GLPI
|
||||
static async ticketExists(snTicketNumber) {
|
||||
try {
|
||||
const query = `
|
||||
SELECT id FROM glpi_tickets
|
||||
WHERE name LIKE ? OR content LIKE ?
|
||||
LIMIT 1
|
||||
`;
|
||||
// Verificar se ticket já existe no GLPI
|
||||
static async ticketExists(snTicketNumber) {
|
||||
try {
|
||||
const query = `
|
||||
SELECT id FROM glpi_tickets
|
||||
WHERE name LIKE ? OR content LIKE ?
|
||||
LIMIT 1
|
||||
`;
|
||||
|
||||
const [rows] = await glpiPool.execute(query, [
|
||||
`%${snTicketNumber}%`,
|
||||
`%${snTicketNumber}%`
|
||||
]);
|
||||
const [rows] = await glpiPool.execute(query, [
|
||||
`%${snTicketNumber}%`,
|
||||
`%${snTicketNumber}%`
|
||||
]);
|
||||
|
||||
return rows.length > 0 ? rows[0].id : null;
|
||||
} catch (error) {
|
||||
logError(error, 'Erro ao verificar ticket existente');
|
||||
return null;
|
||||
return rows.length > 0 ? rows[0].id : null;
|
||||
} catch (error) {
|
||||
logError(error, 'Erro ao verificar ticket existente');
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = TicketGlpiModel;
|
||||
Loading…
Reference in New Issue
Block a user