topsapp: fix liberar cliente no handler
Signed-off-by: Rodrigo B. de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
1 parent
bae6adefcb
commit
81603be0a5
1 file changed
+77
-29
+77
-29
@@ -3303,25 +3303,16 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
const clienteId = parts[0];
|
const clienteId = parts[0];
|
||||||
const location = parts[1] ? parts[1].replace(/_/g, ' ') : '';
|
const location = parts[1] ? parts[1].replace(/_/g, ' ') : '';
|
||||||
|
|
||||||
await this.bot.answerCallbackQuery(callbackQuery.id, 'Processando liberação...');
|
await this.bot.answerCallbackQuery(callbackQuery.id, 'Carregando opções...');
|
||||||
|
|
||||||
await this.bot.editMessageText(
|
// Usar a mesma lógica do comando NLP para mostrar opções de serviços
|
||||||
`🔓 **Liberando cliente ID: ${clienteId}**\n\n⏳ Aguarde...`,
|
// Em vez de liberar tudo diretamente, mostrar menu de seleção
|
||||||
{
|
const servicosResult = await this.topsapp.obterServicosCliente(clienteId, location);
|
||||||
chat_id: chatId,
|
|
||||||
message_id: callbackQuery.message.message_id,
|
|
||||||
parse_mode: 'Markdown'
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
const resultado = await this.topsapp.liberarCliente(clienteId, location);
|
if (!servicosResult.success) {
|
||||||
|
|
||||||
if (!resultado.success) {
|
|
||||||
await this.bot.editMessageText(
|
await this.bot.editMessageText(
|
||||||
`❌ **Erro ao liberar cliente**\n\n` +
|
`❌ **Erro ao buscar serviços**\n\n` +
|
||||||
`🆔 Cliente ID: ${clienteId}\n` +
|
`⚠️ ${servicosResult.error}`,
|
||||||
`🌐 Instância: ${location}\n` +
|
|
||||||
`⚠️ Erro: ${resultado.error}`,
|
|
||||||
{
|
{
|
||||||
chat_id: chatId,
|
chat_id: chatId,
|
||||||
message_id: callbackQuery.message.message_id,
|
message_id: callbackQuery.message.message_id,
|
||||||
@@ -3331,28 +3322,85 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let message = `🔓 **Cliente liberado com sucesso!**\n\n`;
|
if (!servicosResult.servicos || servicosResult.servicos.length === 0) {
|
||||||
message += `🆔 Cliente ID: ${clienteId}\n`;
|
await this.bot.editMessageText(
|
||||||
message += `🌐 Instância: ${resultado.instancia}\n`;
|
`📋 **Nenhum serviço encontrado**\n\n` +
|
||||||
message += `📊 Serviços liberados: ${resultado.total}\n\n`;
|
`🆔 Cliente ID: ${clienteId}`,
|
||||||
|
{
|
||||||
if (resultado.servicosLiberados && resultado.servicosLiberados.length > 0) {
|
chat_id: chatId,
|
||||||
message += `📋 **Detalhes das liberações:**\n`;
|
message_id: callbackQuery.message.message_id,
|
||||||
resultado.servicosLiberados.forEach((servico, index) => {
|
parse_mode: 'Markdown'
|
||||||
message += `${index + 1}. ${servico.descricao}: ${servico.resultado.success ? '✅ Liberado' : '❌ Erro'}\n`;
|
}
|
||||||
});
|
);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Verificar se há serviços bloqueados
|
||||||
|
const servicosBloqueados = servicosResult.servicos.filter(s =>
|
||||||
|
s.status === 'bloqueado' || s.statusNumerico === 2
|
||||||
|
);
|
||||||
|
|
||||||
|
if (servicosBloqueados.length === 0) {
|
||||||
|
await this.bot.editMessageText(
|
||||||
|
`✅ **Nenhum serviço bloqueado**\n\n` +
|
||||||
|
`🆔 Cliente ID: ${clienteId}\n` +
|
||||||
|
`📊 Todos os ${servicosResult.servicos.length} serviços estão liberados.`,
|
||||||
|
{
|
||||||
|
chat_id: chatId,
|
||||||
|
message_id: callbackQuery.message.message_id,
|
||||||
|
parse_mode: 'Markdown'
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Criar menu de seleção de serviços
|
||||||
|
let message = `🔓 **Selecionar Serviços para Liberar**\n\n`;
|
||||||
|
message += `🆔 **Cliente ID**: ${clienteId}\n`;
|
||||||
|
message += `🌐 **Instância**: ${location}\n\n`;
|
||||||
|
message += `� **Serviços bloqueados** (${servicosBloqueados.length}):\n\n`;
|
||||||
|
|
||||||
|
const keyboard = [];
|
||||||
|
|
||||||
|
servicosBloqueados.forEach((servico, index) => {
|
||||||
|
message += `${index + 1}. **${servico.nome}**\n`;
|
||||||
|
message += ` 💰 Valor: R$ ${servico.valorMensal}\n`;
|
||||||
|
message += ` 🆔 ID: ${servico.id}\n\n`;
|
||||||
|
|
||||||
|
// Botão para liberar este serviço específico
|
||||||
|
keyboard.push([{
|
||||||
|
text: `🔓 Liberar ${servico.nome}`,
|
||||||
|
callback_data: `confirm_unblock_service_${servico.id}_${clienteId}_${location.replace(/\s+/g, '_')}`
|
||||||
|
}]);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Botão para liberar todos
|
||||||
|
if (servicosBloqueados.length > 1) {
|
||||||
|
keyboard.push([{
|
||||||
|
text: `🔓 Liberar TODOS os serviços (${servicosBloqueados.length})`,
|
||||||
|
callback_data: `confirm_unblock_all_${clienteId}_${location.replace(/\s+/g, '_')}`
|
||||||
|
}]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Botão cancelar
|
||||||
|
keyboard.push([{
|
||||||
|
text: '❌ Cancelar',
|
||||||
|
callback_data: 'cancel_action'
|
||||||
|
}]);
|
||||||
|
|
||||||
await this.bot.editMessageText(message, {
|
await this.bot.editMessageText(message, {
|
||||||
chat_id: chatId,
|
chat_id: chatId,
|
||||||
message_id: callbackQuery.message.message_id,
|
message_id: callbackQuery.message.message_id,
|
||||||
parse_mode: 'Markdown'
|
parse_mode: 'Markdown',
|
||||||
|
reply_markup: {
|
||||||
|
inline_keyboard: keyboard
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('❌ Erro ao liberar cliente:', error);
|
console.error('❌ Erro ao preparar liberação:', error);
|
||||||
await this.bot.editMessageText(
|
await this.bot.editMessageText(
|
||||||
`❌ **Erro interno ao liberar cliente**\n\n` +
|
`❌ **Erro ao preparar liberação**\n\n` +
|
||||||
`🆔 Cliente ID: ${clienteId}\n` +
|
`🆔 Cliente ID: ${clienteId}\n` +
|
||||||
`⚠️ ${error.message}`,
|
`⚠️ ${error.message}`,
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in new issue
Block a user