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

// Para requisições OPTIONS (preflight)
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    http_response_code(200);
    exit();
}

// Conectar ao banco
$host = 'localhost';
$dbname = 'pinheir3_controle_frotasV1.1';
$username = 'pinheir3_admin';
$password = '080880Gelboy';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);
    
    $acao = $_GET['acao'] ?? '';
    $viagemId = $_GET['viagemId'] ?? null;
    
    if ($acao === 'checklist_veiculo') {
        buscarChecklists($pdo, $viagemId);
    } else {
        echo json_encode([
            'success' => false,
            'message' => 'Ação não reconhecida',
            'timestamp' => date('Y-m-d H:i:s')
        ]);
    }
    
} catch (Exception $e) {
    http_response_code(500);
    echo json_encode([
        'success' => false,
        'message' => 'Erro do servidor: ' . $e->getMessage(),
        'timestamp' => date('Y-m-d H:i:s')
    ]);
}

function buscarChecklists($pdo, $viagemId = null) {
    try {
        $where = ['1=1'];
        $params = [];
        
        if ($viagemId) {
            $where[] = 'c.viagem_id = ?';
            $params[] = $viagemId;
        }
        
        $sql = "SELECT c.*, 
                       COUNT(f.id) as total_fotos
                FROM checklist_veiculo c
                LEFT JOIN checklist_fotos f ON c.id = f.checklist_id
                WHERE " . implode(' AND ', $where) . "
                GROUP BY c.id
                ORDER BY c.created_at DESC 
                LIMIT 50";
                
        $stmt = $pdo->prepare($sql);
        $stmt->execute($params);
        $checklists = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        // Para cada checklist, buscar os itens
        foreach ($checklists as &$checklist) {
            // Fazer parse do JSON dos itens
            $itensJson = $checklist['itens_json'] ?? '[]';
            $itens = json_decode($itensJson, true);
            
            if (is_array($itens)) {
                $checklist['itens'] = $itens;
                
                // Calcular estatísticas
                $conformes = 0;
                $naoConformes = 0;
                $total = count($itens);
                
                foreach ($itens as $item) {
                    if (isset($item['status'])) {
                        if ($item['status'] === 'OK') {
                            $conformes++;
                        } elseif ($item['status'] === 'PROBLEMA') {
                            $naoConformes++;
                        }
                    }
                }
                
                $checklist['estatisticas'] = [
                    'conformes' => $conformes,
                    'naoConformes' => $naoConformes,
                    'total' => $total,
                    'percentual' => $total > 0 ? round(($conformes / $total) * 100, 1) : 0
                ];
            } else {
                $checklist['itens'] = [];
                $checklist['estatisticas'] = [
                    'conformes' => 0,
                    'naoConformes' => 0,
                    'total' => 0,
                    'percentual' => 0
                ];
            }
            
            // Buscar fotos do checklist
            $stmtFotos = $pdo->prepare("SELECT * FROM checklist_fotos WHERE checklist_id = ?");
            $stmtFotos->execute([$checklist['id']]);
            $checklist['fotos'] = $stmtFotos->fetchAll();
        }
        
        echo json_encode([
            'success' => true,
            'message' => 'Checklists recuperados com sucesso',
            'data' => $checklists,
            'total' => count($checklists),
            'filtros' => [
                'viagemId' => $viagemId
            ],
            'timestamp' => date('Y-m-d H:i:s')
        ]);
        
    } catch (Exception $e) {
        throw new Exception('Erro ao buscar checklists: ' . $e->getMessage());
    }
}
?>
