Files
api_arrahn/app/Http/Controllers/MaxPinjamanController.php
T
2026-04-19 15:09:16 +08:00

141 lines
4.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\MaxMutuEmas;
use App\MaxPinjaman;
use Illuminate\Http\Request;
class MaxPinjamanController extends Controller
{
public function getAllMaxPinjaman(Request $request)
{
if (config('parameter.max_mutuemas')) {
$data = MaxMutuEmas::on('mysql7')->select('karat', 'teller', 'pc', 'operasi')->get();
$calculateMargin = $this->calculateMaxPinjamanMutu($data, $request->mutu,$request->total_nilai_marhun);
$pinjaman = [
[
"user_type" => "teller",
"max" => $calculateMargin['teller']
],
[
"user_type" => "khazanah",
"max" => $calculateMargin['pc']
],
[
"user_type" => "operasi",
"max" => $calculateMargin['operasi']
]
];
} else {
$pinjaman = MaxPinjaman::on('mysql7')->get();
}
return response()->json($pinjaman);
}
public function calculateMaxPinjamanMutu($data, $mutu,$totalMarhun)
{
$totalMaxPC = 0;
$totalMaxTeller = 0;
$totalMaxOperasi = 0;
if($mutu == null || $totalMarhun == 0){
return [
"pc" => 0,
"teller" => 0,
"operasi" => 0
];
}
$mutuKarat = array_map(function($item) {
return $item[0];
}, $mutu);
$mutuNilai = array_map(function($item) {
return $item[1];
}, $mutu);
foreach($mutuKarat as $index => $karat){
$margin = $data->where('karat', $karat)->first();
if($margin){
$nilai = $mutuNilai[$index];
$totalMaxPC += ($margin->pc/100) * $nilai;
$totalMaxTeller += ($margin->teller/100) * $nilai;
$totalMaxOperasi += ($margin->operasi/100) * $nilai;
}
}
$totalMaxPC = $totalMarhun > 0 ? ($totalMaxPC / $totalMarhun) * 100 : 0;
$totalMaxTeller = $totalMarhun > 0 ? ($totalMaxTeller / $totalMarhun) * 100 : 0;
$totalMaxOperasi = $totalMarhun > 0 ? ($totalMaxOperasi / $totalMarhun) * 100 : 0;
return [
"pc" => round($totalMaxPC,2),
"teller" => round($totalMaxTeller,2),
"operasi" => round($totalMaxOperasi,2)
];
}
public function getAllMaxMutuEmas(Request $request)
{
$maxmutuemas = MaxMutuEmas::on('mysql7')->get();
return response()->json($maxmutuemas);
}
public function getSpecificMaxMutuEmas(Request $request)
{
$karat = $request->karat;
$nilaimarhun = $request->nilaimarhun;
$nilaimarhun = preg_replace('/[^0-9.]/', '', $nilaimarhun); // Remove non-numeric characters except decimal point
$nilaimarhun = is_numeric($nilaimarhun) ? (float)$nilaimarhun : 0;
$maxmutuemas = MaxMutuEmas::on('mysql7')->where('karat', $karat)->first();
if($maxmutuemas && $nilaimarhun > 0){
$maxmutuemas->maxteller = ($maxmutuemas->teller/100) * $nilaimarhun;
$maxmutuemas->maxpc = ($maxmutuemas->pc/100) * $nilaimarhun;
$maxmutuemas->maxoperasi = ($maxmutuemas->operasi/100) * $nilaimarhun;
} else if($maxmutuemas) {
$maxmutuemas->maxteller = 0;
$maxmutuemas->maxpc = 0;
$maxmutuemas->maxoperasi = 0;
}
return response()->json($maxmutuemas);
}
public function updateMaxMutuEmas(Request $request)
{
$recno = $request->recno;
$karat = $request->karat;
$keterangan = $request->keterangan;
$teller = $request->teller;
$pc = $request->pc;
$operasi = $request->operasi;
$maxmutuemas = MaxMutuEmas::on('mysql7')->where('recno', $recno)->first();
if ($maxmutuemas) {
$maxmutuemas->karat = $karat;
$maxmutuemas->keterangan = $keterangan;
$maxmutuemas->teller = $teller;
$maxmutuemas->pc = $pc;
$maxmutuemas->operasi = $operasi;
$maxmutuemas->tarikhupdate = \Carbon\Carbon::now();
$maxmutuemas->save();
return response()->json([
'status' => 'success',
'message' => 'Max Mutu Emas updated successfully',
'data' => $maxmutuemas
]);
} else {
return response()->json([
'status' => 'error',
'message' => 'Record not found'
], 404);
}
}
}