{{-- ================================================================================================= FILE : resources/views/anggota/show.blade.php MODUL : Detail Data Anggota TAHUN : 2026 TUJUAN FILE: - Menampilkan data lengkap anggota dengan tampilan nyaman di Android dan desktop. - Konsisten dengan halaman index anggota. - Menampilkan foto, identitas utama, status kartu, wilayah, dan data tambahan. - Aman dipakai walau beberapa field model menggunakan nama berbeda (fallback field). CATATAN: - File ini mengasumsikan variabel utama yang dikirim dari controller adalah $anggota. - Jika controller Anda mengirim nama variabel lain, ganti $anggota sesuai variabel Anda. - Route edit menggunakan route('anggota.edit', $aId) - Route kembali menggunakan route('anggota.index') - Route cetak kartu menggunakan route('anggota.cetak.pasfoto', $aId) ================================================================================================= --}} @extends('layouts.dashboard') @section('title', 'Detail Anggota') @section('pagetitle', 'Detail Anggota') @section('content')
@php $user = auth()->user(); $anggota = $anggota ?? null; $roleRaw = (string)($user->role ?? ''); $roleKey = strtolower(trim($roleRaw)); $roleKey = str_replace([' ', '-'], '_', $roleKey); $roleAliasMap = [ 'joudie' => 'joudie', 'superadmin' => 'superadmin', 'super_admin' => 'superadmin', 'dpp' => 'dpp', 'dpd_pengurus' => 'dpdpengurus', 'dpdpengurus' => 'dpdpengurus', 'dpd_operator' => 'dpdoperator', 'dpdoperator' => 'dpdoperator', 'opr_dpd' => 'dpdoperator', 'operator_dpd' => 'dpdoperator', 'dpc_pengurus' => 'dpcpengurus', 'dpcpengurus' => 'dpcpengurus', 'dpc_operator' => 'dpcoperator', 'dpcoperator' => 'dpcoperator', 'opr_dpc' => 'dpcoperator', 'operator_dpc' => 'dpcoperator', 'ranting_pengurus' => 'rantingpengurus', 'rantingpengurus' => 'rantingpengurus', 'ranting_operator' => 'rantingoperator', 'rantingoperator' => 'rantingoperator', 'opr_ranting' => 'rantingoperator', 'operator_ranting' => 'rantingoperator', 'opr_rtg' => 'rantingoperator', 'anggota' => 'anggota', ]; $roleLabelMap = [ 'joudie' => 'Joudie', 'superadmin' => 'Superadmin', 'dpp' => 'DPP', 'dpdpengurus' => 'DPD Pengurus', 'dpdoperator' => 'DPD Operator', 'dpcpengurus' => 'DPC Pengurus', 'dpcoperator' => 'DPC Operator', 'rantingpengurus' => 'Ranting Pengurus', 'rantingoperator' => 'Ranting Operator', 'anggota' => 'Anggota', 'oprranting' => 'Ranting Operator', ]; $roleRank = [ 'joudie' => 1, 'superadmin' => 2, 'dpp' => 3, 'dpdpengurus' => 4, 'dpdoperator' => 5, 'dpcpengurus' => 6, 'dpcoperator' => 7, 'rantingpengurus' => 8, 'rantingoperator' => 9, 'anggota' => 10, ]; $rolesOperator = [ 'joudie','superadmin', 'dpp','dpdpengurus','dpdoperator', 'dpcpengurus','dpcoperator', 'rantingpengurus','rantingoperator', ]; $roleNorm = $roleAliasMap[$roleKey] ?? strtolower(str_replace('_', '', $roleKey)); $loginRank = $roleRank[$roleNorm] ?? 99; $canEditByRoleHierarchy = function (?string $targetRoleRaw) use ($roleRank, $loginRank, $roleAliasMap) { $tKey = strtolower(trim((string)($targetRoleRaw ?? 'anggota'))); $tKey = str_replace([' ', '-'], '_', $tKey); $tNorm = $roleAliasMap[$tKey] ?? strtolower(str_replace('_', '', $tKey)); $targetRank = $roleRank[$tNorm] ?? 99; return $targetRank > $loginRank; }; $aId = $anggota->anggotaid ?? ($anggota->anggota_id ?? ($anggota->id ?? null)); $nama = $anggota->namalengkap ?? ($anggota->nama_lengkap ?? '-'); $nik = $anggota->nik ?? '-'; $aRoleRaw = (string)($anggota->role ?? 'anggota'); $aRoleKey = strtolower(trim($aRoleRaw)); $aRoleKey = str_replace([' ', '-'], '_', $aRoleKey); $aRoleNorm = $roleAliasMap[$aRoleKey] ?? strtolower(str_replace('_', '', $aRoleKey)); $aRoleLabel = $roleLabelMap[$aRoleNorm] ?? ($aRoleKey !== '' ? $aRoleKey : '-'); $canEditThis = in_array($roleNorm, $rolesOperator, true) ? $canEditByRoleHierarchy($aRoleRaw) : false; $hasFoto = !empty($anggota->foto); $thumbUrl = null; $fullFotoUrl = null; if (!empty($anggota->foto)) { try { $filename = basename((string)$anggota->foto); $thumbUrl = route('pasfoto.thumb', ['filename' => $filename, 's' => 320]); $fullFotoUrl = route('pasfoto.thumb', ['filename' => $filename, 's' => 800]); } catch (\Throwable $e) { $thumbUrl = null; $fullFotoUrl = null; } } $statusKartu = $anggota->status_kartu ?? ($anggota->statuskartu ?? null); $statusKartuNorm = strtolower(trim((string)($statusKartu ?? ''))); $noKartu = trim((string)($anggota->no_kartu_anggota ?? ($anggota->nokartuanggota ?? ''))); $noKartuReady = ($noKartu !== ''); $badgeStatusKartu = 'secondary'; if ($statusKartuNorm === 'aktif') $badgeStatusKartu = 'success'; elseif ($statusKartuNorm === 'proses') $badgeStatusKartu = 'primary'; elseif ($statusKartuNorm === 'pesan') $badgeStatusKartu = 'warning'; elseif (!empty($statusKartuNorm)) $badgeStatusKartu = 'info'; $requirePhotoForPrint = false; $canPrint = ($statusKartuNorm === 'aktif' && $noKartuReady && ($requirePhotoForPrint ? $hasFoto : true)); $provId = $anggota->alamatprovinsiid ?? ($anggota->alamat_provinsi_id ?? null); $kotaId = $anggota->alamatkotaid ?? ($anggota->alamat_kota_id ?? null); $kecId = $anggota->alamatkecamatanid ?? ($anggota->alamat_kecamatan_id ?? null); $desaId = $anggota->alamatdesaid ?? ($anggota->alamat_desa_id ?? null); $provinsi = $anggota->provinsi->name ?? $provId ?? '-'; $kota = $anggota->kota->name ?? $kotaId ?? '-'; $kecamatan= $anggota->kecamatan->name ?? $kecId ?? '-'; $desa = $anggota->desa->name ?? $desaId ?? '-'; $wilayahLengkap = collect([$provinsi, $kota, $kecamatan, $desa])->filter(function ($v) { return filled($v) && $v !== '-'; })->implode(', '); $tempatLahir = $anggota->tempatlahir ?? ($anggota->tempat_lahir ?? '-'); $tanggalLahir = $anggota->tanggallahir ?? ($anggota->tanggal_lahir ?? null); $jenisKelamin = $anggota->jeniskelamin ?? ($anggota->jenis_kelamin ?? '-'); $alamat = $anggota->alamat ?? ($anggota->alamatlengkap ?? ($anggota->alamat_lengkap ?? '-')); $noHp = $anggota->nohp ?? ($anggota->no_hp ?? ($anggota->nomorhp ?? '-')); $email = $anggota->email ?? '-'; $statusOrganisasi = $anggota->statusorganisasi ?? ($anggota->status_organisasi ?? '-'); $jabatan = $anggota->jabatan->namajabatan ?? ($anggota->jabatan->nama_jabatan ?? ($anggota->namajabatan ?? ($anggota->nama_jabatan ?? '-'))); $pendidikan = $anggota->pendidikan->namapendidikan ?? ($anggota->pendidikan->nama_pendidikan ?? ($anggota->namapendidikan ?? ($anggota->nama_pendidikan ?? '-'))); $statusPekerjaan = $anggota->statuspekerjaan->namastatus ?? ($anggota->statuspekerjaan->nama_status ?? ($anggota->namastatus ?? ($anggota->nama_status ?? '-'))); $statusRumah = $anggota->statusrumah ?? ($anggota->status_rumah ?? '-'); $kondisiRumah = $anggota->kondisirumah ?? ($anggota->kondisi_rumah ?? '-'); $statusTanah = $anggota->statustanahpekarangan ?? ($anggota->status_tanah_pekarangan ?? '-'); $aksesListrik = $anggota->akseslistrik ?? ($anggota->akses_listrik ?? '-'); $aksesAirBersih = $anggota->aksesairbersih ?? ($anggota->akses_air_bersih ?? '-'); $sanitasi = $anggota->sanitasi ?? '-'; $bpjsKesehatan = $anggota->bpjskesehatan ?? ($anggota->bpjs_kesehatan ?? '-'); $bpjsKetenagakerjaan = $anggota->bpjsketenagakerjaan ?? ($anggota->bpjs_ketenagakerjaan ?? '-'); $asuransiNelayan = $anggota->asuransinelayan ?? ($anggota->asuransi_nelayan ?? '-'); $keanggotaanKoperasi = $anggota->keanggotaankoperasi ?? ($anggota->keanggotaan_koperasi ?? '-'); $kartuKusuka = $anggota->kartukusuka ?? ($anggota->kartu_kusuka ?? '-'); $caraPesanKartu = $anggota->cara_pesan_kartu ?? '-'; $formatDate = function ($value) { if (blank($value)) return '-'; try { return \Carbon\Carbon::parse($value)->translatedFormat('d M Y'); } catch (\Throwable $e) { return (string)$value; } }; $ttl = ($tempatLahir && $tempatLahir !== '-' ? $tempatLahir : '-') . (($tanggalLahir && $tanggalLahir !== '-') ? ', ' . $formatDate($tanggalLahir) : ''); @endphp

