<?php
/**
 * API: Mise à jour d'une rotation existante
 * POST /apipcc/rotations_update.php
 * Paramètres: rotation_id, field (HeureSortie/HeureEntree), chauffeur_id, modifie_par, autorisation (optionnel)
 */
require_once __DIR__ . '/config.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    sendError('Méthode non autorisée', 405);
}

$data = getPostData();
$rotation_id = $data['rotation_id'] ?? '';
$field = $data['field'] ?? ''; // 'HeureSortie' ou 'HeureEntree'
$chauffeur_id = $data['chauffeur_id'] ?? '';
$modifie_par = $data['modifie_par'] ?? '';
$autorisation = $data['autorisation'] ?? null;

if (empty($rotation_id) || empty($field) || empty($chauffeur_id) || empty($modifie_par)) {
    sendError('rotation_id, field, chauffeur_id et modifie_par sont requis');
}

if (!in_array($field, ['HeureSortie', 'HeureEntree'])) {
    sendError('field doit être "HeureSortie" ou "HeureEntree"');
}

$conn = getConnection(DB_NAME_PARCS);

$champ_chauffeur = ($field === 'HeureSortie') ? 'ChauffeurID_Sortie' : 'ChauffeurID_Entree';

if ($autorisation) {
    $sql = "UPDATE rotations SET $champ_chauffeur = ?, $field = NOW(), Autorisation = ?, ModifierPar = ?, DateModif = NOW() WHERE RotationID = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("sssi", $chauffeur_id, $autorisation, $modifie_par, $rotation_id);
} else {
    $sql = "UPDATE rotations SET $champ_chauffeur = ?, $field = NOW(), ModifierPar = ?, DateModif = NOW() WHERE RotationID = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssi", $chauffeur_id, $modifie_par, $rotation_id);
}

if ($stmt->execute()) {
    if ($stmt->affected_rows > 0) {
        sendSuccess(['RotationID' => $rotation_id], 'Rotation mise à jour avec succès');
    } else {
        sendError('Aucune modification effectuée (rotation non trouvée ou déjà à jour)');
    }
} else {
    sendError('Erreur lors de la mise à jour: ' . $stmt->error);
}

$stmt->close();
$conn->close();