<?php
// ajax/enviar_whatsapp_api.php - Endpoint para envio via WhatsApp (com fallback)
require_once __DIR__ . '/../config.php';
require_once __DIR__ . '/../auth.php';
requireLogin();

header('Content-Type: application/json');

$action = $_POST['action'] ?? $_GET['action'] ?? '';

switch($action) {
    case 'send_report':
        enviarRelatorio();
        break;
    case 'check_connection':
        verificarConexao();
        break;
    default:
        echo json_encode(['error' => 'Ação inválida', 'success' => false]);
}

function enviarRelatorio() {
    $telefone = preg_replace('/\D/', '', $_POST['telefone'] ?? '');
    $os_id = (int)($_POST['os_id'] ?? 0);
    
    if (!$telefone || strlen($telefone) < 10) {
        echo json_encode(['error' => 'Telefone inválido. Use DDD + número (ex: 17999999999)', 'success' => false]);
        return;
    }
    
    if (!$os_id) {
        echo json_encode(['error' => 'OS não informada', 'success' => false]);
        return;
    }
    
    // Buscar dados da OS
    $os = getOSById($os_id);
    if (!$os) {
        echo json_encode(['error' => 'OS não encontrada', 'success' => false]);
        return;
    }
    
    // Buscar materiais
    $stmtMat = pdo()->prepare("SELECT mu.quantidade_usada, m.nome, m.unidade FROM materiais_usados_os mu JOIN materiais m ON m.id = mu.material_id WHERE mu.os_id = ?");
    $stmtMat->execute([$os_id]);
    $materiais = $stmtMat->fetchAll();
    
    $usuario = usuarioLogado();
    
    // Montar mensagem formatada para WhatsApp
    $mensagem = "📋 *RELATÓRIO DE ATENDIMENTO*\n";
    $mensagem .= "━━━━━━━━━━━━━━━━━━━━━━━━━━\n";
    $mensagem .= "🔹 *OS:* {$os['numero_os']}\n";
    $mensagem .= "🔹 *Status:* " . $os['status'] . "\n";
    $mensagem .= "🔹 *Tipo:* " . labelTipoOS($os['tipo_os']) . "\n\n";
    
    $mensagem .= "👤 *CLIENTE*\n";
    $mensagem .= "  └ Nome: {$os['cliente_nome']}\n";
    $mensagem .= "  └ Telefone: " . ($os['cliente_tel'] ?: 'Não informado') . "\n";
    $mensagem .= "  └ Cidade: {$os['endereco_cidade']}\n";
    $mensagem .= "  └ Plano: {$os['plano']}\n\n";
    
    $mensagem .= "👷 *EXECUÇÃO*\n";
    $mensagem .= "  └ Técnico: " . ($os['tecnico_nome'] ?: $usuario['nome']) . "\n";
    $mensagem .= "  └ Abertura: " . fmtData($os['data_abertura']) . "\n";
    if ($os['data_fechamento']) {
        $mensagem .= "  └ Conclusão: " . fmtData($os['data_fechamento']) . "\n";
    }
    
    if ($os['agendamento']) {
        $mensagem .= "  └ Agendamento: " . fmtData($os['agendamento']) . "\n";
    }
    $mensagem .= "\n";
    
    if ($os['relato_cliente']) {
        $relato = strlen($os['relato_cliente']) > 150 ? substr($os['relato_cliente'], 0, 150) . '...' : $os['relato_cliente'];
        $mensagem .= "📣 *RELATO DO CLIENTE*\n";
        $mensagem .= "  └ {$relato}\n\n";
    }
    
    if ($os['descricao_servico']) {
        $desc = strlen($os['descricao_servico']) > 150 ? substr($os['descricao_servico'], 0, 150) . '...' : $os['descricao_servico'];
        $mensagem .= "🔧 *SERVIÇO EXECUTADO*\n";
        $mensagem .= "  └ {$desc}\n\n";
    }
    
    if ($os['solucao']) {
        $solucao = strlen($os['solucao']) > 150 ? substr($os['solucao'], 0, 150) . '...' : $os['solucao'];
        $mensagem .= "✔ *SOLUÇÃO APLICADA*\n";
        $mensagem .= "  └ {$solucao}\n\n";
    }
    
    $mensagem .= "📦 *MATERIAIS UTILIZADOS*\n";
    if (empty($materiais)) {
        $mensagem .= "  └ Nenhum material registrado\n";
    } else {
        foreach ($materiais as $m) {
            $mensagem .= "  └ {$m['nome']}: {$m['quantidade_usada']} {$m['unidade']}\n";
        }
    }
    $mensagem .= "\n";
    
    $mensagem .= "🔗 *RELATÓRIO COMPLETO*\n";
    $mensagem .= getBaseUrl() . "/relatorio_os.php?id={$os_id}\n\n";
    
    $mensagem .= "━━━━━━━━━━━━━━━━━━━━━━━━━━\n";
    $mensagem .= "_📱 Enviado por {$usuario['nome']} via MKT Telecom_\n";
    $mensagem .= "_Sistema de Gestão de OS_";
    
    // Tentar enviar via API Node.js primeiro
    $enviado = false;
    
    // Verificar se o servidor Node.js está rodando
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => 'http://127.0.0.1:3000/api/status',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 2,
        CURLOPT_CONNECTTIMEOUT => 1
    ]);
    curl_exec($ch);
    $nodeOnline = curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200;
    curl_close($ch);
    
    if ($nodeOnline) {
        // Preparar dados para API Node.js
        $dados = [
            'telefone' => $telefone,
            'mensagem' => $mensagem
        ];
        
        $ch = curl_init();
        curl_setopt_array($ch, [
            CURLOPT_URL => 'http://127.0.0.1:3000/api/send-message',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => json_encode($dados),
            CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
            CURLOPT_TIMEOUT => 30
        ]);
        
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        if ($httpCode === 200 && $response) {
            $result = json_decode($response, true);
            if ($result['success'] ?? false) {
                $enviado = true;
                echo json_encode([
                    'success' => true,
                    'message' => '✅ Relatório enviado com sucesso via API WhatsApp!'
                ]);
                return;
            }
        }
    }
    
    // Fallback: Abrir WhatsApp Web
    if (!$enviado) {
        $url = "https://wa.me/55{$telefone}?text=" . urlencode($mensagem);
        echo json_encode([
            'success' => true,
            'fallback' => true,
            'url' => $url,
            'message' => '📱 WhatsApp Web aberto! Envie a mensagem manualmente.'
        ]);
    }
}

function verificarConexao() {
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => 'http://127.0.0.1:3000/api/status',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 3,
        CURLOPT_CONNECTTIMEOUT => 2
    ]);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($httpCode === 200 && $response) {
        echo $response;
    } else {
        echo json_encode([
            'connected' => false, 
            'message' => 'Servidor Node.js offline - Usando fallback (WhatsApp Web)',
            'timestamp' => date('Y-m-d H:i:s')
        ]);
    }
}

function getBaseUrl() {
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https://' : 'http://';
    $host = $_SERVER['HTTP_HOST'] ?? 'localhost';
    return rtrim($protocol . $host, '/');
}

function imgToBase64($caminho) {
    $path = __DIR__ . '/../' . ltrim($caminho, '/');
    if (!file_exists($path)) return null;
    $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));
    $mime = match($ext) {
        'png' => 'image/png',
        'webp' => 'image/webp',
        'gif' => 'image/gif',
        default => 'image/jpeg'
    };
    $data = base64_encode(file_get_contents($path));
    return "data:{$mime};base64,{$data}";
}
?>