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
+78
-30
+78
-30
@@ -3303,25 +3303,16 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
const clienteId = parts[0];
|
||||
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...');
|
||||
|
||||
// Usar a mesma lógica do comando NLP para mostrar opções de serviços
|
||||
// Em vez de liberar tudo diretamente, mostrar menu de seleção
|
||||
const servicosResult = await this.topsapp.obterServicosCliente(clienteId, location);
|
||||
|
||||
if (!servicosResult.success) {
|
||||
await this.bot.editMessageText(
|
||||
`🔓 **Liberando cliente ID: ${clienteId}**\n\n⏳ Aguarde...`,
|
||||
{
|
||||
chat_id: chatId,
|
||||
message_id: callbackQuery.message.message_id,
|
||||
parse_mode: 'Markdown'
|
||||
}
|
||||
);
|
||||
|
||||
const resultado = await this.topsapp.liberarCliente(clienteId, location);
|
||||
|
||||
if (!resultado.success) {
|
||||
await this.bot.editMessageText(
|
||||
`❌ **Erro ao liberar cliente**\n\n` +
|
||||
`🆔 Cliente ID: ${clienteId}\n` +
|
||||
`🌐 Instância: ${location}\n` +
|
||||
`⚠️ Erro: ${resultado.error}`,
|
||||
`❌ **Erro ao buscar serviços**\n\n` +
|
||||
`⚠️ ${servicosResult.error}`,
|
||||
{
|
||||
chat_id: chatId,
|
||||
message_id: callbackQuery.message.message_id,
|
||||
@@ -3331,28 +3322,85 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
return;
|
||||
}
|
||||
|
||||
let message = `🔓 **Cliente liberado com sucesso!**\n\n`;
|
||||
message += `🆔 Cliente ID: ${clienteId}\n`;
|
||||
message += `🌐 Instância: ${resultado.instancia}\n`;
|
||||
message += `📊 Serviços liberados: ${resultado.total}\n\n`;
|
||||
|
||||
if (resultado.servicosLiberados && resultado.servicosLiberados.length > 0) {
|
||||
message += `📋 **Detalhes das liberações:**\n`;
|
||||
resultado.servicosLiberados.forEach((servico, index) => {
|
||||
message += `${index + 1}. ${servico.descricao}: ${servico.resultado.success ? '✅ Liberado' : '❌ Erro'}\n`;
|
||||
});
|
||||
if (!servicosResult.servicos || servicosResult.servicos.length === 0) {
|
||||
await this.bot.editMessageText(
|
||||
`📋 **Nenhum serviço encontrado**\n\n` +
|
||||
`🆔 Cliente ID: ${clienteId}`,
|
||||
{
|
||||
chat_id: chatId,
|
||||
message_id: callbackQuery.message.message_id,
|
||||
parse_mode: 'Markdown'
|
||||
}
|
||||
);
|
||||
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, {
|
||||
chat_id: chatId,
|
||||
message_id: callbackQuery.message.message_id,
|
||||
parse_mode: 'Markdown'
|
||||
parse_mode: 'Markdown',
|
||||
reply_markup: {
|
||||
inline_keyboard: keyboard
|
||||
}
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ Erro ao liberar cliente:', error);
|
||||
console.error('❌ Erro ao preparar liberação:', error);
|
||||
await this.bot.editMessageText(
|
||||
`❌ **Erro interno ao liberar cliente**\n\n` +
|
||||
`❌ **Erro ao preparar liberação**\n\n` +
|
||||
`🆔 Cliente ID: ${clienteId}\n` +
|
||||
`⚠️ ${error.message}`,
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user