Primeiro Commit

This commit is contained in:
Rafael Alves Lopes 2025-10-06 13:36:15 -03:00
commit fa3fae2202
5 changed files with 109 additions and 0 deletions

7
.env Normal file
View File

@ -0,0 +1,7 @@
HUBSOFT_AUTH_URL='https://api.sothis.hubsoft.com.br/oauth/token'
HUBSOFT_CLIENT_ID=35
HUBSOFT_CLIENT_SECRET=1s62YsDijmzLz17NaKbnK1AUCKAx10RSDPMOtVcN
HUBSOFT_USERNAME=contato@vexvigilancia.com.br
HUBSOFT_PASSWORD="19T(6Jnp*"
HUBSOFT_GRANT_TYPE=password
HUBSOFT_CONSULTAR_ATENDIMENTO_URL="https://api.sothis.hubsoft.com.br/api/v1/integracao/atendimento/todos?pagina=0&itens_por_pagina=500&"

15
config/apiConfig.js Normal file
View File

@ -0,0 +1,15 @@
require('dotenv').config();
module.exports = {
hubsoft: {
authUrl: process.env.HUBSOFT_AUTH_URL,
authPayload: {
client_id: process.env.HUBSOFT_CLIENT_ID,
client_secret: process.env.HUBSOFT_CLIENT_SECRET,
username: process.env.HUBSOFT_USERNAME,
password: process.env.HUBSOFT_PASSWORD,
grant_type: process.env.HUBSOFT_GRANT_TYPE
},
consultarAtendimentoUrl: process.env.HUBSOFT_CONSULTAR_ATENDIMENTO_URL
}
};

View File

@ -0,0 +1,39 @@
const hubsoftService = require('../services/hubsoftServices.js');
const processaAtendimentos = async () => {
try {
const atendimentos = await hubsoftService.consultarAtendimento();
console.log('Resposta atendimentos:', {
type: typeof atendimentos,
isArray: Array.isArray(atendimentos),
length: Array.isArray(atendimentos) ? atendimentos.length : undefined
});
if (!Array.isArray(atendimentos) || atendimentos.length === 0) {
console.warn('Nenhum atendimento disponível para o filtro.');
return;
}
// Converter para number antes da comparação para evitar falhas por string/número
const consultarAtendimentos = atendimentos.find(atendimento => {
const status = Number(atendimento.id_atendimento_status);
const tipo = Number(atendimento.id_atendimento_tipo);
return status === 33 && tipo === 4;
});
if (!consultarAtendimentos) {
const candidatos = atendimentos.filter(a =>
Number(a.id_atendimento_status) === 33 || Number(a.id_atendimento_tipo) === 4
);
console.log('Nenhum atendimento com status 33 e tipo 4. Exemplos próximos:', candidatos.slice(0, 5));
} else {
console.log('Atendimento encontrado:', consultarAtendimentos);
}
} catch (error) {
console.error('Erro no controller ao consultar atendimentos:', error);
}
};
processaAtendimentos();

11
package.json Normal file
View File

@ -0,0 +1,11 @@
{
"name": "integra-hubsoft-glpi",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "GabrielPereira",
"license": "ISC",
"description": ""
}

View File

@ -0,0 +1,37 @@
const apiConfig = require('../config/apiConfig.js');
const axios = require('axios');
async function getAuthToken() {
try {
const response = await axios.post(apiConfig.hubsoft.authUrl, apiConfig.hubsoft.authPayload);
return response.data.access_token;
}
catch (error) {
console.error('Error fetching auth token:', error);
throw error;
}
}
const consultarAtendimento = async () => {
try {
const token = await getAuthToken();
const today = new Date();
const date = new Date(today.getFullYear(), today.getMonth(), today.getDate()).toISOString().split('T')[0];
console.log('Consulting atendimentos for date:', date);
const url = `${apiConfig.hubsoft.consultarAtendimentoUrl}data_inicio=2025-10-03&data_fim=2025-10-06`;
const response = await axios.get(url, {
headers: { Authorization: `Bearer ${token}` }
});
return response.data.atendimentos;
}catch (error) {
console.error('Error consulting atendimentos:', error);
throw error;
}
};
module.exports = {
consultarAtendimento, getAuthToken
};