<?php
/**
 * Fichier  : api/categories.php
 * Auteur   : KREMER Régis
 * Version  : 2.2.0
 * Date     : 2026-02-21
 * Description : API REST — CRUD des catégories produits
 *
 * Changelog :
 *   v2.1.0 (2026-02-21) — Version initiale auditée et sécurisée
 *   v2.1.1 (2026-02-21) — Corrections sécurité (CSRF, MIME, session, migrateSuppliers)
 *   v2.2.0 (2026-02-21) — Permissions magasins, bons de commande, rapport d'écart,
 *                      import CSV, historique prix, bon de livraison multi-lignes
 */
require_once dirname(__DIR__).'/config.php';
startSession(); requireAuth();
$method=$_SERVER['REQUEST_METHOD'];
if($method!=='GET') { requireAdmin(); csrfCheck(); }
$body=json_decode(file_get_contents('php://input'),true)??[];
switch($method){
case 'GET':
    $stored=array_column(loadData('categories'),'name');
    $fromProd=array_unique(array_filter(array_column(loadData('products'),'category')));
    $all=array_unique(array_merge($stored,$fromProd));sort($all);
    jsonResponse(array_values($all));
case 'POST':
    $name=trim($body['name']??'');
    if($name==='') jsonError('Nom obligatoire.');
    foreach(loadData('categories') as $c) if(($c['name']??'')===$name) jsonError('Déjà existante.');
    jsonResponse(addItem('categories',['name'=>$name]),201);
case 'DELETE':
    $name=$body['name']??$_GET['name']??'';
    if($name==='') jsonError('Nom requis.');
    $cats=array_filter(loadData('categories'),fn($c)=>($c['name']??'')!==$name);saveData('categories',array_values($cats));
    $prods=loadData('products');foreach($prods as &$p) if(($p['category']??'')===$name) $p['category']='';saveData('products',$prods);
    jsonResponse(['ok'=>true]);
default: jsonError('Méthode non supportée.',405);
}
?>
