<?php
// api/whatsapp_api.php - API para envio de relatório via WhatsApp
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization');

require_once __DIR__ . '/../config.php';
require_once __DIR__ . '/../auth.php';
requireLogin();

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

switch($action) {
    case 'send_report':
        enviarRelatorioWhatsApp();
        break;
    case 'send_message':
        enviarMensagemSimples();
        break;
    case 'check_status':
        verificarStatus();
        break;
    case 'get_qr':
        obterQRCode();
        break;
    default:
        echo json_encode(['error' => 'Ação não especificada', 'success' => false]);
}

function enviarRelatorioWhatsApp() {
    global $os, $id;
    
    $telefone = preg_replace('/\D/', '', $_POST['telefone'] ?? '');
    $os_id = (int)($_POST['os_id'] ?? 0);
    $mensagem = $_POST['mensagem'] ?? '';
    
    if (!$telefone || strlen($telefone) < 10) {
        echo json_encode(['error' => 'Telefone inválido', '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();
    
    // Buscar fotos
    $stmtFotos = pdo()->prepare("SELECT caminho_arquivo, descricao, tipo FROM fotos_os WHERE os_id = ?");
    $stmtFotos->execute([$os_id]);
    $fotos = $stmtFotos->fetchAll();
    
    // Buscar fachada
    $stmtFachada = pdo()->prepare("SELECT caminho_arquivo FROM clientes_fotos WHERE cliente_id = ? AND tipo = 'INSTALACAO' LIMIT 1");
    $stmtFachada->execute([$os['cliente_id']]);
    $fachada = $stmtFachada->fetchColumn();
    
    // Preparar dados para envio
    $dados = [
        'telefone' => '55' . $telefone,
        'os' => [
            'numero' => $os['numero_os'],
            'tipo' => $os['tipo_os'],
            'status' => $os['status'],
            'cliente' => $os['cliente_nome'],
            'telefone_cliente' => $os['cliente_tel'],
            'cidade' => $os['endereco_cidade'],
            'plano' => $os['plano'],
            'tecnico' => $os['tecnico_nome'],
            'data_abertura' => $os['data_abertura'],
            'data_fechamento' => $os['data_fechamento'],
            'relato' => $os['relato_cliente'],
            'descricao' => $os['descricao_servico'],
            'solucao' => $os['solucao']
        ],
        'materiais' => $materiais,
        'fotos' => array_map(function($foto) {
            return [
                'base64' => imgToBase64($foto['caminho_arquivo']),
                'descricao' => $foto['descricao'],
                'tipo' => $foto['tipo']
            ];
        }, $fotos),
        'fachada' => $fachada ? imgToBase64($fachada) : null,
        'mensagem' => $mensagem
    ];
    
    // Chamar a API Node.js
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => 'http://localhost:3000/api/send-report',
        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);
    $curlError = curl_error($ch);
    curl_close($ch);
    
    if ($httpCode === 200 && $response) {
        $result = json_decode($response, true);
        echo json_encode($result);
    } else {
        // Fallback: WhatsApp Web
        $url = "https://wa.me/{$telefone}?text=" . urlencode($mensagem);
        echo json_encode([
            'success' => true,
            'fallback' => true,
            'url' => $url,
            'message' => 'API indisponível, abrindo WhatsApp Web'
        ]);
    }
}

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}";
}
?>