{{-- ================================================================================================= 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
Tambah Data Anggota
@if ($errors->any())
Terdapat kesalahan input:
    @foreach ($errors->all() as $err)
  • {{ $err }}
  • @endforeach
@endif
@csrf
Identitas Utama
@error('nik')
{{ $message }}
@enderror
@error('nama_lengkap')
{{ $message }}
@enderror
Data Pribadi
@error('tanggal_lahir')
{{ $message }}
@enderror
@error('jenis_kelamin')
{{ $message }}
@enderror
@error('id_agama')
{{ $message }}
@enderror
@error('pendidikan_id')
{{ $message }}
@enderror
@error('nomor_wa')
{{ $message }}
@enderror
@error('email')
{{ $message }}
@enderror
Status & Organisasi
@error('id_status')
{{ $message }}
@enderror
@error('jabatan_id')
{{ $message }}
@enderror
@error('status_organisasi')
{{ $message }}
@enderror
Wilayah Domisili
@if ($lockProv) @endif @error('alamat_provinsi_id')
{{ $message }}
@enderror @if ($lockProv)
Provinsi dikunci sesuai wilayah user login.
@endif
@if ($lockKota) @endif @error('alamat_kota_id')
{{ $message }}
@enderror @if ($lockKota)
Kabupaten / kota dikunci sesuai wilayah user login.
@endif
@if ($lockKec) @endif @error('alamat_kecamatan_id')
{{ $message }}
@enderror @if ($lockKec)
Kecamatan dikunci sesuai wilayah user login.
@endif
@if ($lockDesa) @endif @error('alamat_desa_id')
{{ $message }}
@enderror
@error('detail_alamat')
{{ $message }}
@enderror
Kondisi Tempat Tinggal
@error('status_rumah')
{{ $message }}
@enderror
@error('kondisi_rumah')
{{ $message }}
@enderror
@error('status_tanah_pekarangan')
{{ $message }}
@enderror
Akses Dasar Rumah Tangga
@error('akses_listrik')
{{ $message }}
@enderror
@error('akses_air_bersih')
{{ $message }}
@enderror
@error('sanitasi')
{{ $message }}
@enderror
Jaminan & Perlindungan
@error('bpjs_kesehatan')
{{ $message }}
@enderror
@error('bpjs_ketenagakerjaan')
{{ $message }}
@enderror
@error('asuransi_nelayan')
{{ $message }}
@enderror
Kesehatan & Sosial Ekonomi
@error('keanggotaan_koperasi')
{{ $message }}
@enderror
@error('kartu_kusuka')
{{ $message }}
@enderror
@error('riwayat_penyakit_kecelakaan')
{{ $message }}
@enderror
Akses Login
@error('password')
{{ $message }}
@enderror
Minimal 6 karakter.
@error('role')
{{ $message }}
@enderror
Role ditampilkan sesuai hak akses akun yang sedang login.
Kembali
@endsection @push('scripts') @endpush