Detail Anggota

Informasi lengkap data anggota.
Kembali @if($canPrint) Cetak Kartu @endif @if($canEditThis) Edit @endif
@if($thumbUrl) @if($fullFotoUrl) Foto {{ $nama }} @else Foto {{ $nama }} @endif @else
@endif
{{ $statusKartu ?: '-' }} @if($hasFoto) Foto ada @else Belum ada foto @endif {{ $aRoleLabel }}
{{ $nama }}
NIK: {{ $nik }}
{{ $wilayahLengkap ?: '-' }}
Nomor Kartu Anggota
{{ $noKartuReady ? $noKartu : '-' }}
Cara Pesan Kartu
{{ $caraPesanKartu ?: '-' }}
Alamat Singkat
{{ $alamat ?: '-' }}
Identitas Utama
Nama Lengkap
{{ $nama }}
NIK
{{ $nik }}
Tempat, Tanggal Lahir
{{ $ttl }}
Jenis Kelamin
{{ $jenisKelamin ?: '-' }}
No. HP
{{ $noHp ?: '-' }}
Email
{{ $email ?: '-' }}
Role
{{ $aRoleLabel }}
Status Organisasi
{{ $statusOrganisasi ?: '-' }}
Wilayah dan Alamat
Provinsi
{{ $provinsi }}
Kabupaten / Kota
{{ $kota }}
Kecamatan
{{ $kecamatan }}
Desa / Kelurahan
{{ $desa }}
Alamat Lengkap
{{ $alamat ?: '-' }}
Organisasi dan Pendidikan
Jabatan
{{ $jabatan ?: '-' }}
Pendidikan
{{ $pendidikan ?: '-' }}
Status Pekerjaan
{{ $statusPekerjaan ?: '-' }}
Status Organisasi
{{ $statusOrganisasi ?: '-' }}
Rumah dan Akses Dasar
Status Rumah
{{ $statusRumah ?: '-' }}
Kondisi Rumah
{{ $kondisiRumah ?: '-' }}
Status Tanah / Pekarangan
{{ $statusTanah ?: '-' }}
Akses Listrik
{{ $aksesListrik ?: '-' }}
Akses Air Bersih
{{ $aksesAirBersih ?: '-' }}
Sanitasi
{{ $sanitasi ?: '-' }}
Kepesertaan dan Program
BPJS Kesehatan
{{ $bpjsKesehatan ?: '-' }}
BPJS Ketenagakerjaan
{{ $bpjsKetenagakerjaan ?: '-' }}
Asuransi Nelayan
{{ $asuransiNelayan ?: '-' }}
Keanggotaan Koperasi
{{ $keanggotaanKoperasi ?: '-' }}
Kartu Kusuka
{{ $kartuKusuka ?: '-' }}
Status Kartu Anggota
{{ $statusKartu ?: '-' }}
@endsection