diff --git a/resources/views/customers/v2/index.blade.php b/resources/views/customers/v2/index.blade.php
index 10d2fcb..5bdfe89 100644
--- a/resources/views/customers/v2/index.blade.php
+++ b/resources/views/customers/v2/index.blade.php
@@ -71,12 +71,27 @@
@if($search == true && $blacklist_search == false)
-
-
- Daftar Pelanggan
-
-
- @endif
+
+
+ {{-- ✅ Jika anggota tapi belum daftar pelanggan --}}
+ @if(isset($showDaftarPelangganBtn) && $showDaftarPelangganBtn)
+
+ Daftar Pelanggan
+
+ @endif
+
+ {{-- ✅ Jika pelanggan dah ada tapi belum anggota --}}
+ @if(isset($showAssignAnggotaBtn) && $showAssignAnggotaBtn)
+
+ @endif
+
+
+@endif
+
@@ -478,42 +493,75 @@
+
+@endif
@@ -167,7 +339,7 @@
$activate_tab = request()->session()->pull('activate_tab', 'SAG_lama');
$activate_tab_SAG_baru = $activate_tab === 'SAG_baru' ? 'active' : '';
- $aria_selected_SAG_baru = $activate_tab === 'SAG_baru' ? 'true' : 'false';
+ $aria_selected_SAG_baru = $activate_tab === 'SAG_baru' ? 'true' : 'false';
$activate_pane_SAG_baru = $activate_tab === 'SAG_baru' ? 'active show' : '';
$activate_tab_SAG_lama = $activate_tab === 'SAG_lama' ? 'active' : '';
@@ -403,16 +575,24 @@
@php
- $poskod = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/poskod/'. $customer_info['poskod'])->json();
- // $data = $poskod;
- // $poskod2 = array('koddaerah'=>'NIL','kodnegeri' => 'NIL');
- // dd($poskod,$poskod2,$data,$customer_info);
- if(empty($poskod)){
- $poskod = array('koddaerah'=>'NIL','kodnegeri' => 'NIL');
- }
- $daerah = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/daerah/' . $poskod['koddaerah'])->json();
- @endphp
-
+ $poskod = Http::withOptions(['verify' => config('app.api_verify')])
+ ->get($api_url . '/api/poskod/' . $customer_info['poskod'])
+ ->json();
+
+ // Jika tiada data poskod atau tiada koddaerah
+ if (empty($poskod) || !isset($poskod['koddaerah'])) {
+ $poskod = ['koddaerah' => 'NIL', 'kodnegeri' => 'NIL'];
+ }
+
+ $daerah = Http::withOptions(['verify' => config('app.api_verify')])
+ ->get($api_url . '/api/daerah/' . $poskod['koddaerah'])
+ ->json();
+@endphp
+
+
+
@@ -2996,6 +3176,126 @@
});
}
}
+
+ async function assignAnggota(e){
+ let noic = $(e).data('noic');
+
+ const swalWithBootstrapButtons = Swal.mixin({
+ customClass: {
+ confirmButton: 'btn btn-success me-2',
+ cancelButton: 'btn btn-danger'
+ },
+ buttonsStyling: false
+ });
+
+ try {
+ // 1️⃣ Sahkan tindakan
+ const confirm = await swalWithBootstrapButtons.fire({
+ title: 'Mohon Kelulusan Operasi',
+ text: 'Adakah anda pasti mahu mohon kelulusan operasi untuk assign sebagai anggota?',
+ icon: 'question',
+ showCancelButton: true,
+ confirmButtonText: 'Ya, Hantar Mohon',
+ cancelButtonText: 'Batal',
+ reverseButtons: true
+ });
+
+ if (!confirm.isConfirmed) {
+ await Swal.fire('Dibatalkan', 'Tindakan tidak diteruskan.', 'info');
+ return;
+ }
+
+ console.log(confirm);
+
+ // 2️⃣ Masukkan komen
+ const komenPrompt = await Swal.fire({
+ title: 'Masukkan Komen',
+ input: 'text',
+ inputPlaceholder: 'Contoh: Layak sebagai anggota',
+ showCancelButton: true,
+ confirmButtonText: 'Hantar',
+ cancelButtonText: 'Batal',
+ inputValidator: (value) => !value && 'Sila masukkan komen!'
+ });
+
+ if (!komenPrompt.isConfirmed) {
+ await Swal.fire('Dibatalkan', 'Tiada komen dimasukkan.', 'info');
+ return;
+ }
+
+ const komen = komenPrompt.value;
+
+ // 3️⃣ Papar popup loading
+ Swal.fire({
+ title: 'Tunggu Pengesahan Operasi',
+ text: 'Permohonan sedang menunggu kelulusan operasi...',
+ icon: 'info',
+ allowOutsideClick: false,
+ allowEscapeKey: false,
+ showConfirmButton: false,
+ didOpen: () => Swal.showLoading()
+ });
+
+ // 4️⃣ Aktifkan listener Pusher terlebih dahulu
+ const pusher = new Pusher("{{ env('PUSHER_APP_KEY') }}", {
+ cluster: 'ap1',
+ encrypted: true
+ });
+ const channel = pusher.subscribe('notice-anggota');
+
+ channel.bind('my-anggota', function (data) {
+ // Padankan hanya berdasarkan noic
+ console.log(data,noic);
+ if (data.noic == noic) {
+ Swal.close(); // tutup loading
+
+ if (data.status === 'DILULUSKAN') {
+ Swal.fire({
+ icon: 'success',
+ title: 'Diluluskan oleh Operasi',
+ confirmButtonText: 'OK'
+ }).then(() => location.reload());
+ } else if (data.status === 'DITOLAK') {
+ Swal.fire({
+ icon: 'warning',
+ title: 'Permohonan Dibatalkan',
+ confirmButtonText: 'OK'
+ });
+ }
+ }
+ });
+
+ // 5️⃣ Hantar permohonan ke backend
+ const response = await fetch("{{ route('operasi.createkelulusan-anggota') }}", {
+ method: 'POST',
+ headers: {
+ "Content-Type": "application/json",
+ "X-CSRF-TOKEN": "{{ csrf_token() }}"
+ },
+ body: JSON.stringify({
+ mohon: "Assign Anggota",
+ nokp: noic,
+ komen: komen,
+ teller: "{{ Auth::user()->name }}",
+ tagoperasi: 1 // tunggu kelulusan operasi
+ })
+ });
+
+ const result = await response.json();
+ if (!response.ok || !result) throw new Error(result.message || 'Ralat semasa menghantar permohonan.');
+
+ console.log(result);
+
+ } catch (error) {
+ console.error('Ralat mohonKelulusanOperasiAnggota:', error);
+ Swal.fire({
+ icon: 'error',
+ title: 'Ralat',
+ text: 'Gagal menghantar permohonan kelulusan operasi. Sila cuba semula.'
+ });
+ }
+}
+
+@endsection