@extends('layouts.app') @section('title', 'Relevé — ' . $student->fullName()) @section('heading', 'Relevé de notes') @section('subheading', $student->fullName() . ' — ' . $type->name . ' · ' . $period->name) @section('content')
@if (auth()->user()->role === \App\Enums\UserRole::Guardian) Dossier de {{ $student->first_name }} @elseif (auth()->user()->role === \App\Enums\UserRole::Student) Mon espace @else Fiche élève @endif {{-- Sélecteurs : un changement recharge la page, pas de JS à maintenir. --}}
@if ($unlocked && $grades->isNotEmpty()) @endif
@unless ($unlocked) {{-- Seuil fixé par la direction sur ce contrôle. Il se mesure sur les frais échus, jamais sur le total annuel. --}}
Résultat retenu. L'accès aux notes de « {{ $type->name }} » exige le règlement de {{ $type->min_payment_percent }} % des frais échus ; la famille en a réglé {{ number_format($paidPercent, 0, ',', ' ') }} %. @if ($canCollect) Encaisser maintenant pour lever la retenue. @else Adressez-vous à l'économat pour régulariser la situation. @endif
@else
{{-- En-tête --}}
{{ $enrollment->school->name }}
Année {{ $enrollment->academicYear->name }}
Relevé de notes
{{ $type->name }} — {{ $period->name }}
{{ $student->last_name }}, {{ $student->first_name }} ({{ $student->student_id }})
Classe : {{ $enrollment->schoolClass->name }}
@if ($grades->isEmpty())

@if ($unpublishedCount > 0) Les notes de ce contrôle ne sont pas encore publiées par les professeurs. @else Aucune note saisie pour ce contrôle dans cette période. @endif

@else @if ($unpublishedCount > 0)

{{ $unpublishedCount }} matière(s) en attente de publication par le professeur.

@endif @foreach ($grades as $grade) @php $cs = $grade->classSubject; @endphp @endforeach @if ($average !== null) @endif
Matière Coef. Note Sur {{ $scale }} Date
{{ $cs->subject->name }} @if ($grade->sequence > 1) (n° {{ $grade->sequence }}) @endif {{ rtrim(rtrim(number_format($cs->coefficient, 2, ',', ''), '0'), ',') }} @if ($grade->isGraded()) {{ number_format($grade->grade_value, 2, ',', ' ') }} / {{ rtrim(rtrim(number_format($grade->max_value, 2, ',', ''), '0'), ',') }} @elseif ($grade->is_absent) {{ $grade->is_excused ? 'Abs. exc.' : 'Absent' }} @else — @endif @if ($grade->isGraded()) {{ number_format((float) $grade->normalized_value * $scale / 100, 2, ',', ' ') }} @else — @endif {{ $grade->graded_on?->format('d/m/Y') ?? '—' }}
Moyenne du contrôle (pondérée) {{ number_format($average * $scale / 100, 2, ',', ' ') }}
Document provisoire : seul le bulletin de fin de période fait foi.
@endif
@endunless @endsection