@php // Fetch all active perangkat desa $allPerangkats = \App\Models\PerangkatDesa::where('status', 'aktif')->orderBy('urutan')->get(); // Helper to find a perangkat by search keywords in their position title $findPerangkat = function($keywords) use ($allPerangkats) { return $allPerangkats->first(function($p) use ($keywords) { $jabatanLower = Str::lower($p->jabatan); foreach ($keywords as $kw) { if (Str::contains($jabatanLower, $kw)) { return true; } } return false; }); }; // Resolve specific roles using keyword matching $bpd = $findPerangkat(['bpd', 'badan permusyawaratan']); $lpm = $findPerangkat(['lpm', 'lembaga pemberdayaan']); // Fallback to the root node if no explicit "Kepala Desa" is matched $kades = $findPerangkat(['kepala desa', 'kades', 'penjabat kepala', 'pj kepala', 'plt kepala']); if (!$kades) { $kades = $allPerangkats->whereNull('atasan_id')->first(); } $sekdes = $findPerangkat(['sekretaris desa', 'sekdes']); $kasiPemerintahan = $findPerangkat(['kasi pemerintahan', 'seksi pemerintahan', 'pemerintahan']); // Kasi Kesejahteraan & Pelayanan $kasiKesraPelayanan = $findPerangkat(['kesejahteraan & pelayanan', 'kesejahteraan dan pelayanan', 'kesejahteraan', 'pelayanan', 'kesra', 'sosial']); $kaurTuUmum = $findPerangkat(['tu & umum', 'tata usaha dan umum', 'tu dan umum', 'tata usaha', 'umum']); $kaurPerencanaan = $findPerangkat(['perencanaan', 'rencana']); $kaurKeuangan = $findPerangkat(['keuangan', 'keu', 'bendahara']); // Filter Kepala Dusuns $kadusList = $allPerangkats->filter(function($p) { $jab = Str::lower($p->jabatan); return Str::contains($jab, ['dusun', 'kadus', 'kewilayahan']); })->values(); // Map to 7 Dusun slots $dusunSlots = []; for ($i = 1; $i <= 7; $i++) { $matched = $kadusList->first(function($kd) use ($i) { $jab = Str::lower($kd->jabatan); $roman = ['1' => 'i', '2' => 'ii', '3' => 'iii', '4' => 'iv', '5' => 'v', '6' => 'vi', '7' => 'vii']; $words = ['1' => 'satu', '2' => 'dua', '3' => 'tiga', '4' => 'empat', '5' => 'lima', '6' => 'enam', '7' => 'tujuh']; return Str::contains($jab, ["dusun $i", "dusun " . $roman[$i], "dusun " . $words[$i], "kadus $i", "kadus " . $roman[$i]]); }); if (!$matched && isset($kadusList[$i - 1])) { $matched = $kadusList[$i - 1]; } $dusunSlots[$i] = $matched; } @endphp
BPD
@include('partials.org-card-new', ['perangkat' => $kades, 'defaultTitle' => 'Kepala Desa', 'type' => 'kades'])
LPM
@include('partials.org-card-new', ['perangkat' => $sekdes, 'defaultTitle' => 'Sekretaris Desa', 'type' => 'sekdes'])
@include('partials.org-card-new', ['perangkat' => $kasiPemerintahan, 'defaultTitle' => 'Kasi Pemerintahan', 'type' => 'kasi_kaur'])
@include('partials.org-card-new', ['perangkat' => $kasiKesraPelayanan, 'defaultTitle' => 'Kasi Kesejahteraan & Pelayanan', 'type' => 'kasi_kaur'])
@include('partials.org-card-new', ['perangkat' => $kaurTuUmum, 'defaultTitle' => 'Kaur Tata Usaha & Umum', 'type' => 'kasi_kaur'])
@include('partials.org-card-new', ['perangkat' => $kaurPerencanaan, 'defaultTitle' => 'Kaur Perencanaan', 'type' => 'kasi_kaur'])
@include('partials.org-card-new', ['perangkat' => $kaurKeuangan, 'defaultTitle' => 'Kaur Keuangan', 'type' => 'kasi_kaur'])
@for($i = 1; $i <= 7; $i++) @php $leftOffset = [1 => 85, 2 => 240, 3 => 395, 4 => 550, 5 => 705, 6 => 860, 7 => 1015][$i]; @endphp
@endfor
@for($i = 1; $i <= 7; $i++)
@include('partials.org-card-new', ['perangkat' => $dusunSlots[$i], 'defaultTitle' => 'Kepala Dusun ' . $i, 'type' => 'dusun'])
@endfor