<?php use App\Core\Csrf; ?>
<link rel="stylesheet" href="/public/assets/css/axiom-ui.css">
<link rel="stylesheet" href="/public/assets/css/axiom-reference.css">
<?php if(in_array(($selected['code']??''),['salles','poles'],true)): ?><link rel="stylesheet" href="/public/assets/css/cda-rooms-9618.css"><?php endif; ?>
<?php if(($selected['code']??'')==='poles'): ?><link rel="stylesheet" href="/public/assets/css/cda-poles-9619.css"><?php endif; ?>
<main class="ref-page">
<div class="axiom-page-nav">
  <div class="axiom-page-nav__trail">
    <a href="/public/administration/axiom">AXIOM Studio</a><span>›</span><strong>Reference Engine</strong>
    <?php if($selected): ?><span>›</span><span><?= htmlspecialchars($selected['label']) ?></span><?php endif; ?>
  </div>
  <div class="axiom-page-nav__actions"><a class="axiom-btn-back" href="/public/administration/axiom">← Retour à AXIOM Studio</a></div>
</div>
<section class="ref-hero"><div><span>AXIOM ENGINE</span><h2>Reference Engine</h2><p>Centralisez les listes, codes et métadonnées partagés par les modules CDA et AXIOM.</p></div><strong>V8.3.0</strong></section>
<?php if($flash): ?><div class="ref-flash <?= $flash['type']==='error'?'is-error':'is-success' ?>"><?= htmlspecialchars($flash['message']) ?></div><?php endif; ?>
<section class="ref-kpis"><article><small>Référentiels</small><b><?= (int)$stats['types'] ?></b></article><article><small>Valeurs</small><b><?= (int)$stats['values'] ?></b></article><article><small>Actives</small><b><?= (int)$stats['active'] ?></b></article><article><small>Archivées</small><b><?= (int)$stats['archived'] ?></b></article></section>
<div class="ref-layout"><aside class="ref-sidebar"><div class="ref-head"><h3>Référentiels</h3><button type="button" onclick="document.getElementById('type-form').classList.toggle('is-open')">＋</button></div><form id="type-form" class="ref-mini-form" method="post" action="/public/administration/axiom/referentiels/type/enregistrer"><?= Csrf::field() ?><input name="code" placeholder="code_unique" required><input name="label" placeholder="Libellé" required><input name="icon" placeholder="Icône"><input type="number" name="display_order" value="0"><label><input type="checkbox" name="is_active" checked> Actif</label><textarea name="fields_schema" placeholder='Schéma JSON optionnel, ex. {"duration":"number"}'></textarea><button>Créer</button></form><nav><?php foreach($types as $type): ?><?php $typeHref=$type['code']==='tarifs'?'/public/tarifs':($type['code']==='reductions'?'/public/tarifs/reductions':'/public/administration/axiom/referentiels?type='.rawurlencode($type['code'])); ?><a class="<?= $selected && (int)$selected['id']===(int)$type['id']?'active':'' ?>" href="<?= htmlspecialchars($typeHref) ?>"><span><?= htmlspecialchars($type['icon']?:'◆') ?></span><div><strong><?= htmlspecialchars($type['label']) ?></strong><small><?= htmlspecialchars($type['code']) ?></small></div><b><?= (int)$type['value_count'] ?></b></a><?php endforeach; ?></nav></aside>
<section class="ref-main"><?php if(!$selected): ?><div class="ref-empty"><h3>Sélectionnez un référentiel</h3><p>Choisissez une catégorie à gauche ou créez-en une nouvelle.</p></div><?php else: ?><header class="ref-title"><div><span><?= htmlspecialchars($selected['code']) ?></span><h3><?= htmlspecialchars($selected['icon']?:'◆') ?> <?= htmlspecialchars($selected['label']) ?></h3><p><?= htmlspecialchars((string)($selected['description']??'')) ?></p></div><button type="button" onclick="document.getElementById('value-form').classList.toggle('is-open')">＋ Ajouter une valeur</button></header>
<?php if($selected['code']==='salles'):
  $room=$edited??[];$roomMeta=json_decode((string)($room['metadata']??''),true)?:[];$roomActivities=(array)($roomMeta['activities']??[]);
