function awp_enqueue_cuadros_assets() { wp_enqueue_style('awp-cuadros-css', AWP_PLUGIN_URL . 'assets/css/shortcode-cuadros.css', [], '1.0.0'); wp_enqueue_script('awp-cuadros-js', AWP_PLUGIN_URL . 'assets/js/shortcode-cuadros.js', [], '1.0.0', true); wp_localize_script('awp-cuadros-js', 'awpCuadros', [ 'ajaxurl' => admin_url('admin-ajax.php'), 'nonceSumar' => wp_create_nonce('awp_sumar_envio'), 'nonceEnviar' => wp_create_nonce('awp_enviar_mensajes'), ]); } function awp_render_clientes_sumar_shortcode($atts = []) { awp_enqueue_shortcode_assets(); awp_enqueue_cuadros_assets(); global $wpdb; function awp_render_clientes_programados_shortcode($atts = []) { awp_enqueue_shortcode_assets(); awp_enqueue_cuadros_assets(); global $wpdb; // AJAX handlers para programar y enviar mensajes desde los shortcodes add_action('wp_ajax_awp_programar_envio', 'awp_ajax_programar_envio'); add_action('wp_ajax_awp_enviar_mensajes', 'awp_ajax_enviar_mensajes'); function awp_ajax_programar_envio() { if (!current_user_can('manage_options')) { wp_send_json_error(['msg' => 'No autorizado']); } check_ajax_referer('awp_sumar_envio'); $ids = isset($_POST['ids']) && is_array($_POST['ids']) ? array_map('intval', $_POST['ids']) : []; if (empty($ids)) { wp_send_json_error(['msg' => 'No hay clientes seleccionados']); } global $wpdb; $enviosTable = awp_table('envios'); $promocionesTable = awp_table('promociones'); $promo = $wpdb->get_row("SELECT * FROM {$promocionesTable} WHERE activa = 1 AND (fecha_inicio IS NULL OR fecha_inicio <= CURDATE()) AND (fecha_fin IS NULL OR fecha_fin >= CURDATE()) ORDER BY creada DESC LIMIT 1", ARRAY_A); if (!$promo) { wp_send_json_error(['msg' => 'No hay promoción activa']); } $insertados = 0; foreach ($ids as $cid) { $wpdb->insert($enviosTable, [ 'cliente_id' => $cid, 'promocion_id' => $promo['id'], 'estado' => 'pendiente', 'fecha_envio' => current_time('mysql'), ]); $insertados++; } wp_send_json_success(['msg' => "Programados: $insertados clientes."]); } function awp_ajax_enviar_mensajes() { if (!current_user_can('manage_options')) { wp_send_json_error(['msg' => 'No autorizado']); } check_ajax_referer('awp_enviar_mensajes'); $ids = isset($_POST['ids']) && is_array($_POST['ids']) ? array_map('intval', $_POST['ids']) : []; if (empty($ids)) { wp_send_json_error(['msg' => 'No hay clientes seleccionados']); } global $wpdb; $enviosTable = awp_table('envios'); $clientesTable = awp_table('clientes'); $promocionesTable = awp_table('promociones'); $promo = $wpdb->get_row("SELECT * FROM {$promocionesTable} WHERE activa = 1 AND (fecha_inicio IS NULL OR fecha_inicio <= CURDATE()) AND (fecha_fin IS NULL OR fecha_fin >= CURDATE()) ORDER BY creada DESC LIMIT 1", ARRAY_A); if (!$promo) { wp_send_json_error(['msg' => 'No hay promoción activa']); } $enviados = 0; foreach ($ids as $cid) { // Buscar el envío pendiente $envio = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$enviosTable} WHERE cliente_id = %d AND estado = 'pendiente' LIMIT 1", $cid), ARRAY_A); if (!$envio) continue; $cliente = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$clientesTable} WHERE id = %d", $cid), ARRAY_A); if (!$cliente) continue; $mensaje = str_replace( ['{nombre}', '{promocion}', '{fecha}'], [(string)$cliente['nombre'], (string)$promo['titulo'], wp_date('d/m/Y')], (string)awp_get_settings()['plantilla_mensaje'] ); $resultado = awp_send_whatsapp($cliente['telefono'], $mensaje); $wpdb->update($enviosTable, [ 'estado' => $resultado['estado'], 'mensaje' => $mensaje, 'error' => $resultado['error'], 'raw_respuesta' => $resultado['raw'], 'fecha_envio' => current_time('mysql'), ], ['id' => $envio['id']]); if (!empty($resultado['ok'])) { $wpdb->update($clientesTable, ['ultimo_contacto' => current_time('mysql')], ['id' => $cid]); awp_increment_messages_today(); $enviados++; } } wp_send_json_success(['msg' => "Enviados: $enviados mensajes."]); } Recursos Ahora - Ahora Wellness

Recursos Ahora

¿Hoy ya hiciste tu pausa laboral? Te regalamos una forma guiada de hacerla de la mano de Carolina. Las pausas laborales son “interrupciones”, que se realizan durante la jornada de

¡Consultanos!