Files
erahn-click/app/Http/Controllers/HomeController.php
T
2025-08-31 21:56:32 +08:00

144 lines
5.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Services\PembiayaanService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Http;
class HomeController extends Controller
{
private $pembiayaanService;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct(PembiayaanService $pembiayaanService)
{
$this->pembiayaanService = $pembiayaanService;
$this->middleware(['auth', 'verified']);
}
/**
* Show the application buffer page.
*
* @return \Illuminate\View\View
*/
public function buffer(Request $request)
{
$homeUrl = route('home');
$authUser = Auth::user();
$customer_pkb = Http::withOptions(['verify' => config('app.api_verify')])
->get(config('api.url') . '/portal/customer/info', ['ic' => $authUser['icno']])
->json();
$customer_koop = Http::withOptions(['verify' => config('app.api_verify')])
->get(config('api.url_koop') . '/portal/customer/info', ['ic' => $authUser['icno']])
->json();
$customerLelong = $this->getCustomerInfoLelong($authUser['icno']);
// ['gadai' => $customer_gadai, 'lelong' => $customer_lelong] = $customerInfo;
$customer_gadai = array_merge(
$customer_pkb['gadai'] ?? [],
$customer_koop['gadai'] ?? []
);
$customer_lelong = array_merge(
$customer_pkb['lelong'] ?? [],
$customer_koop['lelong'] ?? []
);
// only get lelong that is harga jualan that is not null or 0
$customer_lelong = array_filter($customer_lelong, fn($x) => $x['hargajualan'] != null && $x['hargajualan'] != 0);
$formatMoney = fn($x) => number_format($x, 2);
$getTotal = fn($x) => array_reduce($x, fn($accumulator, $current_item) => $accumulator + $current_item['bakipjm'], 0);
$total = $formatMoney($getTotal($customer_gadai));
$sixMonths = sizeOf(array_filter($customer_gadai, fn($x) => $x['tempoh'] >= 6));
$bilanganLelong = sizeOf($customer_lelong);
$bilangan = sizeof($customer_gadai) + sizeOf($customer_lelong);
return view('includes.buffer', compact('bilangan', 'sixMonths', 'total', 'bilanganLelong', 'homeUrl','customerLelong'));
}
/**
* Show the application dashboard.
*
* @return \Illuminate\View\View
*/
public function index(Request $request)
{
$pembiayaan = $this->pembiayaanService->getPembiayaan($request->filter);
$authUser = Auth::user();
$customer_pkb = Http::withOptions(['verify' => config('app.api_verify')])
->get(config('api.url') . '/portal/customer/info', ['ic' => $authUser['icno']])
->json();
$customer_koop = Http::withOptions(['verify' => config('app.api_verify')])
->get(config('api.url_koop') . '/portal/customer/info', ['ic' => $authUser['icno']])
->json();
$customerLelong = $this->getCustomerInfoLelong($authUser['icno']);
// ['gadai' => $customer_gadai, 'lelong' => $customer_lelong] = $customerInfo;
$customer_gadai = array_merge(
$customer_pkb['gadai'] ?? [],
$customer_koop['gadai'] ?? []
);
$customer_lelong = array_merge(
$customer_pkb['lelong'] ?? [],
$customer_koop['lelong'] ?? []
);
// only get lelong that is harga jualan that is not null or 0
$customer_lelong = array_filter($customer_lelong, fn($x) => $x['hargajualan'] != null && $x['hargajualan'] != 0);
$formatMoney = fn($x) => number_format($x, 2);
$getTotal = fn($x) => array_reduce($x, fn($accumulator, $current_item) => $accumulator + $current_item['bakipjm'], 0);
$total = $formatMoney($getTotal($customer_gadai));
$sixMonths = sizeOf(array_filter($customer_gadai, fn($x) => $x['tempoh'] >= 6));
$bilanganLelong = sizeOf($customer_lelong);
$bilangan = sizeof($customer_gadai) + sizeOf($customer_lelong);
return view('includes.home', compact('bilangan', 'sixMonths', 'total', 'bilanganLelong', 'pembiayaan','customerLelong'));
}
private function getCustomerInfoLelong($icno){
$customerLelong = Http::withOptions(['verify' => config('app.api_verify')])
->get(config('api.url') . '/portal/customer/info/lelong', ['ic' => $icno])
->json();
$customerLelongKoop = Http::withOptions(['verify' => config('app.api_verify')])
->get(config('api.url_koop') . '/portal/customer/info/lelong', ['ic' => $icno])
->json();
// Extract data with null safety
$bakiLelong = isset($customerLelong['success']) && $customerLelong['success']
? ($customerLelong['data']['bakilelong'] ?? 0) : 0;
$rugiLelong = isset($customerLelong['success']) && $customerLelong['success']
? ($customerLelong['data']['rugilelong'] ?? 0) : 0;
$bakiKoop = isset($customerLelongKoop['success']) && $customerLelongKoop['success']
? ($customerLelongKoop['data']['bakilelong'] ?? 0) : 0;
$rugiKoop = isset($customerLelongKoop['success']) && $customerLelongKoop['success']
? ($customerLelongKoop['data']['rugilelong'] ?? 0) : 0;
// Calculate totals
$totalBakiLelong = $bakiLelong + $bakiKoop;
$totalRugiLelong = $rugiLelong + $rugiKoop;
return ['rugilelong' => $totalRugiLelong, 'bakilelong' => $totalBakiLelong];
}
}