<?php
// whatsapp_button.php - VERSÃO MODIFICADA PARA INCLUSÃO NO MENU

session_start();

/**
 * Botão de Conexão do WhatsApp Business
 * 
 * Componente reutilizável para conectar com WhatsApp Business API
 * Inclua este arquivo nas páginas que precisam do botão de conexão
 */

class WhatsAppConnect {
    private $pdo;
    private $clienteId;
    private $tenant_id;
    
    public function __construct($pdo = null) {
        // Inicializar conexão com banco se não for fornecida
        if (!$pdo) {
            require_once 'conexao.php';
            $this->pdo = $pdo;
        } else {
            $this->pdo = $pdo;
        }
        
        // Obter dados da sessão
        $this->clienteId = $_SESSION['cliente_id'] ?? 0;
        $this->tenant_id = $_SESSION['tenant_id'] ?? ($_SESSION['cliente_id'] ?? 0);
    }
    
    /**
     * Verifica se o WhatsApp já está configurado para este tenant
     */
    public function isConnected() {
        try {
            $stmt = $this->pdo->prepare("SELECT * FROM whatsapp_config WHERE tenant_id = ? AND ativo = 1");
            $stmt->execute([$this->tenant_id]);
            return $stmt->fetch(PDO::FETCH_ASSOC);
        } catch (Exception $e) {
            error_log("Erro ao verificar conexão WhatsApp: " . $e->getMessage());
            return false;
        }
    }
    
    /**
     * Renderiza apenas o item do menu (sem todo o HTML do botão)
     */
    public function renderMenuItem() {
        $isConnected = $this->isConnected();
        $status = $isConnected ? 'connected' : 'disconnected';
        $iconColor = $isConnected ? 'text-success' : 'text-secondary';
        
        return '
        <li class="menu-item-sidebar">
            <a href="javascript:void(0);" class="submenu-trigger" onclick="openWhatsAppModal()">
                <i class="fab fa-whatsapp ' . $iconColor . '"></i> 
                <span class="menu-text">WhatsApp Business</span>
                ' . ($isConnected ? '<span class="badge bg-success" style="margin-left: auto; font-size: 0.7em;">Conectado</span>' : '') . '
            </a>
        </li>
        ';
    }
    
