@extends('layouts.app') @section('title', 'Penilaian Lapangan') @section('page-title', 'Penilaian Lapangan') @section('content') @if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif @php $formatStatus = fn($status) => ucwords(str_replace('_', ' ', $status ?: 'belum')); @endphp
Daftar Penilaian Lapangan
Kelola nilai Tahap 1 dan Tahap 2 mahasiswa bimbingan.
@forelse($pengajuans as $pengajuan) @php $isKhusus = $pengajuan->mahasiswa?->isAngkatanKhususSkKolektif(); $kelayakan = $pengajuan->kelayakanSeminar; $kelayakanLengkap = $kelayakan && filled($kelayakan->laporan_hasil_magang) && filled($kelayakan->output_magang) && filled($kelayakan->produk_magang) && filled($kelayakan->draft_jurnal); $logbookLengkap = true; if ($isKhusus) { $start = $pengajuan->tanggal_mulai ?: $pengajuan->mahasiswa?->defaultTanggalMulaiMagang(); $deadline = $pengajuan->mahasiswa?->deadlineLaporanMagang(); $logbookLengkap = filled($start) && filled($deadline); if ($logbookLengkap) { $filledWeeks = $pengajuan->logbooks->mapWithKeys(fn($logbook) => [\Illuminate\Support\Carbon::parse($logbook->tanggal)->startOfWeek()->toDateString() => true]); for ($cursor = \Illuminate\Support\Carbon::parse($start)->startOfWeek(); $cursor->lessThanOrEqualTo(\Illuminate\Support\Carbon::parse($deadline)); $cursor->addWeek()) { if (!isset($filledWeeks[$cursor->toDateString()])) { $logbookLengkap = false; break; } } } } $canInput = $isKhusus ? ($pengajuan->penempatanLengkap() && $kelayakanLengkap && $pengajuan->bimbinganFormals->isNotEmpty() && $logbookLengkap) : $pengajuan->hasValidSeminar(); $lockText = $isKhusus ? (!$pengajuan->penempatanLengkap() ? 'Penilaian belum dapat dilakukan karena data penempatan magang belum lengkap.' : (!$kelayakanLengkap ? 'Penilaian belum dapat dilakukan karena mahasiswa belum mengirim Laporan Hasil Magang, Uraian Output Magang, Produk Magang, dan Draft Jurnal pada menu Seminar Magang.' : ($pengajuan->bimbinganFormals->isEmpty() ? 'Penilaian belum dapat dilakukan karena mahasiswa belum memiliki minimal satu riwayat bimbingan.' : 'Penilaian belum dapat dilakukan karena logbook mingguan belum lengkap sampai 22 Juni 2026.'))) : 'Penilaian belum dapat dilakukan karena mahasiswa belum menyelesaikan Seminar Magang.'; @endphp @empty @endforelse
Mahasiswa NIM Program Studi Tempat Magang/Mitra Status Nilai Nilai Sementara Nilai Final Aksi
{{ $pengajuan->mahasiswa->nama_lengkap ?? '-' }}
{{ $formatStatus($pengajuan->status_seminar ?: 'belum') }}
{{ $pengajuan->mahasiswa->nim ?? '-' }} {{ $pengajuan->mahasiswa->prodi->nama_prodi ?? '-' }} {{ $pengajuan->mitra->nama_instansi ?? $pengajuan->nama_instansi_manual ?? '-' }} @if($pengajuan->penilaian?->nilai_akhir !== null) Final @elseif($pengajuan->penilaian?->nilai_sementara !== null) Sementara @else Belum Lengkap @endif {{ $pengajuan->penilaian?->nilai_sementara !== null ? number_format($pengajuan->penilaian->nilai_sementara, 2) : '-' }} @if($pengajuan->penilaian?->nilai_akhir !== null)
{{ number_format($pengajuan->penilaian->nilai_akhir, 2) }}
Grade {{ $pengajuan->penilaian->grade }}
@else - @endif
@if($canInput) @else Terkunci
{{ $lockText }}
@endif
Belum ada mahasiswa magang yang dapat dinilai.
{{ $pengajuans->links() }}
@endsection