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_')) {
|
||||
console.log(`🔍 Condição suporte_servico_ atendida`);
|
||||
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_')) {
|
||||
await this.bot.answerCallbackQuery(callbackQuery.id);
|
||||
await this.handleFecharSuporteClienteCallback(callbackQuery, data);
|
||||
@@ -6266,9 +6269,9 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
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,
|
||||
`❌ **Nenhum técnico ativo encontrado**\n\n` +
|
||||
`🔄 Reiniciando processo...`
|
||||
@@ -6277,6 +6280,14 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
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;
|
||||
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}`);
|
||||
}
|
||||
|
||||
const buttons = [];
|
||||
session.dados.tecnicos.forEach((tecnico, index) => {
|
||||
// Mostrar nome do técnico
|
||||
const nome = tecnico.nome || tecnico.descricao || tecnico.tipo || tecnico.tecnico;
|
||||
message += `**${index + 1}.** ${nome}\n`;
|
||||
if (tecnico.email) message += ` 📧 ${tecnico.email}\n`;
|
||||
message += `**${index + 1}.** ${tecnico.nome}`;
|
||||
if (tecnico.email) message += ` — ${tecnico.email}`;
|
||||
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 += `🆔 **ID Serviço:** ${dados.servicoSelecionado.id}\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 += `📝 **Descrição:** ${dados.descricao}\n\n`;
|
||||
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,
|
||||
idServico: dados.servicoSelecionado.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
|
||||
if (dados.tecnicoSelecionado?.id) {
|
||||
dadosSuporte.idAtendimento = dados.tecnicoSelecionado.id;
|
||||
const idTecnico = dados.tecnicoSelecionado?.id;
|
||||
if (idTecnico) {
|
||||
dadosSuporte.idAtendimento = parseInt(idTecnico, 10);
|
||||
}
|
||||
|
||||
if (dados.clienteSelecionado?.nome) {
|
||||
@@ -6501,7 +6516,7 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
`👤 **Cliente:** ${dados.clienteSelecionado.nome}\n` +
|
||||
`📋 **Serviço:** ${dados.servicoSelecionado.descricao || dados.servicoSelecionado.plano}\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` +
|
||||
`🎯 O suporte foi registrado no sistema!`,
|
||||
{ parse_mode: 'Markdown' }
|
||||
@@ -7235,6 +7250,38 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
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
|
||||
* formato: fechar_suporte_cli_<sessionId>_<index>
|
||||
|
||||
Reference in new issue
Block a user