<?php
// /telefonia/api/sincronizar_chamadas.php
// Script para sincronizar chamadas via API (pode ser executado por cron)

require_once dirname(__DIR__, 3) . '/conexao.php';
session_start();

function buscarChamadasZenvia($data_inicio, $data_fim, $token) {
    $url = "https://voice-api.zenvia.com/chamada/relatorio?data_inicio={$data_inicio}&data_fim={$data_fim}";
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Accept: application/json',
        'Access-Token: ' . $token
    ]);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($httpCode == 200) {
        return json_decode($response, true);
    }
    
    return null;
}

function salvarChamada($conn, $chamada, $tenant_id) {
    $call_id = $chamada['id'];
    $duracao = $chamada['duracao_segundos'] ?? 0;
    $status = $chamada['status_geral'] ?? 'finalizada';
    $custo = $chamada['preco'] ?? 0;
    $data_inicio = $chamada['data_criacao'] ?? date('Y-m-d H:i:s');
    $data_fim = $chamada['data_termino'] ?? null;
    $url_gravacao = $chamada['url_gravacao'] ?? null;
    
    // Extrair números
    $numero_origem = $chamada['origem']['numero'] ?? '';
    $numero_destino = $chamada['destino']['numero'] ?? '';
    
    // Verificar se já existe
    $stmt = $conn->prepare("SELECT id FROM chamadas_telefonicas WHERE call_id_zenvia = ?");
    $stmt->bind_param("s", $call_id);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows == 0) {
        // Inserir
        $insert = $conn->prepare("
            INSERT INTO chamadas_telefonicas 
            (tenant_id, numero_origem, numero_destino, duracao, status, custo, call_id_zenvia, data_hora_inicio, data_hora_fim, gravacao_url)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        ");
        $insert->bind_param("ississssss", 
            $tenant_id, $numero_origem, $numero_destino, $duracao, $status, 
            $custo, $call_id, $data_inicio, $data_fim, $url_gravacao
        );
        $insert->execute();
        $insert->close();
    } else {
        // Atualizar
        $update = $conn->prepare("
            UPDATE chamadas_telefonicas 
            SET duracao = ?, status = ?, custo = ?, data_hora_fim = ?, gravacao_url = ?
            WHERE call_id_zenvia = ?
        ");
        $update->bind_param("isdsss", $duracao, $status, $custo, $data_fim, $url_gravacao, $call_id);
        $update->execute();
        $update->close();
    }
    
    $stmt->close();
}

// Executar sincronização
$token = 'bac7690d70ce44e43906b9069562c47f'; // Seu token
$tenant_id = 1; // Ajuste conforme necessário

// Buscar chamadas das últimas 24 horas
$data_fim = date('Y-m-d');
$data_inicio = date('Y-m-d', strtotime('-1 day'));

$resultado = buscarChamadasZenvia($data_inicio, $data_fim, $token);

if ($resultado && isset($resultado['dados']['relatorio'])) {
    foreach ($resultado['dados']['relatorio'] as $chamada) {
        salvarChamada($conn, $chamada, $tenant_id);
    }
    echo "Sincronização concluída: " . count($resultado['dados']['relatorio']) . " chamadas\n";
} else {
    echo "Erro ao buscar chamadas\n";
}
?>