<?php
// ajax/caixa_detalhes.php
// Retorna JSON com clientes e fotos de uma caixa (CTO) pelo nome ou coordenadas
require_once __DIR__ . '/../functions.php';
require_once __DIR__ . '/../auth.php';
requireLogin();

header('Content-Type: application/json; charset=utf-8');

$nome = trim($_GET['nome'] ?? '');
$lat  = (float)($_GET['lat'] ?? 0);
$lng  = (float)($_GET['lng'] ?? 0);

$clientes = [];
$fotos    = [];

try {
    // Clientes vinculados a esta caixa pelo nome (cto_nome) ou por proximidade GPS
    if ($nome) {
        $stmt = pdo()->prepare(
            "SELECT id, nome, plano,
                    CASE WHEN ativo = 1 AND bloqueado = 0 THEN 'ativo'
                         WHEN bloqueado = 1 THEN 'bloqueado'
                         ELSE 'inativo' END AS status
             FROM clientes
             WHERE cto_nome = ?
             ORDER BY nome
             LIMIT 100"
        );
        $stmt->execute([$nome]);
        $clientes = $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

    // Fallback: busca por proximidade (raio ~50 m) se cto_nome não retornar
    if (empty($clientes) && $lat && $lng) {
        $stmt = pdo()->prepare(
            "SELECT id, nome, plano,
                    CASE WHEN ativo = 1 AND bloqueado = 0 THEN 'ativo'
                         WHEN bloqueado = 1 THEN 'bloqueado'
                         ELSE 'inativo' END AS status,
                    (6371000 * ACOS(
                        COS(RADIANS(?)) * COS(RADIANS(latitude)) *
                        COS(RADIANS(longitude) - RADIANS(?)) +
                        SIN(RADIANS(?)) * SIN(RADIANS(latitude))
                    )) AS dist_m
             FROM clientes
             WHERE latitude IS NOT NULL AND longitude IS NOT NULL
             HAVING dist_m < 50
             ORDER BY dist_m
             LIMIT 50"
        );
        $stmt->execute([$lat, $lng, $lat]);
        $clientes = $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
} catch (Throwable $e) {
    // Coluna cto_nome pode não existir ainda
    $clientes = [];
}

// Fotos da caixa (pasta uploads/fotos_caixas/{nome_sanitizado})
try {
    $nomeSan = preg_replace('/[^A-Za-z0-9_\-]/', '_', $nome);
    $dir     = __DIR__ . "/../uploads/fotos_caixas/{$nomeSan}";
    if (is_dir($dir)) {
        foreach (glob("{$dir}/*.{jpg,jpeg,png,webp}", GLOB_BRACE) as $f) {
            $fotos[] = ['url' => "uploads/fotos_caixas/{$nomeSan}/" . basename($f)];
        }
    }
} catch (Throwable $e) {}

echo json_encode([
    'nome'     => $nome,
    'clientes' => $clientes,
    'fotos'    => $fotos,
], JSON_UNESCAPED_UNICODE);
