This commit is contained in:
Lizandro Guarnizo
2026-02-03 21:30:55 -05:00
parent 44423adb32
commit 1aae148396
89 changed files with 8581 additions and 7687 deletions
+82 -3
View File
@@ -87,6 +87,15 @@ class WhatsAppBotManager {
});
}
// Contador de caracteres para broadcast
const broadcastMessage = document.getElementById('broadcast-message');
const charCount = document.getElementById('char-count');
if (broadcastMessage && charCount) {
broadcastMessage.addEventListener('input', (e) => {
charCount.textContent = e.target.value.length;
});
}
// Cambio de tipo de mensaje
const messageType = document.getElementById('message-type');
if (messageType) {
@@ -695,9 +704,79 @@ class WhatsAppBotManager {
}
async sendBroadcast() {
// Funcionalidad de envío masivo deshabilitada temporalmente desde UI
this.showError('Envío masivo deshabilitado temporalmente');
return;
const selectionType = document.getElementById('broadcast-selection-type').value;
const messageType = document.getElementById('broadcast-message-type').value;
let payload = {
selection_type: selectionType,
message_type: messageType
};
// Validar según tipo de selección
if (selectionType === 'filter') {
payload.filter = document.getElementById('broadcast-filter').value;
} else {
const selectedUsers = $('#broadcast-users').val();
if (!selectedUsers || selectedUsers.length === 0) {
this.showError('Debes seleccionar al menos un usuario');
return;
}
payload.user_ids = selectedUsers;
}
// Validar según tipo de mensaje
if (messageType === 'text') {
const message = document.getElementById('broadcast-message').value;
if (!message.trim()) {
this.showError('El mensaje no puede estar vacío');
return;
}
payload.message = message;
} else {
const templateId = document.getElementById('broadcast-template').value;
if (!templateId) {
this.showError('Debes seleccionar una plantilla');
return;
}
payload.template_id = templateId;
// Recoger variables
const variables = {};
document.querySelectorAll('.broadcast-template-var').forEach(input => {
variables[input.dataset.var] = input.value;
});
payload.template_variables = variables;
}
// Confirmar envío
const targetText = selectionType === 'filter'
? `usuarios filtrados por "${payload.filter}"`
: `${payload.user_ids.length} usuario(s) seleccionado(s)`;
const messageText = messageType === 'text' ? 'mensaje de texto' : 'plantilla';
if (!confirm(`¿Enviar este ${messageText} a ${targetText}?`)) {
return;
}
try {
this.showLoading('Enviando mensajes masivos...');
const result = await this.apiCall('send_broadcast.php', 'POST', payload);
if (result.success) {
this.showSuccess(`✅ Mensajes enviados exitosamente!\nEnviados: ${result.sent_count}\nErrores: ${result.error_count}\nTotal usuarios: ${result.total_users}`);
document.getElementById('broadcast-form').reset();
$('#broadcast-users').val(null).trigger('change');
document.getElementById('broadcast-template-variables').style.display = 'none';
document.getElementById('broadcast-template-preview').style.display = 'none';
} else {
this.showError(result.error || 'Error enviando broadcast');
}
} catch (error) {
this.showError('Error enviando broadcast: ' + error.message);
} finally {
this.hideLoading();
}
}
async saveMenu() {