@extends('public.layouts.public') @section('title', 'Kuesioner Tracer Study - ' . $wisudawan->nama_lengkap) @section('content')
{{-- Flash Notifications --}} @if (session('profile_success'))
{{ session('profile_success') }}
@endif @if ($errors->any())
Terjadi Kesalahan:
@endif
{{-- Header Section 1 --}}
Alumni Terverifikasi No. {{ $wisudawan->no_alumni }}

{{ $wisudawan->nama_lengkap }}

{{ $wisudawan->prodi->fakultas->nama_fakultas ?? '-' }} {{ $wisudawan->prodi->nama_prodi ?? '-' }} ({{ $wisudawan->prodi->jenjang ?? 'S1' }})

{{-- Action Button: Edit / Update Biodata --}}
{{-- Biodata Details Grid (Sesuai Bagian 1. Identitas & Biodata Alumni) --}}

1. Identitas & Biodata Alumni

{{-- No. Alumni --}}
No. Alumni {{ $wisudawan->no_alumni }}
{{-- NIM --}}
NIM (Nomor Induk Mahasiswa) {{ $wisudawan->nim }}
{{-- Nama Lengkap --}}
Nama Lengkap {{ $wisudawan->nama_lengkap }}
{{-- NIK (No. KTP) --}}
NIK (No. KTP) {{ $wisudawan->nik ?? 'Belum diisi' }}
{{-- Jenis Kelamin --}}
Jenis Kelamin @if ($wisudawan->jenis_kelamin == 'L') Laki-laki @elseif ($wisudawan->jenis_kelamin == 'P') Perempuan @else - @endif
{{-- Tanggal Lahir --}}
Tanggal Lahir {{ $wisudawan->tanggal_lahir ? date('d F Y', strtotime($wisudawan->tanggal_lahir)) : '-' }}
{{-- NPWP --}}
NPWP {{ $wisudawan->npwp ?? 'Belum diisi' }}
{{-- Email --}}
Email {{ $wisudawan->email ?? 'Belum diisi' }}
{{-- No. HP / WhatsApp --}}
No. HP / WhatsApp {{ $wisudawan->no_hp ?? 'Belum diisi' }}
{{-- Academic Summary Subcard --}}
Tahun Kelulusan {{ $wisudawan->tahun }}
Periode Wisuda {{ $wisudawan->periodeWisuda->nama_periode ?? '-' }}
Indeks Prestasi Kumulatif (IPK) {{ number_format($wisudawan->ipk, 2) }}
Predikat Kelulusan {{ $wisudawan->predikat ?? '-' }}
@csrf

Kuesioner Pelacakan Alumni (Tracer Study)

Harap menjawab setiap pertanyaan dengan jujur dan akurat sesuai status terkini Anda.

