TopSapp: tentativa de fix no nome do técnico
Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
1 parent
1ab39c20bb
commit
ff61085a29
1 file changed
+60
-13
+60
-13
@@ -2047,6 +2047,9 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
} else if (data.startsWith('suporte_servico_')) {
|
} else if (data.startsWith('suporte_servico_')) {
|
||||||
console.log(`🔍 Condição suporte_servico_ atendida`);
|
console.log(`🔍 Condição suporte_servico_ atendida`);
|
||||||
await this.handleSuporteServicoCallback(callbackQuery, data);
|
await this.handleSuporteServicoCallback(callbackQuery, data);
|
||||||
|
} else if (data.startsWith('suporte_tecnico_')) {
|
||||||
|
await this.bot.answerCallbackQuery(callbackQuery.id);
|
||||||
|
await this.handleSuporteTecnicoCallback(callbackQuery, data);
|
||||||
} else if (data.startsWith('fechar_suporte_cli_')) {
|
} else if (data.startsWith('fechar_suporte_cli_')) {
|
||||||
await this.bot.answerCallbackQuery(callbackQuery.id);
|
await this.bot.answerCallbackQuery(callbackQuery.id);
|
||||||
await this.handleFecharSuporteClienteCallback(callbackQuery, data);
|
await this.handleFecharSuporteClienteCallback(callbackQuery, data);
|
||||||
@@ -6266,9 +6269,9 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const tecnicos = resultado.data?.dados || resultado.dados || [];
|
const tecnicosRaw = resultado.data?.dados || resultado.dados || [];
|
||||||
|
|
||||||
if (tecnicos.length === 0) {
|
if (tecnicosRaw.length === 0) {
|
||||||
await this.bot.sendMessage(session.chatId,
|
await this.bot.sendMessage(session.chatId,
|
||||||
`❌ **Nenhum técnico ativo encontrado**\n\n` +
|
`❌ **Nenhum técnico ativo encontrado**\n\n` +
|
||||||
`🔄 Reiniciando processo...`
|
`🔄 Reiniciando processo...`
|
||||||
@@ -6277,6 +6280,14 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Normalizar campos: a API retorna id_tecnico e tecnico (nome)
|
||||||
|
const tecnicos = tecnicosRaw.map(t => ({
|
||||||
|
id: t.id ?? t.id_tecnico ?? t.codigo ?? null,
|
||||||
|
nome: t.nome || t.tecnico || t.descricao || t.name || `Técnico #${t.id ?? t.id_tecnico}`,
|
||||||
|
email: t.email || null,
|
||||||
|
_raw: t
|
||||||
|
})).filter(t => t.id !== null);
|
||||||
|
|
||||||
session.dados.tecnicos = tecnicos;
|
session.dados.tecnicos = tecnicos;
|
||||||
await this.mostrarOpcoesTecnicos(session);
|
await this.mostrarOpcoesTecnicos(session);
|
||||||
|
|
||||||
@@ -6327,17 +6338,20 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
throw new Error(`Dados de técnicos inválidos: ${typeof session.dados.tecnicos}`);
|
throw new Error(`Dados de técnicos inválidos: ${typeof session.dados.tecnicos}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const buttons = [];
|
||||||
session.dados.tecnicos.forEach((tecnico, index) => {
|
session.dados.tecnicos.forEach((tecnico, index) => {
|
||||||
// Mostrar nome do técnico
|
message += `**${index + 1}.** ${tecnico.nome}`;
|
||||||
const nome = tecnico.nome || tecnico.descricao || tecnico.tipo || tecnico.tecnico;
|
if (tecnico.email) message += ` — ${tecnico.email}`;
|
||||||
message += `**${index + 1}.** ${nome}\n`;
|
|
||||||
if (tecnico.email) message += ` 📧 ${tecnico.email}\n`;
|
|
||||||
message += `\n`;
|
message += `\n`;
|
||||||
|
buttons.push([{ text: `${index + 1}. ${tecnico.nome}`, callback_data: `suporte_tecnico_${index}` }]);
|
||||||
});
|
});
|
||||||
|
|
||||||
message += `Digite o **número** do técnico (1-${session.dados.tecnicos.length}):`;
|
message += `\nSelecione o técnico clicando no botão ou digitando o número (1-${session.dados.tecnicos.length}):`;
|
||||||
|
|
||||||
await this.bot.sendMessage(session.chatId, message, { parse_mode: 'Markdown' });
|
await this.bot.sendMessage(session.chatId, message, {
|
||||||
|
parse_mode: 'Markdown',
|
||||||
|
reply_markup: { inline_keyboard: buttons }
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -6434,7 +6448,7 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
resumo += `📋 **Serviço:** ${dados.servicoSelecionado.descricao || dados.servicoSelecionado.plano}\n`;
|
resumo += `📋 **Serviço:** ${dados.servicoSelecionado.descricao || dados.servicoSelecionado.plano}\n`;
|
||||||
resumo += `🆔 **ID Serviço:** ${dados.servicoSelecionado.id}\n`;
|
resumo += `🆔 **ID Serviço:** ${dados.servicoSelecionado.id}\n`;
|
||||||
resumo += `📁 **Categoria:** ${dados.categoriaSelecionada.descricao}\n`;
|
resumo += `📁 **Categoria:** ${dados.categoriaSelecionada.descricao}\n`;
|
||||||
resumo += `👨🔧 **Técnico:** ${dados.tecnicoSelecionado.nome || dados.tecnicoSelecionado.tecnico}\n`;
|
resumo += `👨🔧 **Técnico:** ${dados.tecnicoSelecionado.nome}\n`;
|
||||||
resumo += `📅 **Data/Hora:** ${this.dateProcessor.formatarData(dados.dataHora)}\n`;
|
resumo += `📅 **Data/Hora:** ${this.dateProcessor.formatarData(dados.dataHora)}\n`;
|
||||||
resumo += `📝 **Descrição:** ${dados.descricao}\n\n`;
|
resumo += `📝 **Descrição:** ${dados.descricao}\n\n`;
|
||||||
resumo += `Confirma a abertura do suporte? (sim/não)`;
|
resumo += `Confirma a abertura do suporte? (sim/não)`;
|
||||||
@@ -6470,12 +6484,13 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
idCliente: dados.clienteSelecionado.id,
|
idCliente: dados.clienteSelecionado.id,
|
||||||
idServico: dados.servicoSelecionado.id,
|
idServico: dados.servicoSelecionado.id,
|
||||||
idCategoria: dados.categoriaSelecionada.id,
|
idCategoria: dados.categoriaSelecionada.id,
|
||||||
descricao: `${dados.descricao}\n\nData/Hora agendada: ${this.dateProcessor.formatarData(dados.dataHora)}\nTécnico: ${dados.tecnicoSelecionado.nome || dados.tecnicoSelecionado.tecnico}`
|
descricao: `${dados.descricao}\n\nData/Hora agendada: ${this.dateProcessor.formatarData(dados.dataHora)}\nTécnico: ${dados.tecnicoSelecionado.nome}`
|
||||||
};
|
};
|
||||||
|
|
||||||
// Adicionar campos opcionais se existirem
|
// Adicionar campos opcionais se existirem
|
||||||
if (dados.tecnicoSelecionado?.id) {
|
const idTecnico = dados.tecnicoSelecionado?.id;
|
||||||
dadosSuporte.idAtendimento = dados.tecnicoSelecionado.id;
|
if (idTecnico) {
|
||||||
|
dadosSuporte.idAtendimento = parseInt(idTecnico, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dados.clienteSelecionado?.nome) {
|
if (dados.clienteSelecionado?.nome) {
|
||||||
@@ -6501,7 +6516,7 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
`👤 **Cliente:** ${dados.clienteSelecionado.nome}\n` +
|
`👤 **Cliente:** ${dados.clienteSelecionado.nome}\n` +
|
||||||
`📋 **Serviço:** ${dados.servicoSelecionado.descricao || dados.servicoSelecionado.plano}\n` +
|
`📋 **Serviço:** ${dados.servicoSelecionado.descricao || dados.servicoSelecionado.plano}\n` +
|
||||||
`📁 **Categoria:** ${dados.categoriaSelecionada.descricao}\n` +
|
`📁 **Categoria:** ${dados.categoriaSelecionada.descricao}\n` +
|
||||||
`👨🔧 **Técnico:** ${dados.tecnicoSelecionado.nome || dados.tecnicoSelecionado.tecnico}\n` +
|
`👨🔧 **Técnico:** ${dados.tecnicoSelecionado.nome}\n` +
|
||||||
`📅 **Data/Hora:** ${this.dateProcessor.formatarData(dados.dataHora)}\n\n` +
|
`📅 **Data/Hora:** ${this.dateProcessor.formatarData(dados.dataHora)}\n\n` +
|
||||||
`🎯 O suporte foi registrado no sistema!`,
|
`🎯 O suporte foi registrado no sistema!`,
|
||||||
{ parse_mode: 'Markdown' }
|
{ parse_mode: 'Markdown' }
|
||||||
@@ -7235,6 +7250,38 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
await this.processarEtapaSelecionarCategoria(sessaoAtiva.id);
|
await this.processarEtapaSelecionarCategoria(sessaoAtiva.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback: Seleção de técnico via botão inline no fluxo de suporte
|
||||||
|
*/
|
||||||
|
async handleSuporteTecnicoCallback(callbackQuery, data) {
|
||||||
|
const chatId = callbackQuery.message.chat.id;
|
||||||
|
const userId = callbackQuery.from.id;
|
||||||
|
|
||||||
|
const index = parseInt(data.replace('suporte_tecnico_', ''));
|
||||||
|
|
||||||
|
const sessaoAtiva = Array.from(this.suporteSessions.values()).find(
|
||||||
|
session => session.chatId === chatId && session.userId === userId
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!sessaoAtiva) {
|
||||||
|
await this.bot.sendMessage(chatId,
|
||||||
|
`❌ **Sessão expirada**\n\nUse o comando "abrir suporte" para iniciar novamente.`,
|
||||||
|
{ parse_mode: 'Markdown' }
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const tecnicos = sessaoAtiva.dados.tecnicos;
|
||||||
|
if (!tecnicos || index < 0 || index >= tecnicos.length) {
|
||||||
|
await this.bot.sendMessage(chatId, `❌ **Técnico inválido.** Por favor, tente novamente.`, { parse_mode: 'Markdown' });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sessaoAtiva.dados.tecnicoSelecionado = tecnicos[index];
|
||||||
|
sessaoAtiva.etapa = 'definir_data_hora';
|
||||||
|
await this.processarEtapaDefinirDataHora(sessaoAtiva.id);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback: seleção de cliente no fluxo de fechar suporte
|
* Callback: seleção de cliente no fluxo de fechar suporte
|
||||||
* formato: fechar_suporte_cli_<sessionId>_<index>
|
* formato: fechar_suporte_cli_<sessionId>_<index>
|
||||||
|
|||||||
Reference in new issue
Block a user