?>
<form id="value-form" class="ref-value-form room-form <?= $edited?'is-open':'' ?>" method="post" action="/public/administration/axiom/referentiels/valeur/enregistrer">
<?= Csrf::field() ?><input type="hidden" name="type_id" value="<?= (int)$selected['id'] ?>"><input type="hidden" name="type_code" value="salles"><?php if($edited): ?><input type="hidden" name="id" value="<?= (int)$edited['id'] ?>"><?php endif; ?>
<div class="room-form-title"><div><strong><?= $edited?'Modifier la salle':'Nouvelle salle' ?></strong><small>Les champs marqués * sont obligatoires.</small></div><?php if($edited): ?><a href="/public/administration/axiom/referentiels?type=salles">Annuler la modification</a><?php endif; ?></div>
<label class="room-field"><span>Nom de la salle *</span><small>Nom affiché dans les cours, créneaux et agendas.</small><input id="room-label" name="label" value="<?= htmlspecialchars((string)($room['label']??'')) ?>" placeholder="Ex. Salle Brahms" required></label>
<fieldset class="room-activities"><legend>Activités possibles *</legend><small>Sélectionnez une ou plusieurs activités accueillies dans cette salle.</small><div><?php foreach(['musique'=>['🎵','Musique'],'theatre'=>['🎭','Théâtre'],'dessin'=>['🎨','Dessin / arts plastiques']] as $key=>$choice): ?><label><input type="checkbox" name="room_activities[]" value="<?= $key ?>" <?= in_array($key,$roomActivities,true)?'checked':'' ?>><span class="room-icon"><?= $choice[0] ?></span><b><?= $choice[1] ?></b></label><?php endforeach; ?></div></fieldset>
<label class="room-field"><span>Code automatique *</span><small>Construit avec les activités et le nom. Vous pouvez le corriger avant le premier enregistrement.</small><input id="room-code" name="code" value="<?= htmlspecialchars((string)($room['code']??'')) ?>" placeholder="SAL-MUS-BRAHMS" required <?= $edited?'data-existing="1"':'' ?>></label>
<label class="room-field room-description"><span>Description / équipements</span><small>Précisez les usages, instruments fixes, accessibilité ou contraintes utiles.</small><textarea name="description" placeholder="Ex. Piano droit, pupitres, capacité 8 personnes…"><?= htmlspecialchars((string)($room['description']??'')) ?></textarea></label>
<label class="room-field room-order"><span>Ordre d’affichage</span><small>Position de la salle dans les listes.</small><input type="number" name="display_order" value="<?= (int)($room['display_order']??0) ?>" min="0"></label>
<label class="room-active"><input type="checkbox" name="is_active" <?= !$edited||(int)($room['is_active']??0)===1?'checked':'' ?>> <span>Salle active et disponible dans les plannings</span></label>
<input type="hidden" name="color" value="<?= htmlspecialchars((string)($room['color']??'#2563eb')) ?>"><button class="room-save"><?= $edited?'Enregistrer les modifications':'Créer la salle' ?></button>
</form>
<?php elseif($selected['code']==='poles'):
  $pole=$edited??[];$poleMeta=json_decode((string)($pole['metadata']??''),true)?:[];$poleKind=(string)($poleMeta['pole_kind']??'');
