<?php
use App\Core\Csrf;
use App\Core\Permission;

$statusLabels = [
    'importe' => 'Importé',
    'pret' => 'Prêt à installer',
    'installation' => 'Installation en cours',
    'installe' => 'Installé',
    'echec' => 'Échec',
];
?>
<link rel="stylesheet" href="/public/assets/css/cda-update-center.css">

<section class="update-center-hero">
    <div>
        <span class="page-kicker">Studio CDA</span>
        <h2>Mises à jour</h2>
        <p>Version installée : <strong><?= htmlspecialchars((string)$version) ?></strong></p>
    </div>

    <div class="update-health">
        <span>✓</span>
        <div>
            <strong>Centre de mises à jour autonome</strong>
            <small>Contrôle, installation, migrations et journalisation</small>
        </div>
    </div>
</section>


<style>
.update-engine-shortcuts{display:flex;flex-wrap:wrap;gap:9px;margin:0 0 18px}
.update-engine-shortcuts a{display:inline-flex;align-items:center;min-height:40px;padding:0 13px;border:1px solid #cbd8e8;border-radius:10px;background:#fff;color:#12365c;text-decoration:none;font-weight:800}
.update-engine-shortcuts a:hover,.update-engine-shortcuts a:focus{background:#edf5ff;border-color:#8cb6e2}
@media(max-width:700px){.update-engine-shortcuts a{flex:1 1 calc(50% - 9px);justify-content:center;text-align:center}}
</style>
<nav class="update-engine-shortcuts" aria-label="Moteurs de validation AXIOM">
    <a href="/public/administration/plateforme/validation">Validation Center</a>
    <a href="/public/administration/plateforme/confiance-packages">Trust Engine</a>
    <a href="/public/administration/plateforme/compatibilite-packages">Compatibility Engine</a>
    <a href="/public/administration/plateforme/certification-packages">Certification Center</a>
    <a href="/public/administration/plateforme/politiques-packages">Package Policy Engine</a>
    <a href="/public/administration/plateforme/packages/catalogue">Package Catalog</a>
    <a href="/public/administration/plateforme/packages/reparation">Repair & Recovery</a>
</nav>

<?php $lockState = $lockState ?? ['locked' => false, 'stale' => false, 'age_seconds' => 0, 'data' => []]; ?>
<?php if (!empty($lockState['locked']) && Permission::can('updates.unlock')): ?>
<section class="update-center-card update-lock-card">
    <header>
        <div>
            <h3>Installation verrouillée</h3>
            <p>Un verrou d'installation est présent depuis <?= (int) ceil(((int)($lockState['age_seconds'] ?? 0)) / 60) ?> minute(s).</p>
        </div>
        <span class="status-installation">Installation en cours</span>
    </header>
    <p>Utilisez le déverrouillage uniquement lorsqu'aucune autre fenêtre n'est réellement en train d'installer une mise à jour.</p>
    <form method="post" action="/public/studio/mises-a-jour/debloquer" onsubmit="return confirm('Confirmer le déverrouillage de l’installation interrompue ?');">
        <?= Csrf::field() ?>
        <button class="button button-danger" type="submit">Débloquer l’installation</button>
    </form>
</section>
<?php endif; ?>

<?php if (Permission::can('updates.import')): ?>
<section class="update-center-card">
    <header>
        <div>
            <h3>Importer un package</h3>
            <p>Sélectionnez un package AXIOM/CDA au format ZIP.</p>
        </div>
    </header>

    <form method="post" action="/public/studio/mises-a-jour/importer" enctype="multipart/form-data">
        <?= Csrf::field() ?>

        <label class="update-drop-zone">
            <input required type="file" name="package" accept=".zip,application/zip">
            <span>📦</span>
            <div>
                <strong>Choisir le package</strong>
                <small>Le manifeste et tous les SHA-256 seront contrôlés.</small>
            </div>
        </label>

        <button class="button button-primary" type="submit">Contrôler et importer</button>
    </form>
</section>
<?php endif; ?>

<section class="update-center-card">
    <header>
        <div>
            <h3>Historique des packages</h3>
            <p>État des imports et installations.</p>
        </div>
    </header>

    <div class="update-package-list">
        <?php if (!$packages): ?>
            <div class="update-empty">Aucun package importé.</div>
        <?php endif; ?>

        <?php foreach ($packages as $package): ?>
            <?php
            $status = (string)($package['statut'] ?? 'importe');
            $canInstall = Permission::can('updates.install') && in_array($status, ['pret', 'echec'], true);
            $message = trim((string)($package['message'] ?? ''));
            $details=json_decode((string)($package['result_json']??''),true)?:[];
            $manifest=$details['manifest']??[];
            ?>
            <article class="update-package-item">
                <div class="update-package-info">
                    <strong><?= htmlspecialchars((string)$package['nom_package']) ?></strong>
                    <small>
                        <?= htmlspecialchars(date('d/m/Y H:i', strtotime((string)$package['importe_at']))) ?>
                        · <?= number_format((int)$package['taille_octets'] / 1024, 1, ',', ' ') ?> Ko
                        <?php if (!empty($package['version_package'])): ?>
                            · V<?= htmlspecialchars((string)$package['version_package']) ?>
                        <?php endif; ?>
                        <?php if (!empty($package['duration_ms'])): ?>
                            · <?= number_format(((int)$package['duration_ms']) / 1000, 2, ',', ' ') ?> s
                        <?php endif; ?>
                    </small>
                    <?php if ($message !== ''): ?>
                        <p class="update-package-message"><?= htmlspecialchars($message) ?></p>
                    <?php endif; ?>
                    <?php if ($manifest): ?>
                        <p class="update-package-message"><strong>Identifiant :</strong> <?=htmlspecialchars((string)($manifest['package']??'—'))?> · <strong>Sources :</strong> <?=htmlspecialchars(implode(', ',(array)($manifest['source_versions']??[])) ?: ('≥ '.($manifest['min_version']??'0.0.0')))?><?=!empty($manifest['max_version'])?' à '.htmlspecialchars((string)$manifest['max_version']):' · sans maximum'?></p>
                    <?php endif; ?>
                </div>

                <div class="update-package-actions">
                    <span class="status-<?= htmlspecialchars($status) ?>">
                        <?= htmlspecialchars($statusLabels[$status] ?? ucfirst($status)) ?>
                    </span>

                    <?php if ($canInstall): ?>
                        <form method="post" action="/public/studio/mises-a-jour/installer" class="update-install-form" onsubmit="return confirm('Installer cette mise à jour maintenant ? Un préflight et une sauvegarde complète seront exécutés automatiquement.');">
                            <?= Csrf::field() ?>
                            <input type="hidden" name="id" value="<?= (int)$package['id'] ?>">
                            <button class="button button-primary update-install-button" type="submit">
                                <?= $status === 'echec' ? 'Réessayer' : 'Installer' ?>
                            </button>
                        </form>
                    <?php endif; ?>
                </div>
            </article>
        <?php endforeach; ?>
    </div>
</section>
