{{-- ================================================================================================= FILE : resources/views/anggota/create.blade.php MODUL : Tambah Anggota TAHUN : 2026 FUNGSI: - Form tambah anggota baru. - Dropdown wilayah dinamis (Provinsi -> Kota -> Kecamatan -> Desa) via API. - Pembatasan pilihan ROLE berdasarkan role user yang login. - Wilayah otomatis lock sesuai level user login. - Untuk user ranting/operator ranting: provinsi, kabupaten, kecamatan auto terisi & terkunci; desa tetap bisa dipilih. ================================================================================================= --}} @extends('layouts.dashboard') @section('title', 'Tambah Anggota') @section('pagetitle', 'Tambah Anggota') @push('styles') @endpush @section('content') @php $user = auth()->user(); $roleAliasMap = [ 'joudie' => 'joudie', 'superadmin' => 'superadmin', 'super_admin' => 'superadmin', 'dpp' => 'dpp', 'dpd_pengurus' => 'dpd_pengurus', 'dpdpengurus' => 'dpd_pengurus', 'dpd_operator' => 'dpd_operator', 'dpdoperator' => 'dpd_operator', 'opr_dpd' => 'dpd_operator', 'operator_dpd' => 'dpd_operator', 'dpc_pengurus' => 'dpc_pengurus', 'dpcpengurus' => 'dpc_pengurus', 'dpc_operator' => 'dpc_operator', 'dpcoperator' => 'dpc_operator', 'opr_dpc' => 'dpc_operator', 'operator_dpc' => 'dpc_operator', 'ranting_pengurus' => 'ranting_pengurus', 'rantingpengurus' => 'ranting_pengurus', 'ranting_operator' => 'ranting_operator', 'rantingoperator' => 'ranting_operator', 'opr_ranting' => 'ranting_operator', 'operator_ranting' => 'ranting_operator', 'opr_rtg' => 'ranting_operator', 'anggota' => 'anggota', ]; $loginRoleRaw = strtolower(trim((string)($user->role ?? ''))); $loginRoleNorm = $roleAliasMap[$loginRoleRaw] ?? $loginRoleRaw; $userProv = old('alamat_provinsi_id', session('login_provinsi') ?? ($user->alamat_provinsi_id ?? $user->alamatprovinsiid ?? $user->provinsi_id ?? null) ); $userKota = old('alamat_kota_id', session('login_kabupaten') ?? ($user->alamat_kota_id ?? $user->alamatkotaid ?? $user->kabupaten_id ?? $user->kota_id ?? null) ); $userKec = old('alamat_kecamatan_id', session('login_kecamatan') ?? ($user->alamat_kecamatan_id ?? $user->alamatkecamatanid ?? $user->kecamatan_id ?? null) ); $userDesa = old('alamat_desa_id', session('login_desa') ?? ($user->alamat_desa_id ?? $user->alamatdesaid ?? $user->desa_id ?? null) ); $oldProv = $userProv; $oldKota = $userKota; $oldKec = $userKec; $oldDesa = $userDesa; $roleHierarchy = [ 'joudie', 'superadmin', 'dpp', 'dpd_pengurus', 'dpd_operator', 'dpc_pengurus', 'dpc_operator', 'ranting_pengurus', 'ranting_operator', 'anggota', ]; $startIndexMap = [ 'joudie' => 0, 'superadmin' => 1, 'dpp' => 3, 'dpd_pengurus' => 4, 'dpd_operator' => 5, 'dpc_pengurus' => 6, 'dpc_operator' => 7, 'ranting_pengurus' => 8, 'ranting_operator' => 9, 'anggota' => 9, ]; $startIndex = $startIndexMap[$loginRoleNorm] ?? 9; $selectableRoles = array_slice($roleHierarchy, $startIndex); if ($loginRoleNorm !== 'joudie') { $selectableRoles = array_values(array_filter($selectableRoles, fn ($r) => $r !== 'joudie')); } if (isset($allowedRoles) && is_array($allowedRoles) && count($allowedRoles) > 0) { $selectableRoles = array_values(array_intersect($selectableRoles, $allowedRoles)); } $roleLabels = [ 'joudie' => 'Joudie', 'superadmin' => 'Superadmin', 'dpp' => 'DPP', 'dpd_pengurus' => 'DPD Pengurus', 'dpd_operator' => 'DPD Operator', 'dpc_pengurus' => 'DPC Pengurus', 'dpc_operator' => 'DPC Operator', 'ranting_pengurus' => 'Ranting Pengurus', 'ranting_operator' => 'Ranting Operator', 'anggota' => 'Anggota', ]; $lockProv = false; $lockKota = false; $lockKec = false; $lockDesa = false; if (in_array($loginRoleNorm, ['dpd_pengurus', 'dpd_operator'], true)) { $lockProv = true; } if (in_array($loginRoleNorm, ['dpc_pengurus', 'dpc_operator'], true)) { $lockProv = true; $lockKota = true; } if (in_array($loginRoleNorm, ['ranting_pengurus', 'ranting_operator'], true)) { $lockProv = true; $lockKota = true; $lockKec = true; } if ($loginRoleNorm === 'anggota') { $lockProv = true; $lockKota = true; $lockKec = true; $lockDesa = true; } $provinsis = collect($provinsis ?? []); $kotas = collect($kotas ?? []); $kecamatans = collect($kecamatans ?? []); $desas = collect($desas ?? []); @endphp