<?php
/**
 * API para Listar Solicitações Pendentes do Gestor (App Android)
 */

header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET');
header('Access-Control-Allow-Headers: Content-Type');

// Configuração básica de conexão
$host = 'localhost';
$dbname = 'pinheir3_controle_frotasV1.1';
$username = 'pinheir3_admin';
$password = '080880Gelboy';

try {
    // Conectar ao banco
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // Pegar gestor_id do parâmetro
    $gestorId = $_GET['gestor_id'] ?? 1; // Default para gestor ID 1
    
    // Debug: Log do gestor_id
    error_log("🔍 Buscando solicitações para gestor_id: $gestorId");
    
    // Buscar solicitações do gestor (viagens + rotas)
    $sql = "(
                SELECT 
                    sv.id,
                    sv.tecnico_id,
                    sv.veiculo_id,
                    sv.cliente,
                    COALESCE(sv.motivo, 'Motivo não informado') as motivo,
                    sv.status,
                    sv.prioridade,
                    sv.gestor_id,
                    sv.km_inicial,
                    COALESCE(sv.latitude_inicial, 0) as latitude_inicial,
                    COALESCE(sv.longitude_inicial, 0) as longitude_inicial,
                    COALESCE(sv.endereco_inicial, 'Endereço não informado') as endereco_inicial,
                    COALESCE(sv.cliente_id, 0) as cliente_id,
                    COALESCE(sv.observacoes, '') as observacoes,
                    DATE_FORMAT(sv.created_at, '%Y-%m-%d %H:%i:%s') as data_solicitacao,
                    TIMESTAMPDIFF(MINUTE, sv.created_at, NOW()) as tempo_espera_minutos,
                    'viagem' as tipo_solicitacao,
                    COALESCE(m.nome, 'Motorista') as tecnico_nome,
                    COALESCE(v.modelo, 'Veículo') as veiculo_modelo,
                    COALESCE(v.placa, 'ABC-1234') as veiculo_placa,
                    NULL as titulo_rota,
                    0 as total_clientes
                FROM solicitacoes_viagem sv
                LEFT JOIN motoristas m ON sv.tecnico_id = m.id
                LEFT JOIN veiculos v ON sv.veiculo_id = v.id
                WHERE sv.status = 'pendente' AND (sv.gestor_id = ? OR sv.gestor_id IS NULL)
            )
            UNION ALL
            (
                SELECT 
                    sr.id,
                    sr.motorista_id as tecnico_id,
                    sr.veiculo_id,
                    COALESCE(
                        (SELECT nome_cliente FROM rota_clientes WHERE solicitacao_rota_id = sr.id ORDER BY ordem_sequencia ASC, id ASC LIMIT 1),
                        sr.titulo
                    ) as cliente,
                    CASE 
                        WHEN (SELECT COUNT(*) FROM rota_clientes rc WHERE rc.solicitacao_rota_id = sr.id) = 1 
                        THEN COALESCE(sr.descricao, sr.titulo, 'Rota com 1 cliente')
                        ELSE COALESCE(sr.descricao, sr.titulo, 'Rota com múltiplos clientes')
                    END as motivo,
                    sr.status,
                    sr.prioridade,
                    sr.gestor_id,
                    0 as km_inicial,
                    0 as latitude_inicial,
                    0 as longitude_inicial,
                    'Múltiplos endereços' as endereco_inicial,
                    0 as cliente_id,
                    CAST((SELECT COUNT(*) FROM rota_clientes rc WHERE rc.solicitacao_rota_id = sr.id) AS CHAR) as observacoes,
                    COALESCE(DATE_FORMAT(sr.created_at, '%Y-%m-%d %H:%i:%s'), DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s')) as data_solicitacao,
                    COALESCE(TIMESTAMPDIFF(MINUTE, sr.created_at, NOW()), 0) as tempo_espera_minutos,
                    'rota' as tipo_solicitacao,
                    COALESCE(m.nome, 'Motorista') as tecnico_nome,
                    COALESCE(v.modelo, 'Veículo') as veiculo_modelo,
                    COALESCE(v.placa, 'ABC-1234') as veiculo_placa,
                    sr.titulo as titulo_rota,
                    (SELECT COUNT(*) FROM rota_clientes rc WHERE rc.solicitacao_rota_id = sr.id) as total_clientes
                FROM solicitacoes_rotas sr
                LEFT JOIN motoristas m ON sr.motorista_id = m.id
                LEFT JOIN veiculos v ON sr.veiculo_id = v.id
                WHERE sr.status = 'pendente' AND (sr.gestor_id = ? OR sr.gestor_id IS NULL)
            )
            ORDER BY data_solicitacao ASC";
    
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$gestorId, $gestorId]); // Dois parâmetros para os dois WHERE
    $solicitacoes = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    // Debug: Log dos resultados
    error_log("📊 Solicitações encontradas: " . count($solicitacoes));
    foreach ($solicitacoes as $i => $solicitacao) {
        error_log("📋 Solicitação $i: " . json_encode($solicitacao));
    }
    
    // Se não encontrou solicitações, verificar se há dados nas tabelas
    if (count($solicitacoes) == 0) {
        error_log("⚠️ Nenhuma solicitação encontrada - verificando dados nas tabelas...");
        
        // Verificar se há rotas pendentes
        $sqlCheckRotas = "SELECT COUNT(*) as total FROM solicitacoes_rotas WHERE status = 'pendente'";
        $stmtCheckRotas = $pdo->query($sqlCheckRotas);
        $totalRotas = $stmtCheckRotas->fetch(PDO::FETCH_ASSOC)['total'];
        error_log("📊 Total de rotas pendentes: $totalRotas");
        
        // Verificar se há viagens pendentes
        $sqlCheckViagens = "SELECT COUNT(*) as total FROM solicitacoes_viagem WHERE status = 'pendente'";
        $stmtCheckViagens = $pdo->query($sqlCheckViagens);
        $totalViagens = $stmtCheckViagens->fetch(PDO::FETCH_ASSOC)['total'];
        error_log("📊 Total de viagens pendentes: $totalViagens");
        
        // Se há dados mas não retornou, tentar query mais simples
        if ($totalRotas > 0 || $totalViagens > 0) {
            error_log("🔧 Tentando query mais simples...");
            
            $sqlSimple = "SELECT 
                sr.id,
                sr.motorista_id as tecnico_id,
                sr.veiculo_id,
                sr.titulo as cliente,
                COALESCE(sr.descricao, 'Rota com múltiplos clientes') as motivo,
                sr.status,
                sr.prioridade,
                sr.gestor_id,
                'rota' as tipo_solicitacao,
                COALESCE(m.nome, 'Motorista') as tecnico_nome,
                COALESCE(v.modelo, 'Veículo') as veiculo_modelo,
                COALESCE(v.placa, 'ABC-1234') as veiculo_placa,
                sr.titulo as titulo_rota,
                (SELECT COUNT(*) FROM rota_clientes rc WHERE rc.solicitacao_rota_id = sr.id) as total_clientes
            FROM solicitacoes_rotas sr
            LEFT JOIN motoristas m ON sr.motorista_id = m.id
            LEFT JOIN veiculos v ON sr.veiculo_id = v.id
            WHERE sr.status = 'pendente'";
            
            $stmtSimple = $pdo->query($sqlSimple);
            $solicitacoes = $stmtSimple->fetchAll(PDO::FETCH_ASSOC);
            error_log("📊 Query simples retornou: " . count($solicitacoes) . " solicitações");
        }
    }
    
    echo json_encode([
        'success' => true,
        'data' => [
            'solicitacoes_pendentes' => $solicitacoes
        ]
    ]);
    
} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['success' => false, 'message' => 'Erro interno']);
}
?> 
