<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

require_once 'includes/auth.php';
require_once 'config/database.php';
require_once 'includes/functions.php';

header('Content-Type: application/json');

try {
    $fiche_id = filter_input(INPUT_POST, 'fiche_id', FILTER_VALIDATE_INT);
    if (!$fiche_id) {
        throw new Exception('ID de fiche manquant. Enregistrez d\'abord la fiche.');
    }

    $pdo = getPDO();
    $stmt = $pdo->prepare("SELECT id FROM fiches WHERE id = ?");
    $stmt->execute([$fiche_id]);
    if (!$stmt->fetch()) {
        throw new Exception('Fiche introuvable.');
    }

    // Vérifier le nombre d'images existantes
    $stmt = $pdo->prepare("SELECT COUNT(*) FROM fiches_images WHERE fiche_id = ?");
    $stmt->execute([$fiche_id]);
    $count = $stmt->fetchColumn();
    if ($count >= 5) {
        throw new Exception('Vous ne pouvez pas ajouter plus de 5 images par fiche.');
    }

    if (!isset($_FILES['image']) || $_FILES['image']['error'] !== UPLOAD_ERR_OK) {
        throw new Exception('Aucun fichier ou erreur d\'upload.');
    }

    $file = $_FILES['image'];
    $allowed = ['image/jpeg', 'image/png', 'image/jpg'];
    if (!in_array($file['type'], $allowed)) {
        throw new Exception('Format non autorisé (JPEG/PNG).');
    }

    $upload_dir = 'uploads/fiches_images/';
    if (!is_dir($upload_dir)) {
        mkdir($upload_dir, 0755, true);
    }

    $ext = pathinfo($file['name'], PATHINFO_EXTENSION);
    $filename = 'img_' . $fiche_id . '_' . time() . '.' . $ext;
    $path = $upload_dir . $filename;

    if (!move_uploaded_file($file['tmp_name'], $path)) {
        throw new Exception('Impossible de déplacer le fichier. Vérifiez les droits du dossier.');
    }

    $stmt = $pdo->prepare("SELECT MAX(ordre) FROM fiches_images WHERE fiche_id = ?");
    $stmt->execute([$fiche_id]);
    $max_ordre = $stmt->fetchColumn();
    $new_ordre = ($max_ordre === null) ? 0 : $max_ordre + 1;

    $stmt = $pdo->prepare("INSERT INTO fiches_images (fiche_id, image_path, ordre) VALUES (?, ?, ?)");
    if (!$stmt->execute([$fiche_id, $path, $new_ordre])) {
        unlink($path);
        throw new Exception('Erreur base de données.');
    }

    logAction($pdo, $_SESSION['user_id'], 'upload_image_fiche', "Fiche $fiche_id, image $filename");
    echo json_encode(['success' => true]);

} catch (Exception $e) {
    echo json_encode(['success' => false, 'error' => $e->getMessage()]);
}