diff --git a/app/Http/Controllers/CustomersController.php b/app/Http/Controllers/CustomersController.php index 91351741..518115cc 100644 --- a/app/Http/Controllers/CustomersController.php +++ b/app/Http/Controllers/CustomersController.php @@ -581,4 +581,113 @@ class CustomersController extends Controller return redirect()->back()->with('error', 'Gagal mengemaskini status anggota. Sila cuba semula.'); } } + + public function printMaklumat(Request $request) + { + $noic = $request->query('noic') ?: Session::get('noic'); + if (empty($noic)) { + return redirect('/pelanggan'); + } + + $auth_user = Auth::user(); + $api_url = config('api.url'); + $verify = ['verify' => config('app.api_verify')]; + $kodcaw = $auth_user['cawangan']; + + $customer = Http::withOptions($verify)->get($api_url . '/api/customers/' . $noic)->json(); + if (!is_array($customer) || (empty($customer['nama']) && empty($customer['nopelanggan']) && empty($customer['kpbaru']) && empty($customer['kplama']))) { + abort(404, 'Pelanggan tidak dijumpai.'); + } + + $cawanganResp = Http::withOptions($verify)->get($api_url . '/api/cawangan/detail/' . $kodcaw)->json(); + $cawangan_detail = (is_array($cawanganResp) && isset($cawanganResp[0])) + ? $cawanganResp[0] + : (is_array($cawanganResp) ? $cawanganResp : []); + + $banks = Http::withOptions($verify)->get($api_url . '/api/bank')->json(); + $pekerjaanList = Http::withOptions($verify)->get($api_url . '/api/pekerjaan')->json(); + + $poskodKod = $customer['poskod'] ?? ''; + $poskod = []; + if ($poskodKod !== '' && $poskodKod !== null) { + $poskodResp = Http::withOptions($verify)->get($api_url . '/api/poskod/' . $poskodKod)->json(); + if (is_array($poskodResp)) { + $poskod = $poskodResp; + } + } + + $daerahNama = 'NIL'; + $negeriNama = 'NIL'; + if (!empty($poskod['koddaerah'])) { + $daerahResp = Http::withOptions($verify)->get($api_url . '/api/daerah/' . $poskod['koddaerah'])->json(); + $daerahNama = is_array($daerahResp) ? ($daerahResp['namadaerah'] ?? 'NIL') : 'NIL'; + } + if (!empty($poskod['kodnegeri'])) { + $negeriResp = Http::withOptions($verify)->get($api_url . '/api/negeri/' . $poskod['kodnegeri'])->json(); + $negeriNama = is_array($negeriResp) ? ($negeriResp['negeri'] ?? 'NIL') : 'NIL'; + } + + $bankNama = $this->lookupListValue($banks, 'abbreviation', $customer['kodbank'] ?? null, 'name'); + $pekerjaanNama = $this->lookupListValue($pekerjaanList, 'kodkerja', $customer['kodkerja'] ?? null, 'keterangan'); + if (($customer['kodkerja'] ?? '') == '6' && !empty($customer['nota_pekerjaan'])) { + $pekerjaanNama = $customer['nota_pekerjaan']; + } + + $photo_svg = '' + . '' + . '' + . '' + . ''; + $photo_src = 'data:image/svg+xml;base64,' . base64_encode($photo_svg); + if (!empty($customer['photo_base64'])) { + $mime = $customer['photo_mime'] ?? 'image/jpeg'; + $photo_src = 'data:' . $mime . ';base64,' . $customer['photo_base64']; + } + + return view('print.maklumat_pelanggan', [ + 'cawangan' => $cawangan_detail['namacaw'] ?? ($cawangan_detail['details_caw'] ?? $kodcaw), + 'kodcaw' => $kodcaw, + 'alamat1' => $cawangan_detail['alamat1'] ?? '', + 'alamat2' => $cawangan_detail['alamat2'] ?? '', + 'notel' => $cawangan_detail['notel'] ?? '', + 'tarikh' => Carbon::now()->format('d/m/Y'), + 'nama' => $this->printBlank($customer['nama'] ?? null), + 'nokp' => $this->printBlank(!empty($customer['kpbaru']) ? $customer['kpbaru'] : ($customer['kplama'] ?? $noic)), + 'nopelanggan' => $this->printBlank($customer['nopelanggan'] ?? null), + 'status' => (!empty($customer['tag_anggota']) && $customer['tag_anggota'] == 1) ? 'Anggota Koperasi' : 'Pelanggan', + 'telefon' => $this->printBlank($customer['telefon'] ?? null), + 'telefon2' => $this->printBlank($customer['telefon2'] ?? null), + 'alamat' => $this->printBlank($customer['alamat1'] ?? null), + 'poskod' => $this->printBlank($customer['poskod'] ?? null), + 'daerah' => $daerahNama, + 'negeri' => $negeriNama, + 'bank' => $this->printBlank($bankNama), + 'noakaun' => $this->printBlank($customer['noakaun'] ?? null), + 'pekerjaan' => $this->printBlank($pekerjaanNama), + 'nota' => $this->printBlank($customer['nota'] ?? null), + 'photo_src' => $photo_src, + ]); + } + + private function printBlank($value) + { + if ($value === null) { + return 'NIL'; + } + $value = is_string($value) ? trim($value) : $value; + return $value === '' ? 'NIL' : $value; + } + + private function lookupListValue($list, $key, $match, $nameKey) + { + if (!is_array($list) || $match === null || $match === '' || $match === '-') { + return ''; + } + foreach ($list as $item) { + if (is_array($item) && ($item[$key] ?? null) == $match) { + return $item[$nameKey] ?? ''; + } + } + return ''; + } } diff --git a/resources/views/customers/v2/info.blade.php b/resources/views/customers/v2/info.blade.php index 729ef101..af62a94d 100644 --- a/resources/views/customers/v2/info.blade.php +++ b/resources/views/customers/v2/info.blade.php @@ -171,6 +171,11 @@ Maklumat Pelanggan + + @@ -635,6 +640,33 @@ + + +