<?php
/**
 * API de Coletas - InovTracking
 * Descrição: Retorna das filiais
 */

header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');

// Incluir conexão
include_once('./classes/conexao.php');

/**
 * Validar token de autenticação
 */
function validarToken($token) {
    $tokenValido = 'ajr123';
    return $token === $tokenValido;
}

/**
 * Retornar erro em JSON
 */
function retornarErro($codigo, $mensagem) {
    echo json_encode([
        'code' => $codigo,
        'message' => $mensagem,
        'success' => false
    ], JSON_UNESCAPED_UNICODE);
    die();
}

/**
 * Sanitizar entrada
 */
function sanitizar($valor) {
    return htmlspecialchars(strip_tags(trim($valor)));
}

// ============================================================================
// VALIDAÇÕES
// ============================================================================

// Verificar se token foi enviado
if (!isset($_GET['token'])) {
    retornarErro('400', 'Token não informado!');
}

// Validar token
if (!validarToken($_GET['token'])) {
    retornarErro('401', 'Token inválido!');
}

// ============================================================================
// PROCESSAR REQUEST
// ============================================================================

try {
    // Obter dados do POST
    $json = file_get_contents("php://input");
    $dados = json_decode($json);
    
    if (!$dados || !is_array($dados) || count($dados) === 0) {
        retornarErro('400', 'Dados inválidos!');
    }
    
    $item = $dados[0];

    $usuario = isset($item->usuario) ? sanitizar($item->usuario) : null;
    
    // Validar usuario
    if (empty($usuario)) {
        echo json_encode([
            'success' => true,
            'total' => 0,
            'filiais' => []
        ], JSON_UNESCAPED_UNICODE);
        die();
    }
         
    $sql = " SELECT a.id,
       a.cod_filial,
       a.sigla,
       a.nome,
       a.estado,
       a.cidade,
       a.bairro,
       a.endereco,
       a.numero,
       a.cep,
       a.telefone,
       a.latitude,
       a.longitude,
       a.checkin
       FROM filiais a
       JOIN usuarios b ON a.cod_filial = b.filial
       WHERE b.usuario = :usuario ";
    $stmt = $conn->prepare($sql);
    $stmt->bindParam(':usuario', $usuario, PDO::PARAM_STR);
    $stmt->execute();
    
    $filiais = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
    // ============================================================================
    // RETORNAR RESULTADO
    // ============================================================================
    
    echo json_encode([
        'success' => true,
        'total' => count($filiais),
        'filiais' => $filiais
    ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
    
} catch (PDOException $e) {
    retornarErro('500', 'Erro no banco de dados: ' . $e->getMessage());
} catch (Exception $e) {
    retornarErro('500', 'Erro interno: ' . $e->getMessage());
}
?>