diff --git a/backend/src/controllers/HitController.ts b/backend/src/controllers/HitController.ts index 9950778..68cd0a4 100644 --- a/backend/src/controllers/HitController.ts +++ b/backend/src/controllers/HitController.ts @@ -28,16 +28,100 @@ export const hit = async (req: Request, res: Response): Promise => { console.log('req.boy: ', req.body) console.log('req.boy: ', req.body['centro_custo']) - + console.log('ACTION: ', req.body['action']) if (req.headers["auth"] === '0424bd59b807674191e7d77572075f33') { - if (req.body['action'] === 'closed') { + let contact = null + + try { + + contact = await ContactByCustomField(req.body['centro_custo']) + + } catch (error) { + + console.log('There was an error on try get centro_custo info: ', error) } - else { - let contact = await ContactByCustomField(req.body['centro_custo']) + if (req.body['action'] === 'atdfechou') { + + console.log('FECHOU') + + try { + + console.log('THE CONTACT: ', contact) + + if (contact) { + + let data = req.body + let str = '' + let str2 = '' + + // const exclude = ["action", "centro_custo", "n_chamado_web", "historico"]; + + // for (const key in data) { + + // if (exclude.includes(`${key}`)) { + // continue + // } + + // str += `${key.replace('hostname', 'cliente')}: ${data[key]}\n` + + // } + + str = `*Cliente*: ${contact['contact.name']}` + + let historico = data['historico'] + + for (const key in historico) { + + const hist = Object.keys(historico[key]); + + hist.forEach((keys, index) => { + + str2 += `*${keys}*: ${historico[key][keys]}\n` + + }); + + str2 += '\n' + + } + + console.log('--------------> str: ', str) + console.log('--------------> str2: ', str2) + + const botInfo = await BotIsOnQueue('botqueue') + + let ticket = await ShowTicketServiceByContactId(contact['contact.id']) + + if (ticket.id && ticket.status == 'pending') { + + await sendMessageHitMonitoring(`*Olá. Somos a TI Espaçolaser.*\nO chamado da sua loja ${contact['contact.name']} foi fechado pela operadora. Abaixo seguem informações sobre o incidente.\n\n*Situação do chamado na Operadora*\n\n*Incidente:*\n\n ${str}\n\n*Atualizações*:\n\n${str2}`, ticket); + + } + else if (!ticket.id) { + + ticket = await CreateTicketService({ contactId: contact['contact.id'], status: 'open', userId: botInfo.userIdBot }); + + console.log('botInfo.botQueueId: ', botInfo.botQueueId) + + await UpdateTicketService({ ticketData: { queueId: botInfo.botQueueId }, ticketId: ticket.id }); + + await sendMessageHitMonitoring(`*Olá. Somos a TI Espaçolaser.*\nO chamado da sua loja ${contact['contact.name']} foi fechado pela operadora. Abaixo seguem informações sobre o incidente.\n\n*Situação do chamado na Operadora*\n\n*Incidente:*\n\n ${str}\n\n*Atualizações*:\n\n${str2}`, ticket); + + + } + + } + + } catch (error) { + + console.log(`Error on try sending the monitor message closed: `, error) + + } + } + else { console.log('--------------> contact: ', contact) @@ -58,7 +142,7 @@ export const hit = async (req: Request, res: Response): Promise => { if (ticket.id && ticket.status == 'pending') { - await sendMessageHitMonitoring(response, ticket, contact); + await sendMessageHitMonitoring(`*Olá. Somos a TI Espaçolaser.*\nIdentificamos em nossos monitoramentos que há um problema na internet da sua loja ${contact['contact.name']} e já estamos resolvendo. Abaixo seguem informações sobre o incidente para que possam acompanhar.\n\n*Situação do chamado na Operadora*\n\n*Incidente*:\n\n ${response[0].header}\n${response[0].body}`, ticket); } else if (!ticket.id) { @@ -69,7 +153,7 @@ export const hit = async (req: Request, res: Response): Promise => { await UpdateTicketService({ ticketData: { queueId: botInfo.botQueueId }, ticketId: ticket.id }); - await sendMessageHitMonitoring(response, ticket, contact); + await sendMessageHitMonitoring(`*Olá. Somos a TI Espaçolaser.*\nIdentificamos em nossos monitoramentos que há um problema na internet da sua loja ${contact['contact.name']} e já estamos resolvendo. Abaixo seguem informações sobre o incidente para que possam acompanhar.\n\n*Situação do chamado na Operadora*\n\n*Incidente*:\n\n ${response[0].header}\n${response[0].body}`, ticket); } @@ -93,13 +177,13 @@ export const hit = async (req: Request, res: Response): Promise => { return res.status(200).json({ "message": "Ok" }); }; -async function sendMessageHitMonitoring(response: any, ticket: Ticket, contact: any) { +async function sendMessageHitMonitoring(msg: string, ticket: Ticket) { - if (response && response.length > 0) { + if (msg && msg.length > 0) { console.log('MESSAGE WILL BE SENT!') - await SendWhatsAppMessage({ body: `*Olá. Somos a TI Espaçolaser.*\nIdentificamos em nossos monitoramentos que há um problema na internet da sua loja ${contact['contact.name']} e já estamos resolvendo. Abaixo seguem informações sobre o incidente para que possam acompanhar.\n\n*Situação do chamado na Operadora*\n\n*Incidente*:\n\n ${response[0].header}\n${response[0].body}`, ticket }); + await SendWhatsAppMessage({ body: msg, ticket }); }