@php($keg = $kegiatan ?? null)
@error('nama_kegiatan') {{ $message }} @enderror
@if ($keg && $keg->is_berbayar && $keg->link_platform === '-')
Kegiatan ini ditandai Berbayar tapi Link Platform masih diisi placeholder "-" oleh mahasiswa yang mengajukan — pastikan link asli sudah dilengkapi sebelum kegiatan berlangsung.
@endif @php($berbayarTerpilih = old('is_berbayar', $keg->is_berbayar ?? false) ? true : false)
@error('is_berbayar') {{ $message }} @enderror
Ditampilkan ke mahasiswa (dengan tautan WhatsApp otomatis) setelah kegiatan disetujui/aktif, supaya yang berminat bisa langsung bertanya soal biaya. @error('no_wa_narahubung') {{ $message }} @enderror
@php($modeTerpilih = old('mode_kegiatan', $keg->mode_kegiatan ?? 'luring'))
Luring memakai lokasi GPS/QR seperti biasa. Daring tidak butuh pengaturan lokasi — mahasiswa cukup klik "Kirim Presensi" dari perangkat terdaftarnya. @error('mode_kegiatan') {{ $message }} @enderror
@php($tahunTerpilih = old('tahun_akademik_id', $keg->tahun_akademik_id ?? $tahunAkademikAktifId ?? '')) @if ($keg && $keg->isPengajuanMahasiswa()) {{-- Pengajuan mahasiswa selalu ditandai tahun akademik yang SEDANG AKTIF saat disetujui (lihat Admin\KegiatanController::setujui()), jadi field ini tidak perlu ditampilkan/dipilih manual di sini — mahasiswa mengajukan kegiatan untuk periode berjalan, bukan periode lampau/akan datang. Field ini tetap ada (dan bisa diedit) untuk kegiatan yang dibuat langsung oleh admin, karena admin kadang perlu membuatkan kegiatan untuk tahun akademik lain (mis. entri data lampau). --}} @else
Otomatis terpilih ke tahun akademik yang sedang aktif — biasanya tidak perlu diubah, kecuali membuat kegiatan untuk tahun akademik lain. Dipakai untuk mengelompokkan laporan/export nanti. @error('tahun_akademik_id') {{ $message }} @enderror @if ($daftarTahunAkademik->isEmpty()) Belum ada tahun akademik. Tambah tahun akademik terlebih dahulu. @endif
@endif
@php($kelompokTerkunci = isset($keg) && $keg->exists && $keg->surveiPengisians()->exists()) {{-- Admin pusat melihat kelompok dari SEMUA jurusan sekaligus (kegiatan yang dibuat admin pusat tidak terikat satu jurusan) -- dua jurusan boleh punya kelompok dengan nama sama, jadi nama jurusan disertakan di sini supaya tidak ambigu. Admin jurusan tidak perlu ini karena daftarnya sudah terfilter ke jurusannya sendiri saja. --}} @php($tampilkanJurusan = auth()->user()->isPusat()) @if ($kelompokTerkunci) {{-- Select di-disable supaya tidak terkirim kosong, jadi dikirim lewat input tersembunyi. --}} Kelompok tidak bisa diganti karena sudah ada mahasiswa yang mengisi survei untuk kegiatan ini. @else Opsional. Dipakai untuk mengelompokkan rekap presensi mahasiswa dan menentukan pertanyaan survei kegiatan (dikelola di menu Kelompok Kegiatan). @if ($daftarKelompok->isEmpty()) @if ($tampilkanJurusan) Belum ada kelompok kegiatan. Tambah kelompok kegiatan terlebih dahulu. @else Belum ada kelompok kegiatan untuk jurusan Anda. Hubungi admin pusat untuk menambahkannya. @endif @endif @endif @error('kelompok_kegiatan_id') {{ $message }} @enderror
@php( $kelompokAwal = $daftarKelompok->firstWhere('id', (int) old('kelompok_kegiatan_id', $keg->kelompok_kegiatan_id ?? 0)) ) @php($adalahKuliahTamu = $kelompokAwal && $kelompokAwal->adalahKuliahTamu())
@error('narasumber') {{ $message }} @enderror
wajib_survei ?? false) ? 'checked' : '' }}>
@error('wajib_survei') {{ $message }} @enderror
@error('lokasi_presensi_id') {{ $message }} @enderror @if ($lokasis->isEmpty()) Belum ada lokasi presensi. Tambah lokasi terlebih dahulu. @endif
@php($wajibQr = (string) old('wajib_qr', isset($keg) ? (int) $keg->wajib_qr : 1))
Pakai QR: mahasiswa harus memindai QR yang ditampilkan di lokasi (lebih aman, disarankan); QR dibuat lewat tombol QR di daftar kegiatan, dan sebelum QR dibuat presensi belum bisa dilakukan. Tanpa QR: cukup GPS di dalam area lokasi.
@php($wajibPulang = (string) old('wajib_pulang', isset($keg) ? (int) $keg->wajib_pulang : 0))
Masuk & pulang: presensi pulang baru bisa {{ config('presensi.pulang_buka_setelah_mulai_menit') }} menit setelah jam mulai dan {{ config('presensi.pulang_min_setelah_masuk_menit') }} menit setelah presensi masuk, sampai jam selesai. Agar pulang selalu masih tersedia, presensi masuk ditutup {{ config('presensi.pulang_min_setelah_masuk_menit') + config('presensi.pulang_jendela_minimal_menit') }} menit sebelum jam selesai. Yang tidak presensi pulang sampai jam selesai otomatis ditandai tidak lengkap.
Opsional. Jenis platform konferensi yang dipakai — ditampilkan ke mahasiswa di dashboard supaya mereka tahu aplikasi apa yang perlu disiapkan. @error('platform_konferensi') {{ $message }} @enderror
Kegiatan daring tidak memakai QR presensi, dan tidak ada lokasi presensi yang perlu diatur. Mahasiswa presensi cukup dengan klik "Kirim Presensi" dari perangkat terdaftarnya — lokasi GPS-nya (kalau browser/izin lokasi mendukung) ikut tercatat otomatis sebagai audit untuk ditinjau admin, bukan syarat untuk diterima presensinya.
{{-- Tanggal, Jam Mulai, Jam Selesai: satu baris di layar lebar, ditumpuk di HP --}}
@error('tanggal') {{ $message }} @enderror
@error('jam_mulai') {{ $message }} @enderror
@error('jam_selesai') {{ $message }} @enderror
@php($angkatanTerpilih = old('angkatan_diizinkan', $keg->angkatan_diizinkan ?? [])) @php($prodiTerpilih = old('prodi_diizinkan', $keg->prodi_diizinkan ?? [])) @php($kelasTerpilih = old('kelas_diizinkan', $keg->kelas_diizinkan ?? [])) @if ($keg && $keg->isPengajuanMahasiswa())
Rencana Kegiatan Ini Untuk Siapa (menurut mahasiswa yang mengajukan)
@if ($keg->rekomendasiTargetLabel())
{{ $keg->rekomendasiTargetLabel() }}
@else
Mahasiswa tidak menyertakan rekomendasi target untuk kegiatan ini.
@endif Ini cuma masukan/saran dari mahasiswa — silakan sesuaikan sendiri Angkatan/Program Studi/Kelas yang boleh presensi di bawah sesuai keputusan Anda.
@endif
Siapa yang Boleh Presensi
Kosongkan semua (tidak centang apapun) pada satu bagian berarti kegiatan ini berlaku untuk SEMUA pilihan di bagian itu — mis. tidak centang angkatan apapun berarti berlaku untuk semua angkatan.
kehadiran_sebagian ?? false) ? 'checked' : '' }}> Centang kalau tidak semua mahasiswa wajib datang (mis. cukup perwakilan). Setelah diverifikasi, yang sama sekali tidak presensi tidak dihitung tidak hadir. Biarkan kosong untuk kegiatan wajib.
@if ($daftarAngkatan->isEmpty()) Belum ada data angkatan mahasiswa. Kosongkan saja (berarti berlaku untuk semua angkatan), atau import data mahasiswa dulu supaya pilihan angkatan muncul di sini. @else
@foreach ($daftarAngkatan as $angkatan)
@endforeach
@endif @error('angkatan_diizinkan') {{ $message }} @enderror
@if (! $keg && auth()->user()->isProdi()) Kegiatan yang Anda buat otomatis hanya berlaku untuk prodi Anda sendiri ({{ auth()->user()->prodiNama() }}) — tidak bisa dipilih prodi lain. @elseif ($daftarProdi->isEmpty()) Belum ada data program studi. Kosongkan saja (berarti berlaku untuk semua prodi), atau tambah program studi dulu di menu Program Studi. @else
@foreach ($daftarProdi as $prodi)
@endforeach
@endif @error('prodi_diizinkan') {{ $message }} @enderror
@if ($daftarKelas->isEmpty()) Belum ada data kelas mahasiswa. Kosongkan saja (berarti berlaku untuk semua kelas), atau import data mahasiswa dulu supaya pilihan kelas muncul di sini. @else
@foreach ($daftarKelas as $kelas)
@endforeach
@endif @error('kelas_diizinkan') {{ $message }} @enderror
@unless ($keg && $keg->isPengajuanMahasiswa() && $keg->status_pengajuan === 'menunggu')
is_active ?? true) ? 'checked' : '' }}>
@endunless