<?php
/**
 * API pour la gestion des Trajets (table Trajets)
 * Utilisée pour récupérer les destinations par LigneID
 */

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");

require_once __DIR__ . '/../../../config/database.php';

$action = $_GET['action'] ?? '';
$method = $_SERVER['REQUEST_METHOD'];

try {
    $db = Database::getInstance();

    if ($method === 'GET') {
        if ($action === 'getByLigneID') {
            $ligneID = $_GET['ligneID'] ?? '';
            $siteID = $_GET['site'] ?? '';
            
            if (empty($ligneID)) {
                echo json_encode(['success' => false, 'message' => 'LigneID requis']);
                exit;
            }
            
            $sql = "SELECT * FROM Trajets WHERE LigneID = ?";
            $params = [$ligneID];
            
            if (!empty($siteID) && $siteID !== 'Siège') {
                $sql .= " AND Site = ?";
                $params[] = $siteID;
            }
            
            $sql .= " ORDER BY ArretArriveeID";
            
            $result = $db->select($sql, $params);
            
            echo json_encode(['success' => true, 'data' => $result]);
            exit;
        }
        
        // Récupérer les arrêts (destinations) par modèle de bus : BusGares.Model_Bus -> Id_Ligne -> Trajets
        if ($action === 'getByModelBus') {
            $modelBus = $_GET['modelBus'] ?? '';
            $siteID = $_GET['site'] ?? '';
            
            if (empty($modelBus)) {
                echo json_encode(['success' => false, 'message' => 'modelBus requis']);
                exit;
            }
            
            // 1) Trouver Id_Ligne dans BusGares par Modele_Bus
            $sqlBus = "SELECT Id_Ligne FROM BusGares WHERE Modele_Bus = ?";
            $paramsBus = [$modelBus];
            if (!empty($siteID) && $siteID !== 'Siège') {
                $sqlBus .= " AND Site = ?";
                $paramsBus[] = $siteID;
            }
            $sqlBus .= " LIMIT 1";
            
            $busRow = $db->selectOne($sqlBus, $paramsBus);
            if (!$busRow || empty($busRow['Id_Ligne'])) {
                echo json_encode(['success' => true, 'data' => [], 'message' => 'Ligne non trouvée pour ce bus']);
                exit;
            }
            
            $ligneID = $busRow['Id_Ligne'];
            
            // 2) Récupérer tous les trajets (arrêts d'arrivée) pour cette ligne
            $sql = "SELECT * FROM Trajets WHERE LigneID = ?";
            $params = [$ligneID];
            if (!empty($siteID) && $siteID !== 'Siège') {
                $sql .= " AND Site = ?";
                $params[] = $siteID;
            }
            $sql .= " ORDER BY ArretArriveeID";
            
            $result = $db->select($sql, $params);
            
            echo json_encode(['success' => true, 'data' => $result, 'ligneID' => $ligneID]);
            exit;
        }
        
        if ($action === 'list') {
            $siteID = $_GET['site'] ?? '';
            
            $sql = "SELECT * FROM Trajets WHERE 1=1";
            $params = [];
            
            if (!empty($siteID) && $siteID !== 'Siège') {
                $sql .= " AND Site = ?";
                $params[] = $siteID;
            }
            
            $sql .= " ORDER BY LigneID, ArretArriveeID";
            
            $result = $db->select($sql, $params);
            
            echo json_encode(['success' => true, 'data' => $result]);
            exit;
        }
        
        http_response_code(400);
        echo json_encode(['success' => false, 'message' => 'Action non reconnue']);
        exit;
    }

    http_response_code(405);
    echo json_encode(['success' => false, 'message' => 'Méthode non supportée']);

} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['success' => false, 'message' => 'Erreur: ' . $e->getMessage()]);
}
?>