53 lines
1.4 KiB
PHP
53 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Services;
|
|
|
|
use App\Models\CompanyStatus;
|
|
use Illuminate\Support\Facades\Http;
|
|
|
|
class MarhunService
|
|
{
|
|
public $norujukan;
|
|
|
|
public function __construct($norujukan) {
|
|
$this->norujukan = $norujukan;
|
|
}
|
|
|
|
public function getMarhunDetails($tagsyarikat)
|
|
{
|
|
$CallableHttp = $tagsyarikat == CompanyStatus::COM_PKB
|
|
? Http::arrahn()
|
|
: Http::arrahn_koop();
|
|
|
|
$getMarhunDetails = function ($x) use($CallableHttp) {
|
|
return $CallableHttp->get('/api/marhun/' . $x)->json();
|
|
};
|
|
|
|
$getMarhunTypeFullName = function ($code) use($CallableHttp) {
|
|
return $CallableHttp->get('/api/jemas/nama_marhun', ['marhun' => $code['marhun']])->json()['descpt'];
|
|
};
|
|
|
|
$formatMarhunDetailData = function ($x) use($getMarhunTypeFullName) {
|
|
return array_map(function ($y) use ($getMarhunTypeFullName) {
|
|
$y['marhun'] = $getMarhunTypeFullName($y);
|
|
return $y;
|
|
}, $x);
|
|
};
|
|
|
|
$marhunDetailPipelines = [
|
|
fn($x) => $getMarhunDetails($x),
|
|
fn($x) => $x == null ? [] : $x,
|
|
fn($x) => $x[0],
|
|
fn($x) => $formatMarhunDetailData($x),
|
|
];
|
|
|
|
return array_reduce($marhunDetailPipelines, fn($x, $y) => $y($x), $this->norujukan);
|
|
}
|
|
|
|
public static function from($norujukan)
|
|
{
|
|
return new static($norujukan);
|
|
}
|
|
|
|
}
|