@php
$isTujuanAkhir = $suratMasuk->tujuan_akhir_id == auth()->id();
// Hanya penerima disposisi (atau jika tanpa source disposisi) yang berhak melengkapi lembar
$isPenerimaSourceDisposisi = !$suratMasuk->sourceDisposisi
|| $suratMasuk->sourceDisposisi->kepadaUsers()->where('user_id', auth()->id())->exists();
@endphp
@if(isset($disposisiUntukEditPenyampaian) && $disposisiUntukEditPenyampaian)
Edit Penyampaian
@if(auth()->user()->isPanglima() || auth()->user()->isWakilPanglima())
Sesuaikan ceklist penerima, instruksi, dan catatan penyampaian (seperti edit WA).
@else
Ubah penerima, instruksi, dan catatan ke jajaran SMIN dari halaman surat ini.
@endif
Lembar disposisi perlu dilengkapi sebelum surat diteruskan ke {{ $suratMasuk->tujuanAkhir->jabatan_with_satuan ?? 'tujuan' }}
@endif
{{-- Pimpinan: Buat Disposisi (jika sudah dibuatkan lembar disposisi atau pending dari disposisi) --}}
@php
// Cek apakah user sudah pernah membuat disposisi untuk surat ini (hanya boleh sekali)
// Gunakan query langsung ke database untuk memastikan akurasi
$hasAlreadyDisposisi = \App\Models\Disposisi::where('surat_masuk_id', $suratMasuk->id)
->where('pengirim_id', auth()->id())
->exists();
// Cek apakah user adalah TU dan menerima disposisi dari atasannya (pimpinan)
// Jika ya, tidak boleh disposisi lagi (akan loop)
// Gunakan loose comparison == untuk menghindari type mismatch
$isReceivingFromSuperior = $suratMasuk->sourceDisposisi &&
$suratMasuk->sourceDisposisi->pengirim_id == auth()->user()->superior_id;
// TU yang menerima disposisi dari pimpinan tidak boleh forward
$isTuReceivingFromPimpinan = auth()->user()->isTU() && $isReceivingFromSuperior;
@endphp
@if($canCreateDisposisi && ($suratMasuk->isDiagendakan() || $suratMasuk->isPending()) && !$hasAlreadyDisposisi && !$isTuReceivingFromPimpinan)
@php
$hasRecipients = auth()->user()->getDisposisiRecipients()->count() > 0;
@endphp
@if($hasRecipients)
Disposisikan Surat Ini
@endif
{{-- Pimpinan tanpa bawahan atau pimpinan yang tidak ingin disposisi: bisa langsung selesaikan --}}
@endif
{{-- Proses Surat (jika user adalah tujuan akhir, BUKAN pimpinan yang bisa disposisi, dan surat pending/sudah ada lembar disposisi) --}}
@if($isTujuanAkhir && !$canCreateDisposisi && ($suratMasuk->isDiagendakan() || $suratMasuk->isPending()) && $suratMasuk->status !== 'selesai' && $suratMasuk->status !== 'diproses')
@endif
{{-- Selesaikan Surat (jika user adalah tujuan akhir, BUKAN pimpinan yang bisa disposisi, dan surat sedang diproses) --}}
@if($isTujuanAkhir && !$canCreateDisposisi && $suratMasuk->isDiproses() && $suratMasuk->status !== 'selesai')
@endif
{{-- Status Diproses Info (hanya untuk non-pimpinan) --}}
@if($suratMasuk->status === 'diproses' && !$canCreateDisposisi && $isTujuanAkhir)
Surat Sedang Diproses
Setelah selesai ditindaklanjuti, klik tombol "Selesaikan Surat" di atas.
@endif
{{-- Status Diproses Info untuk Pimpinan (surat sudah didisposisikan) --}}
@if($suratMasuk->status === 'diproses' && $canCreateDisposisi)
Surat Sedang Diproses
Surat ini sudah didisposisikan. Status akan otomatis selesai ketika semua disposisi telah diselesaikan.
@if(!$hasAlreadyDisposisi)
{{-- Pimpinan yang belum disposisi bisa selesaikan manual --}}
@endif
@endif
{{-- Info: View Only (bukan tujuan akhir) - hidden --}}
{{-- @if(!$isTujuanAkhir && $suratMasuk->status !== 'selesai')
Mode Lihat
Surat ini ditujukan ke {{ $suratMasuk->tujuanAkhir->jabatan_short ?? '-' }}.
Anda dapat melihat surat ini karena berada dalam satuan yang sama.
@endif --}}
{{-- Status Selesai --}}
@if($suratMasuk->status === 'selesai')
Surat Selesai
@if($suratMasuk->catatan_selesai)
@endif
@if($suratMasuk->selesai_at)
Diselesaikan: {{ format_tanggal($suratMasuk->selesai_at, 'd F Y, H:i') }}
@if($suratMasuk->selesaiBy)
oleh {{ $suratMasuk->selesaiBy->jabatan_with_satuan }}
@endif
@endif
@endif
{{-- Link ke form Selesaikan Disposisi (hanya muncul jika belum re-disposisi) --}}
@if($suratMasuk->sourceDisposisi && $suratMasuk->sourceDisposisi->status !== 'selesai' && $suratMasuk->status === 'diproses' && !$hasAlreadyDisposisi)
@php
$isRecipientOfSource = $suratMasuk->sourceDisposisi->kepadaUsers()
->where('user_id', auth()->id())
->exists();
@endphp
@if($isRecipientOfSource)
Form Selesaikan Disposisi
@endif
@endif
{{-- Cetak Lembar Disposisi (Panglima/Wapang: hanya Kasmin/Paurmin, lainnya: penerima + satuan dibawahnya, tapi bukan pembuat) --}}
@php
// Ambil disposisi terakhir menggunakan query langsung
$latestDisposisi = \App\Models\Disposisi::where('surat_masuk_id', $suratMasuk->id)
->orderBy('created_at', 'desc')
->first();
@endphp
@if($latestDisposisi)
@php
// PAURTUUD SETUM selalu bisa melihat cetak lembar
$isSetumTU = auth()->user()->isSETUM() && auth()->user()->isTU();
// Pembuat disposisi tidak boleh melihat cetak lembar (gunakan == untuk loose comparison)
$isCreatorLatest = $latestDisposisi->pengirim_id == auth()->id();
$isFromPanglimaLatest = $latestDisposisi->dariUser && (
$latestDisposisi->dariUser->isPanglima() ||
$latestDisposisi->dariUser->isWakilPanglima()
);
if ($isSetumTU) {
$canPrintLembarLatest = true;
} elseif ($isCreatorLatest) {
// Pembuat disposisi tidak boleh print
$canPrintLembarLatest = false;
} elseif ($isFromPanglimaLatest) {
$userRoleLatest = strtolower(auth()->user()->jabatan_role ?? '');
$canPrintLembarLatest = str_contains($userRoleLatest, 'kasmin') || str_contains($userRoleLatest, 'paurmin');
} else {
$isRecipientLatest = $latestDisposisi->kepadaUsers->contains('id', auth()->id());
$recipientSatuansLatest = $latestDisposisi->kepadaUsers->pluck('satuan')->unique()->toArray();
$isInRecipientSatuanLatest = in_array(auth()->user()->satuan, $recipientSatuansLatest);
$canPrintLembarLatest = $isRecipientLatest || $isInRecipientSatuanLatest;
}
@endphp
@if($canPrintLembarLatest)
Cetak Lembar Disposisi
@endif
@endif
@php
// Pimpinan yang kembali ke dashboard:
// - pimpinan_tertinggi (Panglima, Wakil Panglima)
// - pimpinan_staf (ASREN, ASINTEL, ASOPS, ASPERS, ASLOG dan wakil-wakilnya)
// - pimpinan_satuan (Komandan satuan dan wakil-wakilnya)
$shouldGoToDashboard = auth()->user()->isPanglima() ||
auth()->user()->isWakilPanglima() ||
auth()->user()->role === 'pimpinan_staf' ||
auth()->user()->role === 'pimpinan_satuan' ||
auth()->user()->isWakilPimpinanStafSatuan();
// Izin edit surat (termasuk ganti PDF) dari tampilan disposisi
// Sama seperti aturan umum, plus KASMIN selalu boleh mengedit
$canModifyFromDisposisi = $suratMasuk->canBeModifiedBy(auth()->user()) || auth()->user()->isKASMIN();
@endphp
@if($canModifyFromDisposisi)
Edit Surat / PDF
@endif
@if($shouldGoToDashboard)
Kembali ke Dashboard
@else
Kembali ke Daftar
@endif