{{ $batch->offering->course->code }} broadsheet

@if(session('status'))
{{ session('status') }}
@endif @if($errors->any())
{{ $errors->first() }}
@endif

{{ $batch->offering->course->title }}

{{ $batch->offering->academicSession->name }} / {{ $batch->offering->semester->name }} · {{ $batch->gradingSystem->name }} · Version {{ $batch->version }}

{{ str_replace('_',' ',ucfirst($batch->status)) }} Export CSV
@can('update',$batch)
@csrf

CSV import

Headers: matriculation_number, assignment_score, test_score, attendance_score, practical_score, examination_score, lecturer_comment

@csrf

CBT integration

Imports only final marked, moderated, or released attempts linked to this offering.

@endcan
@foreach($items as $item) @php($result=$batch->results->firstWhere('student_id',$item->registration->student_id)) @csrf @foreach(['assignment_score','test_score','attendance_score','practical_score','examination_score'] as $field)@endforeach @endforeach
StudentAssignmentTestAttendancePracticalExamTotalGrade
{{ $item->registration->student->matriculation_number }}
{{ $item->registration->student->user?->name }}
status!=='draft') type="number" min="0" step=".01" name="{{ $field }}" value="{{ $result?->{$field} ?? 0 }}" class="w-20 rounded border-gray-300">{{ $result?->total_score ?? '—' }}{{ $result?->letter_grade ?? '—' }} @if($batch->status==='draft')@endif
@php($targets=['draft'=>'submitted','submitted'=>'hod_reviewed','hod_reviewed'=>'exam_validated','exam_validated'=>'dean_approved','dean_approved'=>'board_approved','board_approved'=>'published']) @if(isset($targets[$batch->status])) @can($targets[$batch->status]==='published' ? 'publish' : ($batch->status==='draft' ? 'update' : 'approve'),$batch)
@csrf
@endcan @elseif($batch->status==='published') @can('publish',$batch)
@csrf
@endcan @endif

Approval trail

@forelse($batch->approvals as $approval)

{{ $approval->occurred_at }} · {{ str_replace('_',' ',$approval->stage) }} · {{ $approval->decision }} {{ $approval->comments ? '— '.$approval->comments : '' }}

@empty

No decisions recorded.

@endforelse