Initial commit

This commit is contained in:
2026-04-12 06:24:30 +00:00
commit 007f107be6
213 changed files with 25576 additions and 0 deletions
@@ -0,0 +1,72 @@
@php
$defaultAllowedExtensions = 'jpg,jpeg,png,pdf,webp';
$documentTypeOptions = $documentTypes->mapWithKeys(function ($documentType) use ($defaultMaxFileSizeKb, $defaultAllowedExtensions) {
return [
$documentType->id => [
'label' => $documentType->name,
'max' => $documentType->max_file_size_kb ?: $defaultMaxFileSizeKb,
'extensions' => $documentType->allowed_extensions ?: $defaultAllowedExtensions,
],
];
});
$selectedDocumentTypeId = old('document_type_id', $document->document_type_id ?? null);
$selectedMaxSizeKb = $selectedDocumentTypeId && $documentTypeOptions->has((int) $selectedDocumentTypeId)
? $documentTypeOptions[(int) $selectedDocumentTypeId]['max']
: $defaultMaxFileSizeKb;
$selectedExtensions = $selectedDocumentTypeId && $documentTypeOptions->has((int) $selectedDocumentTypeId)
? $documentTypeOptions[(int) $selectedDocumentTypeId]['extensions']
: $defaultAllowedExtensions;
@endphp
<div class="grid grid-cols-1 gap-6 xl:grid-cols-2">
<x-master-card title="Form Dokumen Siswa" subtitle="Unggah file dan lengkapi metadata dokumen siswa.">
<div class="grid grid-cols-1 gap-5 md:grid-cols-2">
<div>
<label for="document_type_id" class="mb-2 block text-sm font-medium text-slate-700">Jenis Dokumen</label>
<select id="document_type_id" name="document_type_id" class="h-12 w-full rounded-2xl border border-slate-200 bg-white px-4 text-sm text-slate-700 focus:border-indigo-300 focus:outline-none focus:ring-4 focus:ring-indigo-100" data-document-type-select>
<option value="">-- Pilih --</option>
@foreach ($documentTypeOptions as $id => $option)
<option value="{{ $id }}" data-max-size-kb="{{ $option['max'] }}" data-extensions="{{ $option['extensions'] }}" @selected((string) old('document_type_id', $document->document_type_id ?? null) === (string) $id)>{{ $option['label'] }}</option>
@endforeach
</select>
</div>
<x-form-select name="verification_status" label="Status Verifikasi" :options="$verificationStatuses" :value="$document->verification_status ?? 'pending'" required />
<x-form-input name="document_number" label="Nomor Dokumen" :value="$document->document_number ?? ''" placeholder="Nomor dokumen (opsional)" />
<x-form-input name="issued_date" label="Tanggal Terbit" type="date" :value="isset($document?->issued_date) ? $document->issued_date?->format('Y-m-d') : ''" />
<x-form-input name="expired_date" label="Tanggal Kadaluarsa" type="date" :value="isset($document?->expired_date) ? $document->expired_date?->format('Y-m-d') : ''" />
<div class="md:col-span-2">
<label for="document_file" class="mb-2 block text-sm font-medium text-slate-700">File Dokumen</label>
<input id="document_file" name="document_file" type="file" accept=".jpg,.jpeg,.png,.pdf,.webp" class="block w-full rounded-2xl border border-slate-200 bg-white px-4 py-3 text-sm text-slate-700 file:mr-4 file:rounded-xl file:border-0 file:bg-indigo-50 file:px-4 file:py-2 file:text-sm file:font-semibold file:text-indigo-700 hover:file:bg-indigo-100">
<p class="mt-2 text-xs text-slate-400" data-allowed-extensions-info>Format diizinkan: {{ strtoupper(str_replace(',', ', ', $selectedExtensions)) }}.</p>
<p class="mt-1 text-xs font-medium text-indigo-600" data-max-file-size-info>
Maksimal ukuran file untuk jenis dokumen ini: {{ number_format($selectedMaxSizeKb / 1024, 2) }} MB
</p>
@if(isset($document) && $document->file_name)
<p class="mt-2 text-xs text-slate-500">File saat ini: {{ $document->file_name }}</p>
@endif
</div>
<div class="md:col-span-2">
<x-form-textarea name="description" label="Deskripsi" :value="$document->description ?? ''" placeholder="Catatan tambahan untuk dokumen ini" rows="4" />
</div>
<div class="md:col-span-2">
<x-form-textarea name="verification_note" label="Catatan Verifikasi" :value="$document->verification_note ?? ''" placeholder="Catatan verifikasi, alasan revisi, atau keterangan tambahan" rows="3" />
</div>
</div>
</x-master-card>
<x-master-card title="Ringkasan Siswa" subtitle="Dokumen ini akan terhubung ke siswa berikut.">
<div class="space-y-4 text-sm text-slate-600">
<div><span class="font-semibold text-slate-800">Nama Siswa:</span> {{ $student->full_name }}</div>
<div><span class="font-semibold text-slate-800">NIS:</span> {{ $student->student_number ?: '-' }}</div>
<div><span class="font-semibold text-slate-800">NISN:</span> {{ $student->nisn ?: '-' }}</div>
<div><span class="font-semibold text-slate-800">Tahun Angkatan:</span> {{ $student->academicYear?->name ?: '-' }}</div>
<div><span class="font-semibold text-slate-800">Program Keahlian:</span> {{ $student->department?->name ?: '-' }}</div>
<div><span class="font-semibold text-slate-800">Kelas:</span> {{ $student->classRoom?->name ?: '-' }}</div>
</div>
</x-master-card>
</div>
<div class="mt-6 flex flex-wrap items-center gap-3">
<button type="submit" class="rounded-2xl bg-indigo-600 px-5 py-3 text-sm font-semibold text-white shadow-lg shadow-indigo-200 transition hover:bg-indigo-700">{{ $submitLabel }}</button>
<a href="{{ route('students.show', $student) }}" class="rounded-2xl border border-slate-200 px-5 py-3 text-sm font-semibold text-slate-700 transition hover:bg-slate-50">Kembali</a>
</div>