From 31dc30ed608c7175e4b55fa3fb99d224917c52d7 Mon Sep 17 00:00:00 2001 From: nurafrinaalimi16 Date: Mon, 10 Nov 2025 18:46:37 +0800 Subject: [PATCH] update all blade views for kadar anggota koperasi --- resources/views/customers/v2/index.blade.php | 106 ++-- resources/views/customers/v2/info.blade.php | 328 +++++++++++- resources/views/gadaian/v2/index.blade.php | 6 + .../views/homepage/operasi/home.blade.php | 1 + .../views/operasi/kelulusan_anggota.blade.php | 480 ++++++++++++++++++ 5 files changed, 878 insertions(+), 43 deletions(-) create mode 100644 resources/views/operasi/kelulusan_anggota.blade.php 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) -
- -
- @endif +
+ + {{-- ✅ Jika anggota tapi belum daftar pelanggan --}} + @if(isset($showDaftarPelangganBtn) && $showDaftarPelangganBtn) + + @endif + + {{-- ✅ Jika pelanggan dah ada tapi belum anggota --}} + @if(isset($showAssignAnggotaBtn) && $showAssignAnggotaBtn) +
+ @csrf + + +
+ @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