<?php
/**
 * Evolution WhatsApp API Proxy
 * Configuração dinâmica - detecta ambiente automaticamente
 */

// Detectar ambiente (staging ou produção)
$isStaging = (strpos($_SERVER['HTTP_HOST'] ?? '', 'dev.') !== false);
$currentDomain = $isStaging ? 'https://dev.duolead.com.br' : 'https://duolead.com.br';
$sessionName = $isStaging ? 'montaloja_staging_session' : 'montaloja_session';

// Anti-cache headers
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0');
header('Pragma: no-cache');
header('Expires: 0');

// CORS Headers - dinâmico baseado no ambiente
header('Access-Control-Allow-Origin: ' . $currentDomain);
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
header('Access-Control-Allow-Credentials: true');
header('Content-Type: application/json; charset=UTF-8');

// Handle preflight
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit;
}

// Configurar sessão ANTES de iniciar - usar save_path explícito
ini_set('session.save_path', '/opt/alt/php83/var/lib/php/session');
session_set_cookie_params([
    'lifetime' => 0,
    'path' => '/',
    'domain' => '',
    'secure' => true,
    'httponly' => true,
    'samesite' => 'Lax'
]);

session_name($sessionName);
session_start();

// Verificar auth
if (!isset($_SESSION['user_id'])) {
    http_response_code(401);
    echo json_encode([
        'error' => 'Não autorizado',
        'debug' => [
            'session_id' => session_id(),
            'save_path' => session_save_path(),
            'has_user' => isset($_SESSION['user_id']),
            'session_data' => array_keys($_SESSION),
            'environment' => $isStaging ? 'staging' : 'production',
            'session_name' => $sessionName
        ]
    ]);
    exit;
}

// Config Evolution API
$evolutionApiUrl = 'http://evolution.duolead.com.br';
$evolutionApiKey = 'hUYip4g6bxkfhxW5IpSjT66EkhTf3H0Q';

// Parâmetros
$action = $_GET['action'] ?? $_POST['action'] ?? '';
$instance = $_GET['instance'] ?? $_POST['instance'] ?? '';

if (!$action) {
    echo json_encode(['error' => 'Ação não especificada']);
    exit;
}

// Função para fazer requisição à API Evolution
function evolutionRequest($method, $endpoint, $data = null) {
    global $evolutionApiUrl, $evolutionApiKey;
    
    $url = rtrim($evolutionApiUrl, '/') . '/' . ltrim($endpoint, '/');
    
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTPHEADER => [
            'Content-Type: application/json',
            'apikey: ' . $evolutionApiKey
        ]
    ]);
    
    if ($method === 'POST') {
        curl_setopt($ch, CURLOPT_POST, true);
        if ($data) {
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        }
    } elseif ($method === 'DELETE') {
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
    }
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $error = curl_error($ch);
    curl_close($ch);
    
    if ($error) {
        return ['error' => $error, 'httpCode' => 0];
    }
    
    $decoded = json_decode($response, true);
    return $decoded !== null ? $decoded : ['raw' => $response, 'httpCode' => $httpCode];
}

// Processar ações
switch ($action) {
    case 'status':
        // Verificar status da instância
        $result = evolutionRequest('GET', "instance/connectionState/{$instance}");
        echo json_encode($result);
        break;
        
    case 'create':
        // Criar instância
        $data = [
            'instanceName' => $instance,
            'qrcode' => true,
            'integration' => 'WHATSAPP-BAILEYS'
        ];
        $result = evolutionRequest('POST', 'instance/create', $data);
        echo json_encode($result);
        break;
        
    case 'connect':
        // Conectar instância existente
        $result = evolutionRequest('GET', "instance/connect/{$instance}");
        echo json_encode($result);
        break;
        
    case 'qrcode':
        // Obter QR Code
        $result = evolutionRequest('GET', "instance/connect/{$instance}");
        echo json_encode($result);
        break;
        
    case 'disconnect':
        // Desconectar
        $result = evolutionRequest('DELETE', "instance/logout/{$instance}");
        echo json_encode($result);
        break;
        
    case 'delete':
        // Deletar instância
        $result = evolutionRequest('DELETE', "instance/delete/{$instance}");
        echo json_encode($result);
        break;
        
    case 'restart':
        // Reiniciar instância
        $result = evolutionRequest('POST', "instance/restart/{$instance}");
        echo json_encode($result);
        break;
        
    case 'send':
        // Enviar mensagem
        $number = $_POST['number'] ?? '';
        $message = $_POST['message'] ?? '';
        
        if (!$number || !$message) {
            echo json_encode(['error' => 'Número e mensagem são obrigatórios']);
            break;
        }
        
        $data = [
            'number' => preg_replace('/[^0-9]/', '', $number),
            'text' => $message
        ];
        
        $result = evolutionRequest('POST', "message/sendText/{$instance}", $data);
        echo json_encode($result);
        break;
        
    default:
        echo json_encode(['error' => 'Ação desconhecida: ' . $action]);
}
