@php $formType = $formType ?? 'all'; $isDisposisi = $formType === 'disposisi'; $isTeruskan = $formType === 'teruskan'; $isTUForm = !auth()->user()->isPAURMIN() && !auth()->user()->isKASMIN() && !auth()->user()->isOperatorSmin() && auth()->user()->isTU(); $isOperatorTUForm = auth()->user()->isOperatorTU() && isset($superiorTU) && $superiorTU; // Cross-satuan disposisi variables (from controller) $fromDisposisi = $fromDisposisi ?? null; $isFromCrossSatuanDisposisi = $isFromCrossSatuanDisposisi ?? false; if ($isOperatorTUForm) { $pageTitle = 'Teruskan Surat'; $pageSubtitle = 'Form teruskan surat ke Tata Usaha'; } elseif ($isFromCrossSatuanDisposisi) { $pageTitle = 'Lengkapi Lembar Disposisi'; $pageSubtitle = 'Disposisi dari satuan ' . ($fromDisposisi?->dariUser?->satuan ?? 'lain'); } elseif ($isTUForm) { $pageTitle = 'Teruskan Surat'; $pageSubtitle = 'Form teruskan surat ke pimpinan'; } elseif ($isTeruskan) { $pageTitle = 'Teruskan Surat'; $pageSubtitle = 'Form teruskan surat ke pimpinan satuan/staff'; } else { $pageTitle = 'Lengkapi Lembar Disposisi'; $pageSubtitle = 'Form pelengkapan lembar disposisi surat masuk'; } @endphp @section('page-title', $pageTitle) @section('page-subtitle', $pageSubtitle)
Informasi Surat
Nomor Surat {{ $suratMasuk->nomor_surat }}
Nomor Agenda {{ $suratMasuk->nomor_agenda }}
Tanggal Surat {{ $suratMasuk->tanggal_surat->format('d F Y') }}
Tanggal Diterima {{ $suratMasuk->tanggal_diterima->format('d F Y') }}
Asal Surat {{ $suratMasuk->asal_surat_short ?? $suratMasuk->asal_surat }}
Kategori {{ $suratMasuk->kategori->nama_kategori ?? '-' }}
{{-- Tujuan Awal di-hide --}}
Perihal {{ $suratMasuk->perihal }}
{{-- Informasi Disposisi Masuk (jika dari cross-satuan disposisi) --}} @if($isFromCrossSatuanDisposisi && $fromDisposisi)
Informasi Disposisi Masuk
Dari {{ $fromDisposisi->dariUser->jabatan_with_satuan ?? '-' }}
Tanggal Disposisi {{ $fromDisposisi->tanggal_disposisi_format ?? '-' }} WIB
@if($fromDisposisi->catatan)
Catatan dari {{ $fromDisposisi->dariUser->jabatan_with_satuan ?? 'Pengirim' }}
@endif @if($fromDisposisi->instruksis && $fromDisposisi->instruksis->count() > 0)
Instruksi dari Pengirim:
@foreach($fromDisposisi->instruksis as $instruksi) {{ $instruksi->nama_instruksi }} @endforeach
@endif
@endif {{-- PAURMIN dengan type disposisi: Form Lengkapi Lembar Disposisi --}} @if(auth()->user()->isPAURMIN() && $isDisposisi && isset($tujuanOptions) && $tujuanOptions->count() > 0)
Form Lengkapi Lembar Disposisi - Teruskan ke KASMIN untuk verifikasi
@csrf @php // Jika sudah ada nomor_agenda_internal, tampilkan // Jika belum, tampilkan preview format if ($suratMasuk->nomor_agenda_internal) { $previewNomorAgd = $suratMasuk->nomor_agenda_internal; } else { $bulanRomawi = [ 1 => 'I', 2 => 'II', 3 => 'III', 4 => 'IV', 5 => 'V', 6 => 'VI', 7 => 'VII', 8 => 'VIII', 9 => 'IX', 10 => 'X', 11 => 'XI', 12 => 'XII' ]; $agendaPrefix = $suratMasuk->kategori->agenda_prefix ?? 'SM'; $bulan = $bulanRomawi[$suratMasuk->tanggal_diterima?->month ?? now()->month]; $tahun = $suratMasuk->tanggal_diterima?->year ?? date('Y'); $satuan = strtoupper(auth()->user()->satuan ?? 'KOPASSUS'); if ($satuan !== 'KOPASSUS') { $previewNomorAgd = "{$agendaPrefix}/---/{$bulan}/{$satuan}/{$tahun}"; } else { $previewNomorAgd = "{$agendaPrefix}/---/{$bulan}/{$tahun}"; } } @endphp
Nomor Agenda Internal @if(!$suratMasuk->nomor_agenda_internal) (Urutan akan di-generate otomatis saat submit) @endif
{{-- Info: Surat akan diteruskan ke KASMIN --}}
Surat ini akan diteruskan ke KASMIN untuk diverifikasi dan dipilih tujuan akhir (Panglima/Wakil Panglima).
{{-- Catatan --}}
{{-- Button --}}
Kembali
@endif {{-- PAURMIN dengan type teruskan: Form Teruskan Surat --}} @if(auth()->user()->isPAURMIN() && $isTeruskan && isset($tujuanOptions) && $tujuanOptions->count() > 0)
Form Teruskan Surat - Pimpinan Satuan/Staff
@csrf @error('tujuan_akhir_id')
{{ $message }}
@enderror @error('tujuan_akhir_id.*')
{{ $message }}
@enderror {{-- Checkbox Pimpinan Satuan/Staff - URUTAN SAMA DENGAN KEPADA YTH DI PANGLIMA --}}
@php // Urutan sesuai lembar disposisi Pangkopassus (tanpa wakil_panglima, dimulai dari 1) $kepadaOrderPaurmin = [ 'ir' => 1, // IR 'danpusdiklatpassus' => 2, // DANPUSDIKLAT 'asren' => 3, // ASREN 'asintel' => 4, // ASINTEL 'asops' => 5, // ASOPS 'aspers' => 6, // ASPERS 'aslog' => 7, // ASLOG 'pamenahli_parako' => 8, // PAMEN AHLI BID PARAKO 'pamenahli_at' => 9, // PAMEN AHLI BID ANTI TEROR 'pamenahli_sandha' => 10, // PAMEN AHLI BID SANDHA 'pamenahli_diklat' => 11, // PAMEN AHLI BID DIKLAT 'pamenahli_opssus' => 12, // PAMEN AHLI BID OPERASI 'dansatduklog' => 13, // DANSATDUKLOG 'dansatdukmin' => 14, // DANSATDUKMIN 'kapuskodalops' => 15, // KAPUSKODALOPS 'kapen' => 16, // KAPEN 'kasetum' => 17, // KASETUM 'dangrup1' => 18, // DANGRUP 1 'dangrup2' => 19, // DANGRUP 2 'dangrup3' => 20, // DANGRUP 3 'dangrup4' => 21, // DANGRUP 4 'dangrup5' => 22, // DANGRUP 5 'dangrup6' => 23, // DANGRUP 6 'dansat71' => 24, // DANSAT 71 'dansat81' => 25, // DANSAT 81 'dandenma' => 26, // DANDENMA 'dandenintel' => 27, // DANDENINTEL 'dansatsiber' => 28, // DANSATSIBER 'dandenpom' => 29, // DANDENPOM 'karumkit' => 30, // KARUMKIT TK. III 'kapuskop' => 31, // KAPUSKOP (jika ada) 'kaykp' => 32, // KA YKP (jika ada) 'kasmin' => 33, // KASMIN ]; // Label singkat sesuai lembar disposisi $kepadaLabelsPaurmin = [ 'ir' => 'IR', 'danpusdiklatpassus' => 'DANPUSDIKLAT', 'asren' => 'ASREN', 'asintel' => 'ASINTEL', 'asops' => 'ASOPS', 'aspers' => 'ASPERS', 'aslog' => 'ASLOG', 'pamenahli_parako' => 'PAMEN AHLI BID PARAKO', 'pamenahli_at' => 'PAMEN AHLI BID ANTI TEROR', 'pamenahli_sandha' => 'PAMEN AHLI BID SANDHA', 'pamenahli_diklat' => 'PAMEN AHLI BID DIKLAT', 'pamenahli_opssus' => 'PAMEN AHLI BID OPERASI', 'dansatduklog' => 'DANSATDUKLOG', 'dansatdukmin' => 'DANSATDUKMIN', 'kapuskodalops' => 'KAPUSKODALOPS', 'kapen' => 'KAPEN', 'kasetum' => 'KASETUM', 'dangrup1' => 'DANGRUP 1', 'dangrup2' => 'DANGRUP 2', 'dangrup3' => 'DANGRUP 3', 'dangrup4' => 'DANGRUP 4', 'dangrup5' => 'DANGRUP 5', 'dangrup6' => 'DANGRUP 6', 'dansat71' => 'DANSAT 71', 'dansat81' => 'DANSAT 81', 'dandenma' => 'DANDENMA', 'dandenintel' => 'DANDENINTEL', 'dansatsiber' => 'DANSATSIBER', 'dandenpom' => 'DANDENPOM', 'karumkit' => 'KARUMKIT TK. III', 'kapuskop' => 'KAPUSKOP', 'kaykp' => 'KA YKP', 'kasmin' => 'KASMIN', ]; // Sort recipients by order (sama dengan Panglima) $sortedRecipientsPaurmin = $tujuanOptions->sortBy(function($r) use ($kepadaOrderPaurmin) { return $kepadaOrderPaurmin[$r->jabatan_role] ?? 999; })->values(); // Split into 3 columns (vertical flow like the document) $totalItemsPaurmin = $sortedRecipientsPaurmin->count(); $itemsPerColumnPaurmin = ceil($totalItemsPaurmin / 3); $col1Paurmin = $sortedRecipientsPaurmin->slice(0, $itemsPerColumnPaurmin); $col2Paurmin = $sortedRecipientsPaurmin->slice($itemsPerColumnPaurmin, $itemsPerColumnPaurmin); $col3Paurmin = $sortedRecipientsPaurmin->slice($itemsPerColumnPaurmin * 2); @endphp
{{-- Column 1 --}}
@foreach($col1Paurmin as $idx => $recipient)
id, old('tujuan_akhir_id', [])) ? 'checked' : '' }}>
@endforeach
{{-- Column 2 --}}
@foreach($col2Paurmin as $recipient)
id, old('tujuan_akhir_id', [])) ? 'checked' : '' }}>
@endforeach
{{-- Column 3 --}}
@foreach($col3Paurmin as $recipient)
id, old('tujuan_akhir_id', [])) ? 'checked' : '' }}>
@endforeach
{{-- Button --}}
Kembali
@endif {{-- KASMIN / Operator SMIN dengan type disposisi: Form Lengkapi Lembar Disposisi (sama seperti PAURMIN) --}} @if(auth()->user()->isKASMIN() && $isDisposisi && isset($tujuanOptions) && $tujuanOptions->count() > 0)
Form Lengkapi Lembar Disposisi - Pimpinan Utama
@csrf @error('tujuan_akhir_id')
{{ $message }}
@enderror @error('tujuan_akhir_id.*')
{{ $message }}
@enderror @php // Jika sudah ada nomor_agenda_internal, tampilkan // Jika belum, tampilkan preview format if ($suratMasuk->nomor_agenda_internal) { $previewNomorAgd = $suratMasuk->nomor_agenda_internal; } else { $bulanRomawi = [ 1 => 'I', 2 => 'II', 3 => 'III', 4 => 'IV', 5 => 'V', 6 => 'VI', 7 => 'VII', 8 => 'VIII', 9 => 'IX', 10 => 'X', 11 => 'XI', 12 => 'XII' ]; $agendaPrefix = $suratMasuk->kategori->agenda_prefix ?? 'SM'; $bulan = $bulanRomawi[$suratMasuk->tanggal_diterima?->month ?? now()->month]; $tahun = $suratMasuk->tanggal_diterima?->year ?? date('Y'); $satuan = strtoupper(auth()->user()->satuan ?? 'KOPASSUS'); if ($satuan !== 'KOPASSUS') { $previewNomorAgd = "{$agendaPrefix}/---/{$bulan}/{$satuan}/{$tahun}"; } else { $previewNomorAgd = "{$agendaPrefix}/---/{$bulan}/{$tahun}"; } } @endphp
Nomor Agenda Internal @if(!$suratMasuk->nomor_agenda_internal) (Urutan akan di-generate otomatis saat submit) @endif
{{-- Checkbox Pimpinan Utama --}}
@foreach($tujuanOptions->sortBy(function($u) { return $u->jabatan_role === 'panglima' ? 0 : 1; }) as $user)
id, old('tujuan_akhir_id', [$suratMasuk->tujuan_akhir_id])) ? 'checked' : '' }}>
@endforeach
{{-- Catatan --}}
{{-- Button --}}
Kembali
@endif {{-- KASMIN / Operator SMIN dengan type teruskan: Form Teruskan Surat (sama seperti PAURMIN) --}} @if(auth()->user()->isKASMIN() && $isTeruskan && isset($tujuanOptions) && $tujuanOptions->count() > 0)
Form Teruskan Surat - Pimpinan Satuan/Staff
@csrf @error('tujuan_akhir_id')
{{ $message }}
@enderror @error('tujuan_akhir_id.*')
{{ $message }}
@enderror {{-- Checkbox Pimpinan Satuan/Staff - URUTAN SAMA DENGAN KEPADA YTH DI PANGLIMA --}}
@php // Urutan sesuai lembar disposisi Pangkopassus (tanpa wakil_panglima, dimulai dari 1) $kepadaOrder = [ 'ir' => 1, // IR 'danpusdiklatpassus' => 2, // DANPUSDIKLAT 'asren' => 3, // ASREN 'asintel' => 4, // ASINTEL 'asops' => 5, // ASOPS 'aspers' => 6, // ASPERS 'aslog' => 7, // ASLOG 'pamenahli_parako' => 8, // PAMEN AHLI BID PARAKO 'pamenahli_at' => 9, // PAMEN AHLI BID ANTI TEROR 'pamenahli_sandha' => 10, // PAMEN AHLI BID SANDHA 'pamenahli_diklat' => 11, // PAMEN AHLI BID DIKLAT 'pamenahli_opssus' => 12, // PAMEN AHLI BID OPERASI 'dansatduklog' => 13, // DANSATDUKLOG 'dansatdukmin' => 14, // DANSATDUKMIN 'kapuskodalops' => 15, // KAPUSKODALOPS 'kapen' => 16, // KAPEN 'kasetum' => 17, // KASETUM 'dangrup1' => 18, // DANGRUP 1 'dangrup2' => 19, // DANGRUP 2 'dangrup3' => 20, // DANGRUP 3 'dangrup4' => 21, // DANGRUP 4 'dangrup5' => 22, // DANGRUP 5 'dangrup6' => 23, // DANGRUP 6 'dansat71' => 24, // DANSAT 71 'dansat81' => 25, // DANSAT 81 'dandenma' => 26, // DANDENMA 'dandenintel' => 27, // DANDENINTEL 'dansatsiber' => 28, // DANSATSIBER 'dandenpom' => 29, // DANDENPOM 'karumkit' => 30, // KARUMKIT TK. III 'kapuskop' => 31, // KAPUSKOP (jika ada) 'kaykp' => 32, // KA YKP (jika ada) 'kasmin' => 33, // KASMIN ]; // Label singkat sesuai lembar disposisi $kepadaLabels = [ 'ir' => 'IR', 'danpusdiklatpassus' => 'DANPUSDIKLAT', 'asren' => 'ASREN', 'asintel' => 'ASINTEL', 'asops' => 'ASOPS', 'aspers' => 'ASPERS', 'aslog' => 'ASLOG', 'pamenahli_parako' => 'PAMEN AHLI BID PARAKO', 'pamenahli_at' => 'PAMEN AHLI BID ANTI TEROR', 'pamenahli_sandha' => 'PAMEN AHLI BID SANDHA', 'pamenahli_diklat' => 'PAMEN AHLI BID DIKLAT', 'pamenahli_opssus' => 'PAMEN AHLI BID OPERASI', 'dansatduklog' => 'DANSATDUKLOG', 'dansatdukmin' => 'DANSATDUKMIN', 'kapuskodalops' => 'KAPUSKODALOPS', 'kapen' => 'KAPEN', 'kasetum' => 'KASETUM', 'dangrup1' => 'DANGRUP 1', 'dangrup2' => 'DANGRUP 2', 'dangrup3' => 'DANGRUP 3', 'dangrup4' => 'DANGRUP 4', 'dangrup5' => 'DANGRUP 5', 'dangrup6' => 'DANGRUP 6', 'dansat71' => 'DANSAT 71', 'dansat81' => 'DANSAT 81', 'dandenma' => 'DANDENMA', 'dandenintel' => 'DANDENINTEL', 'dansatsiber' => 'DANSATSIBER', 'dandenpom' => 'DANDENPOM', 'karumkit' => 'KARUMKIT TK. III', 'kapuskop' => 'KAPUSKOP', 'kaykp' => 'KA YKP', 'kasmin' => 'KASMIN', ]; // Sort recipients by order (sama dengan Panglima) $sortedRecipients = $tujuanOptions->sortBy(function($r) use ($kepadaOrder) { return $kepadaOrder[$r->jabatan_role] ?? 999; })->values(); // Split into 3 columns (vertical flow like the document) $totalItems = $sortedRecipients->count(); $itemsPerColumn = ceil($totalItems / 3); $col1 = $sortedRecipients->slice(0, $itemsPerColumn); $col2 = $sortedRecipients->slice($itemsPerColumn, $itemsPerColumn); $col3 = $sortedRecipients->slice($itemsPerColumn * 2); @endphp
{{-- Column 1 --}}
@foreach($col1 as $idx => $recipient)
id, old('tujuan_akhir_id', [])) ? 'checked' : '' }}>
@endforeach
{{-- Column 2 --}}
@foreach($col2 as $recipient)
id, old('tujuan_akhir_id', [])) ? 'checked' : '' }}>
@endforeach
{{-- Column 3 --}}
@foreach($col3 as $recipient)
id, old('tujuan_akhir_id', [])) ? 'checked' : '' }}>
@endforeach
{{-- Button --}}
Kembali
@endif {{-- KASMIN: Form Verifikasi Surat - Pilih tujuan Panglima/Wakil Panglima --}} @if(auth()->user()->isKASMIN() && $suratMasuk->isMenungguVerifikasiKasmin() && !$isTeruskan && !$isDisposisi) @php $panglimaWakilOptions = \App\Models\User::where('is_active', true) ->whereIn('jabatan_role', ['panglima', 'wakil_panglima']) ->orderByRaw("CASE WHEN jabatan_role = 'panglima' THEN 1 WHEN jabatan_role = 'wakil_panglima' THEN 2 ELSE 3 END") ->get(); @endphp
Verifikasi & Pilih Tujuan Surat
@if($suratMasuk->diagendakanBy)
{{ strtoupper(substr($suratMasuk->diagendakanBy->jabatan_short ?? '-', 0, 2)) }}

