@section('page-title', 'Tambah Surat Masuk') @section('page-subtitle', 'Formulir tambah surat masuk baru')
Form Tambah Surat Masuk
@csrf
@error('nomor_surat')
{{ $message }}
@enderror
Nomor agenda akan dibuat otomatis saat surat dikirim atau disimpan
@error('tanggal_surat')
{{ $message }}
@enderror
Ditampilkan di paling atas dengan prioritas tinggi Surat kilat tidak bisa disimpan sebagai draft
@error('asal_surat')
{{ $message }}
@enderror
@error('perihal')
{{ $message }}
@enderror
@error('kategori_id')
{{ $message }}
@enderror
@if(auth()->user()->isTU() && !auth()->user()->isSETUM() && !auth()->user()->isOperatorTU()) {{-- TU Satuan (bukan Operator): tujuan otomatis ke atasan langsung, tampilkan info saja --}} @php // Khusus IT: tujuan ke SES IT terlebih dahulu, bukan langsung ke IR $isITSatuan = strtoupper(auth()->user()->satuan ?? '') === 'IT'; if ($isITSatuan) { $sesIT = \App\Models\User::where('is_active', true) ->where('satuan', 'IT') ->where('jabatan_role', 'ses_it') ->first(); $tujuanSurat = $sesIT ?? auth()->user()->superior; } else { $tujuanSurat = auth()->user()->superior; } @endphp
Surat akan dikirim ke: {{ $tujuanSurat->jabatan_with_satuan ?? $tujuanSurat->jabatan ?? 'Atasan' }}
@elseif(auth()->user()->isOperatorTU() && !auth()->user()->isSETUM()) {{-- Operator TU: tujuan otomatis ke atasan (TU satuan) --}} @php // Operator TU Bagian: tujuan ke kepala bagian (bukan ke TU) if (auth()->user()->isOperatorTUBagian() && auth()->user()->superior && auth()->user()->superior->superior) { $operatorTujuan = auth()->user()->superior->superior; // Kepala Bagian } else { // Operator IT tetap ke TU IT dulu (bukan langsung ke SES IT) $operatorTujuan = auth()->user()->superior; // TU Satuan } @endphp
Surat akan dikirim ke: {{ $operatorTujuan->jabatan_with_satuan ?? $operatorTujuan->jabatan ?? 'TU Satuan' }}
@else {{-- SETUM: bisa pilih multiple tujuan --}}
@php $oldTujuan = old('tujuan_akhir_id', []); if (!is_array($oldTujuan)) $oldTujuan = [$oldTujuan]; // Group SMIN (KASMIN & PAURMIN) - tampil sebagai KASMIN tapi value PAURMIN $sminUsers = $assignableUsers->filter(function($user) { return in_array($user->role, ['kasmin', 'paurmin', 'paurmin_smin']) || $user->satuan === 'SMIN' || in_array($user->jabatan_role, ['kasmin', 'paurmin', 'paurmin_smin']); }); // Cari PAURMIN untuk dijadikan value (cek role terlebih dahulu) $paurminUser = $sminUsers->firstWhere('role', 'paurmin', 'paurmin_smin') ?? $sminUsers->firstWhere('jabatan_role', 'paurmin', 'paurmin_smin'); // Tata Usaha (selain SMIN) dengan urutan custom $satuanOrder = [ 'IT' => 1, 'SINTEL' => 2, 'SOPS' => 3, 'SLOG' => 4, 'SPERS' => 5, 'SREN' => 6, 'PAMEN AHLI' => 7, 'SATDUKLOG' => 8, 'SATDUKMIN' => 9, 'PUSKODALOPS' => 10, 'DENMA' => 11, 'PEN' => 12, 'SAT SIBER' => 13, 'DENPOM' => 14, 'PUSDIKLATPASSUS' => 15, 'GRUP 1' => 16, 'GRUP 2' => 17, 'GRUP 3' => 18, 'GRUP 4' => 19, 'GRUP 5' => 20, 'GRUP 6' => 21, 'SAT 71' => 22, 'SAT 81' => 23, 'DEN INTEL' => 24, 'RUMKIT TK III' => 25, 'SETUM' => 26, ]; // Ambil semua TU users (termasuk bagian SATDUKLOG/SATDUKMIN) $tuUsers = $assignableUsers->filter(function($user) { return $user->role === 'tata_usaha' && !in_array($user->satuan, ['SMIN', 'KASMIN']) && !in_array($user->jabatan_role, ['kasmin', 'paurmin', 'paurmin_smin']); }) // Group by satuan dan ambil user pertama (untuk satuan biasa) // Untuk SATDUKLOG/SATDUKMIN, ambil semua user (tiap bagian) ->groupBy(function($user) { // Untuk bagian SATDUKLOG/SATDUKMIN, group by sub_unit agar masing-masing muncul if (in_array($user->satuan, ['SATDUKLOG', 'SATDUKMIN']) && $user->sub_unit) { return $user->satuan . '|' . $user->sub_unit; } return $user->satuan; }) ->map(function($group) { return $group->first(); }) ->sortBy(function($user) use ($satuanOrder) { // Bagian SATDUKLOG/SATDUKMIN mengikuti urutan induknya $order = $satuanOrder[$user->satuan] ?? 999; // Sub-unit ditambah desimal agar muncul setelah entry utama if (in_array($user->satuan, ['SATDUKLOG', 'SATDUKMIN']) && $user->sub_unit) { $subCode = preg_replace('/[^0-9]/', '', substr($user->sub_unit, 0, 4)); $isMainTuud = str_contains(strtoupper($user->sub_unit), 'TUUD') && !str_contains(strtoupper($user->sub_unit), 'URTUUD'); if ($isMainTuud) { return $order + 0.0; // TUUD utama di atas } return $order + 0.1 + (intval($subCode) * 0.001); } return $order; }); @endphp {{-- KASMIN Section (untuk SMIN) --}} @if($paurminUser)
Panglima dan Wakil Panglima
id, $oldTujuan) ? 'checked' : '' }}>
@endif {{-- Tata Usaha Section --}} @if($tuUsers->count() > 0) @php // Bagi menjadi 3 kolom dengan urutan vertikal $tuUsersArray = $tuUsers->values(); $colCount = 3; $perColumn = (int) ceil($tuUsersArray->count() / $colCount); $tuCol1 = $tuUsersArray->slice(0, $perColumn); $tuCol2 = $tuUsersArray->slice($perColumn, $perColumn); $tuCol3 = $tuUsersArray->slice($perColumn * 2); @endphp
Tata Usaha
@foreach([$tuCol1, $tuCol2, $tuCol3] as $column)
@foreach($column as $assignUser) @php // Label: untuk bagian SATDUKLOG/SATDUKMIN, tampilkan nama bagian dari sub_unit $isBagian = in_array($assignUser->satuan, ['SATDUKLOG', 'SATDUKMIN']) && $assignUser->sub_unit; $isMainTuud = $isBagian && str_contains(strtoupper($assignUser->sub_unit), 'TUUD') && !str_contains(strtoupper($assignUser->sub_unit), 'URTUUD'); if ($isBagian && !$isMainTuud) { // Ambil nama bagian, hilangkan kode dan URTUUD $displayLabel = preg_replace('/^.*?URTUUD\s*/i', '', $assignUser->sub_unit); if (empty(trim($displayLabel))) { $displayLabel = trim(preg_replace('/^[A-Z0-9]+\s+/i', '', $assignUser->sub_unit)); } $displayLabel = strtoupper(trim($displayLabel)); } else { $displayLabel = $assignUser->satuan; } @endphp
id, $oldTujuan) ? 'checked' : '' }}>
@endforeach
@endforeach
@endif
@error('tujuan_akhir_id')
{{ $message }}
@enderror @error('tujuan_akhir_id.*')
{{ $message }}
@enderror Pilih satu atau lebih pejabat tujuan surat (bisa multiple)
@endif
Upload file surat untuk dokumentasi (hanya PDF) @error('file_surat')
{{ $message }}
@enderror
@error('keterangan')
{{ $message }}
@enderror
Kembali
Preview File

Upload file untuk melihat preview

{{-- Script untuk disable draft saat kilat aktif --}} {{-- Script validasi PDF only --}}