up
This commit is contained in:
+82
-3
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user