@extends('admin.layout')

@section('title', 'Mise à jour GCMS')
@section('header', 'Mise à jour GCMS')

@section('content')
<div class="max-w-3xl space-y-8">
    <p class="text-slate-600">
        Vérifiez si une nouvelle version est disponible, puis appliquez-la en un clic (fichiers du cœur du CMS et plugins fournis — votre contenu dans <code class="text-sm bg-slate-100 px-1 rounded">content/</code> n’est pas modifié).
    </p>

    @if(!$configured)
        <div class="p-4 bg-slate-100 border border-slate-200 rounded-xl text-slate-700">
            <p class="font-medium">Mises à jour non configurées</p>
            <p class="text-sm mt-2">Définissez <code class="bg-white px-1 rounded">GCMS_UPDATE_ENABLED=true</code> et <code class="bg-white px-1 rounded">GCMS_UPDATE_MANIFEST_URL</code> dans le fichier <code class="bg-white px-1 rounded">.env</code>, puis placez la clé publique (voir documentation).</p>
        </div>
    @elseif(!$keyOk)
        <div class="p-4 bg-amber-50 border border-amber-200 rounded-xl text-amber-900">
            <p class="font-medium">Clé publique manquante</p>
            <p class="text-sm mt-2">Copiez la clé publique RSA au chemin configuré (par défaut <code class="bg-white px-1 rounded">gcms-update-public.pem</code> à la racine du projet) ou renseignez <code class="bg-white px-1 rounded">GCMS_UPDATE_PUBLIC_KEY</code> / <code class="bg-white px-1 rounded">GCMS_UPDATE_PUBLIC_KEY_PATH</code>.</p>
            <p class="text-sm mt-2">En développement uniquement : <code class="bg-white px-1 rounded">GCMS_UPDATE_ALLOW_UNSIGNED=true</code> avec <code class="bg-white px-1 rounded">APP_DEBUG=true</code>.</p>
        </div>
    @endif

    <div class="bg-white rounded-xl border border-slate-200 p-6">
        <h2 class="font-semibold text-slate-900 mb-4">Version installée</h2>
        <p class="text-2xl font-bold text-slate-800">{{ \App\Support\GcmsVersion::current() }}</p>
        @if($status)
            <dl class="mt-6 space-y-2 text-sm text-slate-600 border-t border-slate-100 pt-4">
                <div class="flex justify-between gap-4"><dt>Dernière vérification</dt><dd class="font-medium text-slate-800">{{ $status['checked_at'] ?? '—' }}</dd></div>
                @if(!empty($status['latest_version']))
                    <div class="flex justify-between gap-4"><dt>Dernière version connue</dt><dd class="font-medium text-slate-800">{{ $status['latest_version'] }}</dd></div>
                @endif
                @if(array_key_exists('signature_valid', $status))
                    <div class="flex justify-between gap-4"><dt>Signature du manifeste</dt><dd class="font-medium {{ $status['signature_valid'] ? 'text-emerald-700' : 'text-amber-700' }}">{{ $status['signature_valid'] ? 'Valide' : 'Non vérifiée / invalide' }}</dd></div>
                @endif
                @if(!empty($status['error']))
                    <div class="text-amber-800 bg-amber-50 rounded-lg p-3 mt-2">{{ $status['error'] }}</div>
                @endif
            </dl>
        @else
            <p class="text-sm text-slate-500 mt-4">Aucune vérification en cache. Utilisez le bouton ci-dessous.</p>
        @endif

        @if($configured && $keyOk)
            <form method="POST" action="{{ route('admin.settings.gcms-update.check') }}" class="mt-6">
                @csrf
                <button type="submit" class="px-5 py-2.5 bg-slate-800 text-white rounded-xl font-medium hover:bg-slate-900 transition">
                    Vérifier les mises à jour
                </button>
            </form>
        @endif
    </div>

    @if($configured && $keyOk && $status && !empty($status['update_available']))
        <div class="bg-amber-50 border border-amber-200 rounded-xl p-6">
            <h2 class="font-semibold text-amber-900 mb-2">Mise à jour disponible : {{ $status['latest_version'] }}</h2>
            <p class="text-sm text-amber-800 mb-4">Le site passera quelques secondes en maintenance pendant l’application. Pensez à une sauvegarde (base de données + fichiers) avant de continuer.</p>
            @if(!empty($status['requires_composer']))
                <p class="text-sm font-medium text-red-700">Cette version nécessite <code>composer install</code> : la mise à jour automatique est désactivée. Suivez la procédure manuelle dans la documentation.</p>
            @else
                <form method="POST" action="{{ route('admin.settings.gcms-update.apply') }}" class="space-y-4" onsubmit="return confirm('Appliquer la mise à jour vers la version {{ $status['latest_version'] }} ?');">
                    @csrf
                    <label class="flex items-start gap-2 text-sm text-amber-900">
                        <input type="checkbox" name="confirm" value="1" required class="rounded border-amber-400 mt-0.5">
                        <span>J’ai une sauvegarde et j’accepte d’appliquer la mise à jour maintenant.</span>
                    </label>
                    <button type="submit" class="px-5 py-2.5 bg-amber-600 text-white rounded-xl font-medium hover:bg-amber-700 transition">
                        Mettre à jour maintenant
                    </button>
                </form>
            @endif
        </div>
    @endif

    @if(!empty($status['changelog_url']))
        <p class="text-sm"><a href="{{ $status['changelog_url'] }}" target="_blank" rel="noopener" class="text-primary-600 hover:underline">Notes de version (externe)</a></p>
    @endif

    <p class="text-xs text-slate-500">
        Documentation éditeur : <code class="bg-slate-100 px-1 rounded">docs/GCMS_RELEASE_GITLAB.md</code>
    </p>
</div>
@endsection