    /**
     * Renderiza o modal de configuração (deve ser colocado no final do body)
     */
    public function renderModal() {
        $isConnected = $this->isConnected();
        $config = $isConnected ?: [];
        
        return '
        <!-- Modal de Configuração WhatsApp -->
        <div class="modal fade" id="whatsappModal" tabindex="-1" aria-hidden="true">
            <div class="modal-dialog modal-lg">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title">
                            <i class="fab fa-whatsapp text-success"></i>
                            Configuração do WhatsApp Business
                        </h5>
                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                    </div>
                    <div class="modal-body">
                        ' . ($isConnected ? '
                        <div class="alert alert-success">
                            <i class="fas fa-check-circle"></i>
                            <strong>WhatsApp Business Conectado</strong>
                            <p class="mb-0">Seu WhatsApp Business está configurado e pronto para uso.</p>
                        </div>
                        ' : '
                        <div class="alert alert-warning">
                            <i class="fas fa-exclamation-triangle"></i>
                            <strong>WhatsApp Business Não Conectado</strong>
                            <p class="mb-0">Configure o WhatsApp Business para enviar mensagens automáticas.</p>
                        </div>
                        ') . '
                        
                        <div class="alert alert-info">
                            <h6><i class="fas fa-info-circle"></i> Como obter as credenciais:</h6>
                            <ol>
                                <li>Acesse o <a href="https://developers.facebook.com/apps/" target="_blank">Facebook Developer</a></li>
                                <li>Crie um aplicativo do tipo "Business"</li>
                                <li>Adicione o produto "WhatsApp"</li>
                                <li>Gere um Token de Acesso Permanente</li>
                                <li>Copie o Phone Number ID e Business Account ID</li>
                            </ol>
                        </div>
                        
                        <form id="whatsappConfigForm">
                            <div class="row">
                                <div class="col-md-12 mb-3">
                                    <label for="access_token" class="form-label">Access Token *</label>
                                    <input type="password" class="form-control" id="access_token" 
                                           value="' . (!empty($config['access_token']) ? '•••••••••••••••' : '') . '"
                                           placeholder="EAA..." required>
                                    <div class="form-text">Token de acesso permanente da API</div>
                                </div>
                                
                                <div class="col-md-6 mb-3">
                                    <label for="phone_number_id" class="form-label">Phone Number ID *</label>
                                    <input type="text" class="form-control" id="phone_number_id" 
                                           value="' . ($config['phone_number_id'] ?? '') . '"
                                           placeholder="123456789012345" required>
                                </div>
                                
                                <div class="col-md-6 mb-3">
                                    <label for="business_account_id" class="form-label">Business Account ID *</label>
                                    <input type="text" class="form-control" id="business_account_id" 
                                           value="' . ($config['business_account_id'] ?? '') . '"
                                           placeholder="987654321098765" required>
                                </div>
                                
                                <div class="col-md-12 mb-3">
                                    <label for="webhook_verify_token" class="form-label">Webhook Verify Token</label>
                                    <input type="text" class="form-control" id="webhook_verify_token" 
                                           value="' . ($config['webhook_verify_token'] ?? '') . '"
                                           placeholder="meu_token_secreto">
                                    <div class="form-text">Token para verificar o webhook (opcional)</div>
                                </div>
                            </div>
                            
                            <div class="alert alert-warning">
                                <i class="fas fa-exclamation-triangle"></i>
                                <strong>Atenção:</strong> Estas credenciais devem ser mantidas em segredo!
                            </div>
                        </form>
                    </div>
                    <div class="modal-footer">
                        ' . ($isConnected ? '
                        <button type="button" class="btn btn-danger" onclick="disconnectWhatsApp()">
                            <i class="fas fa-power-off"></i> Desconectar
                        </button>
                        ' : '') . '
                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
                        <button type="button" class="btn btn-primary" onclick="saveWhatsAppConfig()">
                            <i class="fas fa-save"></i> ' . ($isConnected ? 'Atualizar' : 'Salvar') . ' Configuração
                        </button>
                    </div>
                </div>
            </div>
        </div>
        
        <script>
        function openWhatsAppModal() {
            const modal = new bootstrap.Modal(document.getElementById("whatsappModal"));
            modal.show();
        }
        
        function saveWhatsAppConfig() {
            const formData = {
                access_token: document.getElementById("access_token").value,
                phone_number_id: document.getElementById("phone_number_id").value,
                business_account_id: document.getElementById("business_account_id").value,
                webhook_verify_token: document.getElementById("webhook_verify_token").value || "whatsapp_webhook_token"
            };
            
            // Validação básica
            if (!formData.access_token || !formData.phone_number_id || !formData.business_account_id) {
                alert("Por favor, preencha todos os campos obrigatórios (*)");
                return;
            }
            
            // Mostrar loading
            const saveBtn = document.querySelector("#whatsappModal .btn-primary");
            const originalText = saveBtn.innerHTML;
            saveBtn.innerHTML = \'<i class="fas fa-spinner fa-spin"></i> Salvando...\';
            saveBtn.disabled = true;
            
            // Enviar para API
            fetch("whatsapp_api.php", {
                method: "POST",
                headers: {
                    "Content-Type": "application/json",
                },
                body: JSON.stringify(formData)
            })
            .then(response => response.json())
            .then(data => {
                if (data.success) {
                    // Fechar modal e recarregar a página
                    bootstrap.Modal.getInstance(document.getElementById("whatsappModal")).hide();
                    alert(data.message);
                    location.reload();
                } else {
                    alert("Erro: " + data.message);
                }
            })
            .catch(error => {
                alert("Erro na conexão: " + error);
            })
            .finally(() => {
                saveBtn.innerHTML = originalText;
                saveBtn.disabled = false;
            });
        }
        
        function disconnectWhatsApp() {
            if (confirm("Tem certeza que deseja desconectar o WhatsApp Business? Esta ação desativará o envio de mensagens.")) {
                fetch("whatsapp_api.php", {
                    method: "DELETE"
                })
                .then(response => response.json())
                .then(data => {
                    if (data.success) {
                        alert(data.message);
                        location.reload();
                    } else {
                        alert("Erro: " + data.message);
                    }
                })
                .catch(error => {
                    alert("Erro na conexão: " + error);
                });
            }
        }
        </script>
        ';
    }
    
    /**
     * Mascara o número de telefone para exibição
     */
    private function getMaskedPhoneNumber($phoneNumberId) {
        $clean = preg_replace('/[^0-9]/', '', $phoneNumberId);
        if (strlen($clean) > 10) {
            return '*******' . substr($clean, -4);
        }
        return $clean;
    }
}
?>