?>
<form id="value-form" class="ref-value-form room-form pole-form <?= $edited?'is-open':'' ?>" method="post" action="/public/administration/axiom/referentiels/valeur/enregistrer">
<?= Csrf::field() ?><input type="hidden" name="type_id" value="<?= (int)$selected['id'] ?>"><input type="hidden" name="type_code" value="poles"><?php if($edited): ?><input type="hidden" name="id" value="<?= (int)$edited['id'] ?>"><?php endif; ?>
<div class="room-form-title"><div><strong><?= $edited?'Modifier le pôle':'Nouveau pôle' ?></strong><small>Choisissez une catégorie : l’icône et le code seront proposés automatiquement.</small></div><?php if($edited): ?><a href="/public/administration/axiom/referentiels?type=poles">Annuler la modification</a><?php endif; ?></div>
<fieldset class="room-activities pole-kinds"><legend>Type de pôle *</legend><small>Les quatre pôles habituels sont prêts à l’emploi. « Autre » permet d’en créer un nouveau.</small><div><?php foreach(['structure'=>['🏛️','Structure'],'theatre'=>['🎭','Théâtre'],'musique'=>['🎵','Musique'],'arts'=>['🎨','Arts plastiques'],'autre'=>['✨','Autre pôle']] as $key=>$choice): ?><label><input type="radio" name="pole_kind" value="<?= $key ?>" <?= $poleKind===$key?'checked':'' ?> required><span class="room-icon"><?= $choice[0] ?></span><b><?= $choice[1] ?></b></label><?php endforeach; ?></div></fieldset>
<label class="room-field"><span>Nom du pôle *</span><small>Rempli automatiquement pour les quatre catégories principales et modifiable.</small><input id="pole-label" name="label" value="<?= htmlspecialchars((string)($pole['label']??'')) ?>" placeholder="Ex. Arts numériques" required></label>
<label class="room-field"><span>Code automatique *</span><small>Identifie le pôle dans les cours et statistiques. En modification, il est conservé par sécurité.</small><input id="pole-code" name="code" value="<?= htmlspecialchars((string)($pole['code']??'')) ?>" placeholder="POL-ART" required <?= $edited?'data-existing="1"':'' ?>></label>
<label class="room-field room-description"><span>Description</span><small>Précisez le rôle du pôle ou les activités qu’il regroupe.</small><textarea name="description" placeholder="Ex. Cours, ateliers et projets d’arts plastiques…"><?= htmlspecialchars((string)($pole['description']??'')) ?></textarea></label>
<label class="room-field room-order"><span>Ordre d’affichage</span><small>Position du pôle dans les listes et tableaux.</small><input type="number" name="display_order" value="<?= (int)($pole['display_order']??0) ?>" min="0"></label>
<label class="room-active"><input type="checkbox" name="is_active" <?= !$edited||(int)($pole['is_active']??0)===1?'checked':'' ?>> <span>Pôle actif et disponible dans AXIOM</span></label>
<input type="hidden" name="color" id="pole-color" value="<?= htmlspecialchars((string)($pole['color']??'#2563eb')) ?>"><button class="room-save"><?= $edited?'Enregistrer les modifications':'Créer le pôle' ?></button>
</form>
<?php elseif($selected['code']==='disciplines'):
  $discipline=$edited??[];$disciplineMeta=json_decode((string)($discipline['metadata']??''),true)?:[];
?>
<form id="value-form" class="ref-value-form room-form <?= $edited?'is-open':'' ?>" method="post" action="/public/administration/axiom/referentiels/valeur/enregistrer">
<?= Csrf::field() ?><input type="hidden" name="type_id" value="<?= (int)$selected['id'] ?>"><input type="hidden" name="type_code" value="disciplines"><?php if($edited): ?><input type="hidden" name="id" value="<?= (int)$edited['id'] ?>"><?php endif; ?>
<div class="room-form-title"><div><strong><?= $edited?'Modifier la discipline':'Nouvelle discipline' ?></strong><small>Les durées pilotent automatiquement l’agenda prévisionnel des professeurs.</small></div><?php if($edited): ?><a href="/public/administration/axiom/referentiels?type=disciplines">Annuler</a><?php endif; ?></div>
<label class="room-field"><span>Nom de la discipline *</span><input name="label" value="<?= htmlspecialchars((string)($discipline['label']??'')) ?>" required></label>
<label class="room-field"><span>Code *</span><input name="code" value="<?= htmlspecialchars((string)($discipline['code']??'')) ?>" required></label>
<div class="discipline-duration-grid">
 <label class="room-field"><span>Durée d’un cours individuel *</span><small>Ex. 30 minutes : une plage de 2 h produit 4 créneaux.</small><select name="duree_individuelle_minutes" required><?php foreach(range(5,180,5) as $m):?><option value="<?=$m?>" <?=$m===(int)($disciplineMeta['duree_individuelle_minutes']??30)?'selected':''?>><?=$m?> minutes</option><?php endforeach?></select></label>
 <label class="room-field"><span>Durée d’un cours collectif *</span><small>Durée prévisionnelle du bloc groupe.</small><select name="duree_collective_minutes" required><?php foreach(range(5,240,5) as $m):?><option value="<?=$m?>" <?=$m===(int)($disciplineMeta['duree_collective_minutes']??60)?'selected':''?>><?=$m?> minutes</option><?php endforeach?></select></label>