{{ $suratMasuk->diagendakanBy->jabatan_with_satuan ?? '-' }}

{{ $suratMasuk->diagendakan_at ? $suratMasuk->diagendakan_at->format('d/m/Y H:i') : '-' }}
@endif
@csrf {{-- Pilih Tujuan: Panglima atau Wakil Panglima --}} @if($panglimaWakilOptions->count() > 0)
@foreach($panglimaWakilOptions as $pwl)
first ? 'checked' : '' }} required>
@endforeach
@endif
@if($suratMasuk->catatan_agenda)
Catatan ini awalnya ditulis oleh PAURMIN. Anda dapat mengubahnya jika diperlukan.
@endif
Kembali
@endif {{-- OPERATOR TU: Form Teruskan Surat ke TU Atasan --}} @if(auth()->user()->isOperatorTU() && !$suratMasuk->isSminPangwapangRoute() && isset($superiorTU) && $superiorTU)
Teruskan Surat ke Tata Usaha
@csrf
Surat akan diteruskan ke {{ $superiorTU->jabatan_with_satuan }} untuk dilengkapi lembar disposisi.
Kembali
@elseif(auth()->user()->isOperatorTU() && !$suratMasuk->isSminPangwapangRoute()) {{-- Operator TU tanpa atasan TU --}}
Tidak Dapat Meneruskan Surat
Atasan TU tidak ditemukan. Silakan hubungi administrator untuk mengkonfigurasi atasan TU Anda.
Kembali
@endif {{-- SES IT: Form Lengkapi Lembar Disposisi dan Pilih Pimpinan IT --}} @if(auth()->user()->isSesIT() && isset($sesITOptions) && $sesITOptions->count() > 0)
Lengkapi Lembar Disposisi - Satuan IT
@csrf @error('tujuan_akhir_id')
{{ $message }}
@enderror @error('tujuan_akhir_id.*')
{{ $message }}
@enderror @php if ($suratMasuk->nomor_agenda_internal) { $previewNomorAgdSesIT = $suratMasuk->nomor_agenda_internal; } else { $bulanRomawi = [ 1 => 'I', 2 => 'II', 3 => 'III', 4 => 'IV', 5 => 'V', 6 => 'VI', 7 => 'VII', 8 => 'VIII', 9 => 'IX', 10 => 'X', 11 => 'XI', 12 => 'XII' ]; $agendaPrefix = $suratMasuk->kategori->agenda_prefix ?? 'SM'; $bulan = $bulanRomawi[$suratMasuk->tanggal_diterima?->month ?? now()->month]; $tahun = $suratMasuk->tanggal_diterima?->year ?? date('Y'); $previewNomorAgdSesIT = "{$agendaPrefix}/---/{$bulan}/IT/{$tahun}"; } @endphp
Nomor Agenda Internal @if(!$suratMasuk->nomor_agenda_internal) (Urutan akan di-generate otomatis saat submit) @endif
{{-- Checkbox Pimpinan IT --}}
@foreach($sesITOptions as $pimpinan) @php $pimpinanShortIT = $pimpinan->jabatan_short ?? $pimpinan->jabatan; $pimpinanLabelIT = $pimpinan->jabatan_with_satuan; @endphp
id, old('tujuan_akhir_id', [])) ? 'checked' : '' }}>
@endforeach
Pilih satu atau lebih pimpinan untuk menerima lembar disposisi
{{-- Catatan --}}
{{-- Button --}}
Kembali
@endif {{-- TU (non-KASMIN, non-PAURMIN, non-OperatorTU): Form Teruskan Surat ke Pimpinan --}} @if(!auth()->user()->isPAURMIN() && !auth()->user()->isKASMIN() && !auth()->user()->isOperatorSmin() && !auth()->user()->isOperatorTU() && !(auth()->user()->isSesIT() ?? false)) @php $pimpinanTU = auth()->user()->superior; $tuSatuan = auth()->user()->satuan; $currentUser = auth()->user(); $isTUBagian = $currentUser->isTUBagian(); // Jika superior TU adalah wakil (jabatan_role dimulai 'wa' atau 'wakil'), // maka cari Dan (pimpinan utama) dari superior wakil tersebut $wakilPimpinan = null; if ($pimpinanTU && !$isTUBagian) { $pimpinanRole = strtolower($pimpinanTU->jabatan_role ?? ''); $isWakil = str_starts_with($pimpinanRole, 'wa') || str_starts_with($pimpinanRole, 'wakil'); if ($isWakil && $pimpinanTU->superior) { // TU melapor ke Wakil, jadi Wakil = pimpinanTU, Dan = wakil's superior $wakilPimpinan = $pimpinanTU; $pimpinanTU = $pimpinanTU->superior; // Actual Dan } } $pimpinanLabel = $pimpinanTU ? $pimpinanTU->jabatan_with_satuan : 'Pimpinan'; $pimpinanShort = $pimpinanTU ? $pimpinanTU->jabatan_short : 'Pimpinan'; // Find wakil pimpinan in same satuan (hanya untuk TU utama, bukan TU bagian) if (!$isTUBagian && !$wakilPimpinan && $tuSatuan && $pimpinanTU) { $wakilPimpinan = \App\Models\User::where('is_active', true) ->where('satuan', $tuSatuan) ->where(function($q) { $q->where('jabatan_role', 'like', 'wa%') // wadandenma, wadangrup, etc. ->orWhere('jabatan_role', 'like', 'wakil%') // wakil_panglima, etc. ->orWhere('jabatan_role', 'like', '%waas%'); // waasren, waasintel, etc. }) ->whereIn('role', ['pimpinan_satuan', 'pimpinan_staf', 'pimpinan_2']) ->where('id', '!=', $pimpinanTU->id) ->first(); } $wakilLabel = $wakilPimpinan ? $wakilPimpinan->jabatan_with_satuan : null; $wakilShort = $wakilPimpinan ? $wakilPimpinan->jabatan_short : null; $hasWakil = $wakilPimpinan !== null; // Find Kepala Bagian/Kasi untuk satuan yang memiliki TU di sub-bagiannya // Untuk TU utama satuan (Katuud/Paurtuud), bukan TU bagian $kepalaBagianList = collect(); $isMainTU = !$isTUBagian && $currentUser->isTU() && (str_contains(strtolower($currentUser->jabatan_role), 'katuud') || str_contains(strtolower($currentUser->jabatan_role), 'kaurtuud') || str_contains(strtolower($currentUser->jabatan_role), 'paurtuud') || (str_contains(strtolower($currentUser->sub_unit ?? ''), 'tuud') && !str_contains(strtolower($currentUser->sub_unit ?? ''), 'urtuud'))); $isSatduklog = strtoupper($tuSatuan ?? '') === 'SATDUKLOG'; $isIT = strtoupper($tuSatuan ?? '') === 'IT'; if ($isMainTU && $tuSatuan && !$isSatduklog) { // Cara 1: Cari kepala_bagian via TU bagian (superior dari TU bagian) $bagianTUs = \App\Models\User::where('is_active', true) ->where('satuan', $tuSatuan) ->where('role', 'tata_usaha') ->where('id', '!=', $currentUser->id) ->whereNotNull('superior_id') ->get(); foreach ($bagianTUs as $bagianTU) { $kepalaBagian = $bagianTU->superior; if ($kepalaBagian && $kepalaBagian->role === 'kepala_bagian' && !$kepalaBagianList->contains('id', $kepalaBagian->id)) { $kepalaBagianList->push($kepalaBagian); } } // Urutkan berdasarkan sub_unit $kepalaBagianList = $kepalaBagianList->sortBy('sub_unit'); } // Untuk satuan IT: HANYA forward ke SES IT, tidak langsung ke pimpinan // SES IT yang akan melengkapi lembar disposisi dan memilih pimpinan (IR, WAIR, IRUTUM, IRUTBEN) $forceOnlySesIT = false; if ($isIT && $pimpinanTU && $isMainTU) { $sesIT = \App\Models\User::where('is_active', true) ->where('satuan', 'IT') ->where('jabatan_role', 'ses_it') ->first(); if ($sesIT) { // Reset kepalaBagianList dan hanya masukkan SES IT $kepalaBagianList = collect([$sesIT]); $forceOnlySesIT = true; } } $hasKepalaBagian = $kepalaBagianList->isNotEmpty(); @endphp
Lengkapi Lembar Disposisi & Teruskan Surat
@csrf {{-- Hidden field untuk cross-satuan disposisi --}} @if($isFromCrossSatuanDisposisi && $fromDisposisi) @endif @php // Jika sudah ada nomor_agenda_internal DAN bukan cross-satuan, tampilkan // Untuk cross-satuan: selalu generate preview baru dengan satuan TU yang login if ($suratMasuk->nomor_agenda_internal && !$isFromCrossSatuanDisposisi) { $previewNomorAgd = $suratMasuk->nomor_agenda_internal; } else { $bulanRomawi = [ 1 => 'I', 2 => 'II', 3 => 'III', 4 => 'IV', 5 => 'V', 6 => 'VI', 7 => 'VII', 8 => 'VIII', 9 => 'IX', 10 => 'X', 11 => 'XI', 12 => 'XII' ]; $agendaPrefix = $suratMasuk->kategori->agenda_prefix ?? 'SM'; $bulan = $bulanRomawi[now()->month]; // Gunakan bulan sekarang untuk cross-satuan $tahun = now()->year; // TU Bagian: gunakan nama bagian, bukan satuan if ($isTUBagian) { $bagianName = $currentUser->getBagianName(); $agdSatuan = strtoupper($bagianName ?? $currentUser->satuan ?? 'KOPASSUS'); } else { $agdSatuan = strtoupper($currentUser->satuan ?? 'KOPASSUS'); } if ($agdSatuan !== 'KOPASSUS') { $previewNomorAgd = "{$agendaPrefix}/---/{$bulan}/{$agdSatuan}/{$tahun}"; } else { $previewNomorAgd = "{$agendaPrefix}/---/{$bulan}/{$tahun}"; } } @endphp
Nomor Agenda Internal {{ strtoupper($currentUser->satuan ?? 'KOPASSUS') }} (Urutan akan di-generate otomatis saat submit)
@error('tujuan_penerima')
{{ $message }}
@enderror
@if(!($forceOnlySesIT ?? false)) {{-- Option: Pimpinan (hidden if forceOnlySesIT) --}}
@if($hasWakil) {{-- Option: Wakil Pimpinan --}}
@endif @endif @if($hasKepalaBagian) {{-- Divider (hide if forceOnlySesIT - SES IT is the main option) --}} @if(!($forceOnlySesIT ?? false))
Kepala Bagian / Kepala Seksi
@else {{-- Alert for IT satuan --}}
Surat akan diteruskan ke SES IT untuk dilengkapi lembar disposisi dan diteruskan ke pimpinan.
@endif {{-- Option: Kepala Bagian --}} @foreach($kepalaBagianList as $kabag) @php $kabagShort = $kabag->jabatan_short ?? $kabag->jabatan; $kabagLabel = $kabag->jabatan_with_satuan; // Ambil nama bagian dari sub_unit $bagianName = preg_replace('/^\d+[A-Z]?\d*\s+/', '', $kabag->sub_unit ?? ''); @endphp
id, old('tujuan_penerima', [])) ? 'checked' : '' }}>
@endforeach @endif
@if($forceOnlySesIT ?? false) SES IT akan melengkapi lembar disposisi dan memilih pimpinan tujuan @elseif($hasWakil || $hasKepalaBagian) Pilih satu atau lebih penerima untuk mengirim lembar disposisi @else Wakil pimpinan tidak tersedia untuk satuan ini @endif
Kembali
@endif
@push('styles') @endpush @if(auth()->user()->isPAURMIN() && $isDisposisi) @push('scripts') @endpush @endif {{-- TU Penerima Selection Script --}} @if(!auth()->user()->isPAURMIN() && !auth()->user()->isKASMIN() && !auth()->user()->isOperatorSmin()) @push('scripts') @endpush @endif