(new InformationController())->pembiayaanaktif()->getData(); if ($filter === 'pembiayaan-6-bulan') { $getPembiayaan = fn() => (new InformationController())->pembiayaanmelebihi6bulan()->getData(); } if ($filter === 'pembiayaan-akan-dilelong') { $getPembiayaan = fn() => (new InformationController())->pembiayaanakandilelong()->getData(); } $pembiayaan = array_filter($getPembiayaan(), fn($x) => $x->hargajualan != null || $x->hargajualan != 0); // $pembiayaan_filter = array_filter($getPembiayaan(),fn($x) => $x->tag_syarikat == CompanyStatus::COM_PKB); // $pembiayaan_koop = array_filter($getPembiayaan(),fn($x) => $x->tag_syarikat == CompanyStatus::COM_PKB); $pembiayaan = $this->setUpahTawarruq($pembiayaan); $pembiayaan = $this->formatPembiayaanData($pembiayaan); $pembiayaan = $this->checkPembiayaanPaymentDisabled($pembiayaan); return $pembiayaan; } private function setUpahTawarruq($pembiayaan) { $getJenisKeuntungan = function ($x) { $jenisKeuntungan = [ '1' => 'onepercent', '0' => 'asal', ]; return $jenisKeuntungan[$x->tagbaru]; }; $getUpahTawarruqPerPembiayaan = function ($x) use ($getJenisKeuntungan) { $jenisKeuntungan = $getJenisKeuntungan($x); $CallableHttp = $x->tag_syarikat == CompanyStatus::COM_PKB ? Http::arrahn() : Http::arrahn_koop(); $upahTawarruq = $CallableHttp->get('/api/upahtawarruq/' . $x->kodcaw . '/' . $x->norujukan, ['jeniskeuntungan' => $jenisKeuntungan])->json(); if ($jenisKeuntungan == 'onepercent') { $x->upah_tawarruq = $upahTawarruq['keuntungan'] + $upahTawarruq['ujrah']; } if ($jenisKeuntungan == 'asal') { $x->upah_tawarruq = $upahTawarruq; } return $x; }; return array_map($getUpahTawarruqPerPembiayaan, $pembiayaan); } private function formatPembiayaanData($pembiayaan) { $arrahnCawangan = Http::arrahn()->get('/api/cawangan')->json(); $arrahnKoopCawangan = Http::arrahn_koop()->get('/api/cawangan')->json(); $allCawangan = array_merge($arrahnCawangan, $arrahnKoopCawangan); $setCawanganFullName = function ($pembiayaan) use ($allCawangan) { $cawangan = array_filter($allCawangan, fn($x) => $x['kodcaw'] === $pembiayaan->kodcaw); $pembiayaan->cawangan_name = array_pop($cawangan)['details_caw']; return $pembiayaan; }; $setUpahTawarruqFormatted = function ($pembiayaan) { $pembiayaan->upah_tawarruq_formatted = number_format((float) $pembiayaan->upah_tawarruq, 2, '.', ''); return $pembiayaan; }; $setTarikhAkhir = function ($pembiayaan) { $pembiayaan->tarikh_akhir = $pembiayaan->lelong_tawarruq != 0 ? '-' : Carbon::parse($pembiayaan->t_matang1)->format('d/m/Y'); return $pembiayaan; }; $setTLelongFormatted = function ($pembiayaan) { $t_lelong = $pembiayaan->t_lelong; $isTLelongNotAvailable = $t_lelong == 0 || $t_lelong == ''; $pembiayaan->t_lelong_formatted = $isTLelongNotAvailable ? '-' : Carbon::parse($pembiayaan->t_lelong)->format('d/m/Y'); return $pembiayaan; }; $formatted = array_map(function ($x) use ($setCawanganFullName, $setUpahTawarruqFormatted, $setTarikhAkhir, $setTLelongFormatted) { $x = $setCawanganFullName($x); $x = $setUpahTawarruqFormatted($x); $x = $setTarikhAkhir($x); $x = $setTLelongFormatted($x); return $x; }, $pembiayaan); return $formatted; } public function getMarhunModalData($norujukan,$tagsyarikat) { try{ $CallableHttp = $tagsyarikat == CompanyStatus::COM_PKB ? Http::arrahn() : Http::arrahn_koop(); $gadaianDetails = $CallableHttp->get('/api/gadai/norujukan/' . $norujukan)->json()[0][0]; $attachCawanganName = function ($x) use ($gadaianDetails,$CallableHttp) { $x['cawangan_name'] = $CallableHttp->get('/api/cawangan/detail/' . $gadaianDetails['kodcaw'])->json()[0]['cawangan']; return $x; }; $gadaianDetails = $attachCawanganName($gadaianDetails); $marhunDetails = MarhunService::from($norujukan)->getMarhunDetails($tagsyarikat); $bayaranHistoryDetails = BayaranHistoryService::from($norujukan)->getBayaranHistory($tagsyarikat); return [ 'gadaianDetails' => $gadaianDetails, 'marhunDetails' => $marhunDetails, 'bayaranHistoryDetails' => $bayaranHistoryDetails, ]; }catch(\Exception $e){ Log::debug('norujukan:' . $norujukan); Log::debug('tagsyarikat:' . $tagsyarikat); Log::debug('error message:' . $e->getMessage()); return [ 'gadaianDetails' => [], 'marhunDetails' => [], 'bayaranHistoryDetails' => [], ]; } } private function getNorujukanRecentlyAttemptPayment($norujukanList) { $getRecentlyAttemptPayment = function () use ($norujukanList) { return Http::pool(function (Pool $pool) use ($norujukanList) { foreach ($norujukanList as $list) { $pool->get(($list['tag_syarikat'] == CompanyStatus::COM_PKB ? config('api.url') : config('api.url_koop')) . '/portal/searchsagonline/', ['norujukan' => $list['norujukan']]); } }); }; $recentlyAttemptPaymentResponse = array_map( fn($x, $y) => ['norujukan' => $x, 'isRecentlyAttemptPayment' => $y->json()], $norujukanList, $getRecentlyAttemptPayment() ); $filterRecentlyAttemptPayment = array_filter( $recentlyAttemptPaymentResponse, fn($x) => $x['isRecentlyAttemptPayment'] === true ); return array_map(fn($x) => $x['norujukan'], $filterRecentlyAttemptPayment); } private function checkPembiayaanPaymentDisabled($pembiayaan) { $norujukanList = array_map(fn($x) => [ 'tag_syarikat' => $x->tag_syarikat, 'norujukan' => $x->norujukan, ], $pembiayaan); $norujukanRecentlyAttemptPayment = $this->getNorujukanRecentlyAttemptPayment($norujukanList); $getPembiayaanAkanDilelong = fn() => (new InformationController())->pembiayaanakandilelong()->getData(); $isCurrentDateGreaterThanEqual2DaysBeforeLelong = function ($x) { $tarikhLelong = Carbon::parse($x->t_lelong); $currentDate = Carbon::now(); if ($currentDate->gte($tarikhLelong->subDays(2))) { return true; } return false; }; $pembiayaanAkanDilelong = array_filter($getPembiayaanAkanDilelong(), $isCurrentDateGreaterThanEqual2DaysBeforeLelong); $norujukanAkanDilelong = array_map(fn($x) => $x->norujukan, $pembiayaanAkanDilelong); $setDefaultFasaIfNotAvailable = function ($x) { if (!isset($x->fasa)) { $x->fasa = 1; } return $x; }; $pembiayaanWithFasa = array_map($setDefaultFasaIfNotAvailable, $getPembiayaanAkanDilelong()); $pembiayaanInFasa2 = array_filter($pembiayaanWithFasa, fn($x) => $x->fasa == 2); $norujukanInFasa2 = array_map(fn($x) => $x->norujukan, $pembiayaanInFasa2); $getPayableUjrahBranches = fn() => Http::arrahn()->get('/api/payable-ujrah-branches')->json(); $branchesNotPermitPaymentUjrah = array_filter($getPayableUjrahBranches(), fn($x) => $x['gadaian_ujrah_payable'] == 0); $kodCawanganBranchesNotPermitPaymentUjrah = array_map(fn($x) => $x['kodcaw'], $branchesNotPermitPaymentUjrah); $isNorujukanPaymentRecentlyAttempted = function ($x) use ($norujukanRecentlyAttemptPayment) { $norujukanRecentlyAttemptPayment = array_column($norujukanRecentlyAttemptPayment, 'norujukan'); return in_array($x->norujukan, $norujukanRecentlyAttemptPayment); }; $isNorujukanAkanDilelong = function ($x) use ($norujukanAkanDilelong) { return in_array($x->norujukan, $norujukanAkanDilelong); }; $isNorujukanUjrah = function ($x) { return $x->tagbaru === 1 ? true : false; }; $isNorujukanIsInFasa2 = function ($x) use ($norujukanInFasa2) { return in_array($x->norujukan, $norujukanInFasa2); }; $isCawanganNotPermitUjrahPayment = function ($x) use ($kodCawanganBranchesNotPermitPaymentUjrah, $isNorujukanUjrah) { if ($isNorujukanUjrah($x)) { return in_array($x->kodcaw, $kodCawanganBranchesNotPermitPaymentUjrah); } return false; }; $checkExcludePaymentList = function($x) { $norujukanExcludeList = [ '011237240808-0003', '011237240719-0015', '011237240806-0011', '011237240828-0001', '011237240904-0007', '011237240904-0008', '011237240904-0009', '011237240719-0023', '011237240719-0024', '011237240719-0025', '011237240618-0026', '011237240719-0027', '011237240719-0028', '011237240618-0020', '011237240719-0030', '011237240618-0029', '011237240731-0026', '011237240715-0027', '011237240912-0009', ]; return in_array($x->norujukan, $norujukanExcludeList); }; $isCawanganVersion2 = function ($x){ if($x->tag_syarikat == 1 && $x->kodcaw != 'KB1'){ return true; } return false; }; return array_map(function ($x) use ($isNorujukanPaymentRecentlyAttempted, $isNorujukanAkanDilelong, $isNorujukanIsInFasa2, $isCawanganNotPermitUjrahPayment, $checkExcludePaymentList,$isCawanganVersion2) { $x->disabled_payment = false; if ( $isNorujukanAkanDilelong($x) || $isNorujukanIsInFasa2($x) || $isNorujukanPaymentRecentlyAttempted($x) || $isCawanganNotPermitUjrahPayment($x) || $checkExcludePaymentList($x) || $isCawanganVersion2($x) ) { $x->disabled_payment = true; } return $x; }, $pembiayaan); } }