Total {{ count($kuesioner) }} Pertanyaan
@forelse ($kuesioner as $index => $q)
#{{ $index + 1 }} {{ $q->kode_pertanyaan }}
{{ $q->kategori }}
@php $savedVal = $jawabanSaved[$q->id_kuesioner] ?? null; $savedOpsi = $jawabanOpsiSaved[$q->id_kuesioner] ?? null; @endphp {{-- 1. TIPE: RADIO --}} @if ($q->tipe_jawaban == 'radio') @if ($q->opsiJawaban->isNotEmpty())
@foreach ($q->opsiJawaban->sortBy('urutan') as $opt) @php $isChecked = ($savedOpsi == $opt->id_opsi) || ($savedVal == $opt->id_opsi) || ($savedVal == $opt->teks_opsi); @endphp @endforeach
@else {{-- Fallback jika opsi belum ada di DB --}}
is_wajib ? 'required' : '' }} placeholder="Pilihan jawaban Anda..." class="w-full px-4 py-3 rounded-xl bg-slate-900 border border-slate-800 text-white placeholder-slate-500 focus:outline-none focus:border-indigo-500 text-sm transition-all">
@endif {{-- 2. TIPE: CHECKBOX (MULTI-SELECT / PILIHAN BANYAK) --}} @elseif ($q->tipe_jawaban == 'checkbox')
Pilihan Banyak (Anda dapat memilih lebih dari satu jawaban yang sesuai)
@php $savedCheckbox = []; if (!empty($savedVal)) { if (is_array($savedVal)) { $savedCheckbox = $savedVal; } elseif (str_starts_with(trim($savedVal), '[') && str_ends_with(trim($savedVal), ']')) { $decoded = json_decode($savedVal, true); $savedCheckbox = is_array($decoded) ? $decoded : [$savedVal]; } else { $savedCheckbox = array_map('trim', explode(',', $savedVal)); } } // Ambil opsi dari database atau gunakan daftar standar jika kosong $checkboxOptions = []; if ($q->opsiJawaban->isNotEmpty()) { foreach ($q->opsiJawaban->sortBy('urutan') as $opt) { $checkboxOptions[] = [ 'id' => $opt->id_opsi, 'text' => $opt->teks_opsi ]; } } elseif ($q->kode_pertanyaan == 'METBEL_09' || str_contains(strtolower($q->teks_pertanyaan), 'mencari pekerjaan')) { $checkboxOptions = [ ['id' => '1', 'text' => 'Melalui iklan di koran/majalah, brosur'], ['id' => '2', 'text' => 'Melamar ke perusahaan/instansi secara langsung tanpa mengetahui lowongan'], ['id' => '3', 'text' => 'Pergi ke bursa kerja / Job Fair'], ['id' => '4', 'text' => 'Mencari lewat internet / portal lowongan online / media sosial (LinkedIn, Jobstreet, dll.)'], ['id' => '5', 'text' => 'Dihubungi langsung oleh perusahaan / pemberi kerja'], ['id' => '6', 'text' => 'Menghubungi Kemenakertrans / Disnaker'], ['id' => '7', 'text' => 'Menghubungi agen tenaga kerja komersial/swasta'], ['id' => '8', 'text' => 'Mendapatkan informasi dari Pusat Karir / Tracer Study Universitas Cenderawasih'], ['id' => '9', 'text' => 'Menghubungi ikatan alumni / sesama alumni'], ['id' => '10', 'text' => 'Membangun jejaring (networking) sejak masih kuliah'], ['id' => '11', 'text' => 'Melalui relasi (misalnya orang tua, kawan, dosen, dll.)'], ['id' => '12', 'text' => 'Membangun bisnis / usaha mandiri'], ['id' => '13', 'text' => 'Melalui penempatan kerja atau program magang'], ['id' => '14', 'text' => 'Bekerja di tempat yang sama dengan tempat kerja semasa kuliah'], ]; } elseif ($q->kode_pertanyaan == 'METBEL_14' || str_contains(strtolower($q->teks_pertanyaan), 'tidak sesuai') || str_contains(strtolower($q->teks_pertanyaan), 'mengapa anda mengambil')) { $checkboxOptions = [ ['id' => '1', 'text' => 'Pertanyaan tidak sesuai; pekerjaan saya saat ini sudah sesuai dengan bidang pendidikan'], ['id' => '2', 'text' => 'Saya belum mendapatkan pekerjaan yang lebih sesuai dengan bidang ilmu'], ['id' => '3', 'text' => 'Di pekerjaan ini saya memperoleh pendapatan / gaji yang lebih tinggi'], ['id' => '4', 'text' => 'Di pekerjaan ini lebih menjamin prospek karir dan jenjang promosi yang baik'], ['id' => '5', 'text' => 'Saya lebih menyukai / berminat bekerja di bidang ini'], ['id' => '6', 'text' => 'Lokasi tempat kerja lebih dekat dengan tempat tinggal / keluarga'], ['id' => '7', 'text' => 'Fleksibilitas waktu kerja yang lebih baik'], ['id' => '8', 'text' => 'Pekerjaan ini lebih aman, stabil, dan terjamin'], ['id' => '9', 'text' => 'Saya dipromosikan ke posisi ini'], ['id' => '10', 'text' => 'Mendapat tawaran kerja langsung dari perusahaan / instansi'], ]; } @endphp @if (!empty($checkboxOptions))
@foreach ($checkboxOptions as $opt) @php $optId = $opt['id']; $optText = $opt['text']; $isCbChecked = in_array((string)$optId, array_map('strval', $savedCheckbox)) || in_array($optText, $savedCheckbox) || in_array((string)$loop->iteration, array_map('strval', $savedCheckbox)); if (!$isCbChecked && !empty($savedVal) && is_string($savedVal)) { $isCbChecked = str_contains($savedVal, $optText); } @endphp @endforeach
{{-- Input Tambahan Lainnya --}}
Lainnya:
@else
is_wajib ? 'required' : '' }} placeholder="Tuliskan jawaban-jawaban Anda (pisahkan dengan koma jika lebih dari satu)..." class="w-full px-4 py-3 rounded-xl bg-slate-900 border border-slate-800 text-white placeholder-slate-500 focus:outline-none focus:border-indigo-500 text-sm transition-all">
@endif
{{-- 3. TIPE: SKALA 1 - 5 --}} @elseif ($q->tipe_jawaban == 'skala_1_5') @if ($q->opsiJawaban->isNotEmpty())
@foreach ($q->opsiJawaban->sortBy('urutan') as $opt) @php $scaleVal = $opt->nilai_angka ?? $opt->id_opsi; $isScaleChecked = ($savedOpsi == $opt->id_opsi) || ($savedVal == $scaleVal) || ($savedVal == $opt->teks_opsi); @endphp @endforeach
@else
@php $scaleLabels = [ '1' => 'Sangat Rendah', '2' => 'Rendah', '3' => 'Cukup', '4' => 'Tinggi', '5' => 'Sangat Tinggi' ]; @endphp @foreach ($scaleLabels as $skalaVal => $skalaLabel) @php $isScaleChecked = ($savedVal == $skalaVal) || ($savedVal == $skalaLabel); @endphp @endforeach
@endif {{-- 4. TIPE: NUMBER --}} @elseif ($q->tipe_jawaban == 'number')
is_wajib ? 'required' : '' }} placeholder="Masukkan angka (Contoh: 3, 4000000)..." class="w-full px-4 py-3 rounded-xl bg-slate-900 border border-slate-800 text-white placeholder-slate-500 focus:outline-none focus:border-indigo-500 text-sm font-mono transition-all">
{{-- 5. TIPE: TEXT / TEXTAREA --}} @elseif ($q->tipe_jawaban == 'text')
@if (str_contains(strtolower($q->kode_pertanyaan), 'saran') || str_contains(strtolower($q->kode_pertanyaan), 'krisar') || str_contains(strtolower($q->teks_pertanyaan), 'saran') || str_contains(strtolower($q->teks_pertanyaan), 'kritik') || strlen($q->teks_pertanyaan) > 60) @else is_wajib ? 'required' : '' }} placeholder="Masukkan jawaban Anda..." class="w-full px-4 py-3 rounded-xl bg-slate-900 border border-slate-800 text-white placeholder-slate-500 focus:outline-none focus:border-indigo-500 text-sm transition-all"> @endif
{{-- FALLBACK LAINNYA --}} @else
is_wajib ? 'required' : '' }} placeholder="Masukkan jawaban..." class="w-full px-4 py-3 rounded-xl bg-slate-900 border border-slate-800 text-white placeholder-slate-500 focus:outline-none focus:border-indigo-500 text-sm transition-all">
@endif
@empty

Belum ada pertanyaan kuesioner tracer study yang aktif.

@endforelse
{{-- Submit Button --}}
@endsection