</div>
<label class="room-field"><span>Description</span><textarea name="description"><?= htmlspecialchars((string)($discipline['description']??'')) ?></textarea></label>
<label class="room-active"><input type="checkbox" name="is_active" <?= !$edited||(int)($discipline['is_active']??0)===1?'checked':'' ?>> <span>Discipline active</span></label>
<input type="hidden" name="icon" value="<?= htmlspecialchars((string)($discipline['icon']??'♫')) ?>"><input type="hidden" name="color" value="<?= htmlspecialchars((string)($discipline['color']??'#2563eb')) ?>"><input type="hidden" name="display_order" value="<?= (int)($discipline['display_order']??0) ?>"><button class="room-save"><?= $edited?'Enregistrer les durées':'Créer la discipline' ?></button>
</form>
<style>.discipline-duration-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.discipline-duration-grid select{padding:11px;border:1px solid #cbd5e1;border-radius:8px}@media(max-width:700px){.discipline-duration-grid{grid-template-columns:1fr}}</style>
<?php else: ?>
<form id="value-form" class="ref-value-form" method="post" action="/public/administration/axiom/referentiels/valeur/enregistrer"><?= Csrf::field() ?><input type="hidden" name="type_id" value="<?= (int)$selected['id'] ?>"><input type="hidden" name="type_code" value="<?= htmlspecialchars($selected['code']) ?>"><input name="code" placeholder="Code" required><input name="label" placeholder="Libellé" required><input name="icon" placeholder="Icône"><input type="color" name="color" value="#2563eb"><input type="number" name="display_order" value="0" placeholder="Ordre"><label><input type="checkbox" name="is_active" checked> Actif</label><textarea name="description" placeholder="Description"></textarea><textarea name="metadata" placeholder='Métadonnées JSON optionnelles'></textarea><button>Enregistrer</button></form>
<?php endif; ?>
<div class="ref-search"><input id="ref-filter" type="search" placeholder="Rechercher une valeur…" oninput="document.querySelectorAll('.ref-row').forEach(r=>r.hidden=!r.innerText.toLowerCase().includes(this.value.toLowerCase()))"></div>
<div class="ref-table"><div class="ref-table-head"><span>Valeur</span><span>Code</span><span>Ordre</span><span>État</span><span>Actions</span></div><?php if(!$values): ?><div class="ref-empty-small">Aucune valeur.</div><?php endif; ?><?php foreach($values as $value): ?><?php $valueMeta=json_decode((string)($value['metadata']??''),true)?:[]; ?><article class="ref-row <?= !empty($value['archived_at'])?'is-archived':'' ?>"><span><i style="background:<?= htmlspecialchars($value['color']?:'#dbeafe') ?>"></i><b><?= htmlspecialchars($value['icon']?:'•') ?> <?= htmlspecialchars($value['label']) ?></b><?php if($selected['code']==='disciplines'):?><small style="display:block;margin-left:24px">Individuel <?= (int)($valueMeta['duree_individuelle_minutes']??30) ?> min · Collectif <?= (int)($valueMeta['duree_collective_minutes']??60) ?> min</small><?php endif?></span><code><?= htmlspecialchars($value['code']) ?></code><span><?= (int)$value['display_order'] ?></span><span><em><?= !empty($value['archived_at'])?'Archivé':((int)$value['is_active']===1?'Actif':'Inactif') ?></em></span><span class="ref-actions"><?php if(empty($value['archived_at'])): ?><?php if(in_array($selected['code'],['salles','poles','disciplines'],true)): ?><a class="ref-edit" href="/public/administration/axiom/referentiels?type=<?=rawurlencode($selected['code'])?>&amp;edit=<?= (int)$value['id'] ?>">Modifier</a><?php endif; ?><form method="post" action="/public/administration/axiom/referentiels/valeur/archiver" onsubmit="return confirm('Archiver cette valeur ?')"><?= Csrf::field() ?><input type="hidden" name="id" value="<?= (int)$value['id'] ?>"><input type="hidden" name="type_code" value="<?= htmlspecialchars($selected['code']) ?>"><button>Archiver</button></form><?php else: ?><form method="post" action="/public/administration/axiom/referentiels/valeur/restaurer"><?= Csrf::field() ?><input type="hidden" name="id" value="<?= (int)$value['id'] ?>"><input type="hidden" name="type_code" value="<?= htmlspecialchars($selected['code']) ?>"><button>Restaurer</button></form><?php endif; ?></span></article><?php endforeach; ?></div><?php endif; ?></section></div>
<section class="ref-history"><h3>Dernières modifications</h3><div><?php foreach($history as $entry): ?><article><b><?= htmlspecialchars($entry['action']) ?></b><span><?= htmlspecialchars($entry['entity_kind']) ?> #<?= (int)$entry['entity_id'] ?></span><small><?= htmlspecialchars(date('d/m/Y H:i',strtotime($entry['created_at']))) ?></small></article><?php endforeach; ?></div></section>
</main>
<?php if(($selected['code']??'')==='salles'): ?><script src="/public/assets/js/cda-rooms-9618.js"></script><?php elseif(($selected['code']??'')==='poles'): ?><script src="/public/assets/js/cda-poles-9619.js"></script><?php endif; ?>
