<?php
require_once 'conexao.php';
require_once 'verificador_fluxos_automatizados.php';

class IntegracaoFormularios {
    private $conn;
    
    public function __construct($conn) {
        $this->conn = $conn;
    }
    
    /**
     * Chamar quando um questionário for respondido com sucesso
     */
    public function onQuestionarioRespondido($formulario_id, $cliente_id, $tenant_id, $pontuacao = null) {
        error_log("📝 Questionário respondido - Formulário: $formulario_id, Cliente: $cliente_id");
        
        $dados_adicionais = [
            'tenant_id' => $tenant_id,
            'questionario_id' => $formulario_id,
            'pontuacao' => $pontuacao,
            'data_resposta' => date('Y-m-d H:i:s')
        ];
        
        // Determinar o tipo de evento baseado na pontuação (se aplicável)
        $evento_tipo = $this->determinarTipoEvento($formulario_id, $pontuacao);
        
        // Executar fluxos automatizados
        $atividades_criadas = criarAtividadesPorFluxo($this->conn, $evento_tipo, $cliente_id, $dados_adicionais);
        
        if ($atividades_criadas > 0) {
            error_log("🎉 $atividades_criadas atividades criadas automaticamente");
            
            // Registrar no log do cliente
            $this->registrarLogCliente($cliente_id, $formulario_id, $atividades_criadas);
        }
        
        return $atividades_criadas;
    }
    
    private function determinarTipoEvento($formulario_id, $pontuacao) {
        // Se há pontuação e nota mínima configurada, verificar qualificação
        if ($pontuacao !== null) {
            $nota_minima = $this->obterNotaMinimaFormulario($formulario_id);
            if ($nota_minima && $pontuacao >= $nota_minima) {
                return 'cliente_qualificado';
            }
        }
        
        // Caso contrário, usar evento genérico
        return 'formulario_enviado';
    }
    
    private function obterNotaMinimaFormulario($formulario_id) {
        $sql = "SELECT nota_minima FROM formularios WHERE id = ?";
        $stmt = $this->conn->prepare($sql);
        $stmt->bind_param("i", $formulario_id);
        $stmt->execute();
        $result = $stmt->get_result();
        $formulario = $result->fetch_assoc();
        $stmt->close();
        
        return $formulario['nota_minima'] ?? null;
    }
    
    private function registrarLogCliente($cliente_id, $formulario_id, $atividades_criadas) {
        $sql = "INSERT INTO cliente_logs (cliente_id, usuario_id, nome_usuario, acao, detalhes, tenant_id) 
                VALUES (?, 1, 'Sistema', 'atividades_automaticas', ?, ?)";
        
        $detalhes = "$atividades_criadas atividades criadas automaticamente após resposta do questionário $formulario_id";
        $tenant_id = $_SESSION['tenant_id'] ?? 0;
        
        $stmt = $this->conn->prepare($sql);
        $stmt->bind_param("isi", $cliente_id, $detalhes, $tenant_id);
        $stmt->execute();
        $stmt->close();
    }
}

// Função de conveniência para uso rápido
function dispararFluxosPorQuestionario($conn, $formulario_id, $cliente_id, $tenant_id) {
    $integracao = new IntegracaoFormularios($conn);
    return $integracao->onQuestionarioRespondido($formulario_id, $cliente_id, $tenant_id);
}
?>