resolve conflict keep env.development

This commit is contained in:
Server D3 Linksehat
2026-03-31 13:47:39 +07:00
10 changed files with 377 additions and 112 deletions

View File

@@ -10,6 +10,9 @@ use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Validator;
use Modules\HospitalPortal\Helpers\ApiResponse;
use Illuminate\Support\Facades\DB;
use App\Models\CorporateBenefit;
use App\Models\MemberPlan;
use App\Models\Plan;
class MemberController extends Controller
{
@@ -134,26 +137,74 @@ class MemberController extends Controller
$res_data['companies'] = $companies;
$corporateEmployeePremi = DB::table('corporate_employees')
->leftJoin('corporates', 'corporates.id', '=', 'corporate_employees.corporate_id')
->leftJoin('corporate_policies', 'corporate_policies.corporate_id', '=', 'corporates.id')
->where('corporate_employees.status', 'ACTIVE')
->where('corporates.active', 1)
->where('corporate_policies.active', 1)
->where('corporate_employees.member_id', $members->id)
->value('corporate_policies.total_premi');
$corporateEmployee = DB::table('corporate_employees')
->leftJoin('corporates', 'corporates.id', '=', 'corporate_employees.corporate_id')
->leftJoin('corporate_policies', 'corporate_policies.corporate_id', '=', 'corporates.id')
// ->where('corporate_employees.status', 'ACTIVE')
->where('corporates.active', 1)
->where('corporate_policies.active', 1)
->where('corporate_employees.member_id', $members->id)
->select(
'corporate_policies.total_premi',
'corporate_employees.corporate_id'
)
->first();
$res_data['total_premi'] = $corporateEmployeePremi ?? 0;
$res_data['total_premi'] = $corporateEmployee ?? 0;
$limitRules = DB::table('member_plans')
->leftJoin('plans', 'plans.id', '=', 'member_plans.plan_id')
->where('member_plans.member_id', $members->id)
->where('member_plans.status', 'active')
->where('plans.active', 1)
->value('plans.limit_rules');
->value('plans.limit_rules');
$res_data['limit_rules'] = $limitRules ?? 0;
$planMember = MemberPlan::where('member_id', $members->id)->get('plan_id');
$planId = Plan::whereIn('id', $planMember)->where('service_code', 'OP')->first();
$benefit = CorporateBenefit::with(['benefit', 'plan'])->where('plan_id', $planId->id)->get()->toArray();
$benefitData = [];
if (count($benefit)){
foreach($benefit as $data){
$data['benefit']['plan_id'] = $data['plan_id'];
$data['benefit']['limit_amount'] = $data['limit_amount'];
$data['benefit']['family_plan'] = $planId->family_plan;
$data['benefit']['max_frequency_period'] = $data['max_frequency_period'];
$data['benefit']['limit_amount_plan'] = $data['plan']['limit_rules'];
$data['benefit']['family_plan_plans'] = $data['plan']['family_plan'];
array_push($benefitData, $data['benefit']);
}
}
$memberUsage = Helper::getUsageMember($corporateEmployee->corporate_id, $members->id, $benefitData);;
$res_data['used_limit'] = json_decode($memberUsage);
$usedLimit = json_decode($memberUsage, true); // jadi array
$totalUsed = 0;
if (is_array($usedLimit)) {
foreach ($usedLimit as $value) {
$totalUsed += (int) $value;
}
}
$limitRules = (int) $limitRules;
// hitung sisa
$remainingLimit = $limitRules - $totalUsed;
// biar gak minus
if ($remainingLimit < 0) {
$remainingLimit = 0;
}
// set ke response
$res_data['remaining_limit'] = $remainingLimit;
$res_data['total_used_limit'] = $totalUsed;
// specialities
$specialities = DB::table('specialities')
->select(

View File

@@ -3,7 +3,10 @@
namespace Modules\Primaya\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\CorporateBenefit;
use App\Models\Member;
use App\Models\MemberPlan;
use App\Models\Plan;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
@@ -38,6 +41,7 @@ class MemberController extends Controller
{
$members = DB::table('members')
->leftJoin('member_policies', 'member_policies.member_id','=', 'members.member_id')
->leftJoin('corporate_employees', 'corporate_employees.member_id','=', 'members.member_id')
->leftJoin('persons', 'persons.id', '=', 'members.person_id')
->where('members.member_id', '=', $request->no_polis)
->where('members.birth_date', '=', $request->birth_date)
@@ -59,49 +63,54 @@ class MemberController extends Controller
{
$res_data['members'] = $members;
// $services = DB::table('member_plans')
// ->leftJoin('plans', 'plans.id', '=', 'member_plans.plan_id')
// ->leftJoin('services', 'services.code', '=', 'plans.service_code')
// ->where('member_plans.member_id', $members->id)
// ->whereNull('member_plans.deleted_at')
// ->select('plans.service_code', 'services.name')
// ->get();
// $res_data['services'] = $services;
$benefits = DB::table('member_plans')
->leftJoin('corporate_benefits','corporate_benefits.plan_id', '=', 'member_plans.plan_id')
->leftJoin('benefits', 'benefits.id', '=', 'corporate_benefits.benefit_id')
->leftJoin('plans', 'plans.id', '=', 'member_plans.plan_id')
->leftJoin('services', 'services.code', '=', 'plans.service_code')
->where('member_plans.member_id', '=', $members->id)
->where('plans.service_code','=', 'OP')
->select(
'benefits.id',
'benefits.description',
'benefits.code',
'corporate_benefits.corporate_id',
'plans.service_code'
'plans.service_code',
'corporate_benefits.cashless_percentage',
'corporate_benefits.reimbursement_percentage',
)
->get();
$res_data['benefits'] = $benefits;
$services = DB::table('member_plans')
->leftJoin('plans', 'plans.id', '=', 'member_plans.plan_id')
->leftJoin('services', 'services.code', '=', 'plans.service_code')
->where('member_plans.member_id', $members->id)
->whereNull('member_plans.deleted_at')
->select('plans.service_code', 'services.name')
->get();
$res_data['services'] = $services;
// Group Services
$groupServices = [];
foreach ($res_data['benefits'] as $benefit) {
$serviceCode = $benefit->service_code;
$groupServices[$serviceCode][] = [
'description' => $benefit->description,
'code' => $benefit->code,
];
}
// $groupServices = [];
// foreach ($res_data['benefits'] as $benefit) {
// $serviceCode = $benefit->service_code;
// $groupServices[$serviceCode][] = [
// 'description' => $benefit->description,
// 'code' => $benefit->code,
// ];
// }
$res_data['groupServices'] = $groupServices;
// $res_data['groupServices'] = $groupServices;
$res_data['type'] = $request->type;
// $res_data['type'] = $request->type;
// Provider
$providers = DB::table('organizations')
->where('organizations.type', '=', 'hospital')
->where('organizations.code', '=', 'LMS')
->where('organizations.corporate_id_partner', '!=', 8)
->orWhere('organizations.corporate_id_partner', NULL)
// ->orWhere('organizations.corporate_id_partner', NULL)
->where('status', '=', 'active')
->orderBy('organizations.name','asc')
->select(
@@ -113,57 +122,104 @@ class MemberController extends Controller
$res_data['providers'] = $providers;
//company
$companies = DB::table('corporates')
->where('corporates.active', '=', 1)
// $companies = DB::table('corporates')
// ->where('corporates.active', '=', 1)
// ->select(
// 'corporates.id',
// 'corporates.name'
// )
// ->get();
// $res_data['companies'] = $companies;
$corporateEmployee = DB::table('corporate_employees')
->leftJoin('corporates', 'corporates.id', '=', 'corporate_employees.corporate_id')
->leftJoin('corporate_policies', 'corporate_policies.corporate_id', '=', 'corporates.id')
// ->where('corporate_employees.status', 'ACTIVE')
->where('corporates.active', 1)
->where('corporate_policies.active', 1)
->where('corporate_employees.member_id', $members->id)
->select(
'corporates.id',
'corporates.name'
'corporate_policies.total_premi',
'corporate_employees.corporate_id'
)
->get();
$res_data['companies'] = $companies;
//company
$companies = DB::table('corporates')
->where('corporates.active', '=', 1)
->select(
'corporates.id',
'corporates.name'
)
->get();
$res_data['companies'] = $companies;
$corporateEmployeePremi = DB::table('corporate_employees')
->leftJoin('corporates', 'corporates.id', '=', 'corporate_employees.corporate_id')
->leftJoin('corporate_policies', 'corporate_policies.corporate_id', '=', 'corporates.id')
->where('corporate_employees.status', 'ACTIVE')
->where('corporates.active', 1)
->where('corporate_policies.active', 1)
->where('corporate_employees.member_id', $members->id)
->value('corporate_policies.total_premi');
$res_data['total_premi'] = $corporateEmployeePremi ?? 0;
->first();
$res_data['total_premi'] = $corporateEmployee->total_premi ?? 0;
$limitRules = DB::table('member_plans')
->leftJoin('plans', 'plans.id', '=', 'member_plans.plan_id')
->where('member_plans.member_id', $members->id)
->where('member_plans.status', 'active')
->where('plans.active', 1)
->value('plans.limit_rules');
->value('plans.limit_rules') ?? 0;
$res_data['limit_rules'] = $limitRules ?? 0;
// specialities
$specialities = DB::table('specialities')
->select(
'specialities.id',
'specialities.name'
)
->orderBy('specialities.name','asc')
->get();
$planMember = MemberPlan::where('member_id', $members->id)->get('plan_id');
$res_data['specialities'] = $specialities;
$planId = Plan::whereIn('id', $planMember)->where('service_code', 'OP')->first();
$benefit = CorporateBenefit::with(['benefit', 'plan'])->where('plan_id', $planId->id)->get()->toArray();
$benefitData = [];
if (count($benefit)){
foreach($benefit as $data){
$data['benefit']['plan_id'] = $data['plan_id'];
$data['benefit']['limit_amount'] = $data['limit_amount'];
$data['benefit']['family_plan'] = $planId->family_plan;
$data['benefit']['max_frequency_period'] = $data['max_frequency_period'];
$data['benefit']['limit_amount_plan'] = $data['plan']['limit_rules'];
$data['benefit']['family_plan_plans'] = $data['plan']['family_plan'];
array_push($benefitData, $data['benefit']);
}
}
$memberUsage = Helper::getUsageMember($corporateEmployee->corporate_id, $members->id, $benefitData);;
$res_data['used_limit'] = json_decode($memberUsage);
$usedLimit = json_decode($memberUsage, true);
$totalUsed = 0;
if (is_array($usedLimit)) {
foreach ($usedLimit as $value) {
$totalUsed += (int) $value;
}
}
$limitRules = (int) $limitRules;
// hitung sisa
$remainingLimit = $limitRules - $totalUsed;
// biar gak minus
if ($remainingLimit < 0) {
$remainingLimit = 0;
}
// set ke response
$res_data['remaining_limit'] = $remainingLimit;
$res_data['total_used_limit'] = $totalUsed;
// company
$companies = DB::table('corporates')
->where('corporates.active', 1)
->where('corporates.id', $corporateEmployee->corporate_id ?? null)
->select(
'corporates.id',
'corporates.name'
)
->get();
$res_data['companies'] = $companies;
// specialities
// $specialities = DB::table('specialities')
// ->select(
// 'specialities.id',
// 'specialities.name'
// )
// ->orderBy('specialities.name','asc')
// ->get();
// $res_data['specialities'] = $specialities;
return ApiResponse::apiResponse("Success", $res_data, trans('Message.success'), 200);
@@ -175,4 +231,134 @@ class MemberController extends Controller
}
}
public function calculateBenefit(Request $request)
{
$request->validate([
'member_id' => 'required|integer',
'benefit_id' => 'required|integer',
'biaya' => 'required|numeric|min:0'
]);
$memberId = $request->member_id;
$benefitId = $request->benefit_id;
$biaya = $request->biaya;
// ===============================
// Ambil member
// ===============================
$member = DB::table('members')->where('id', $memberId)->first();
if (!$member) {
return ApiResponse::apiResponse("Data Not Found", [], "Member not found", 404);
}
// ===============================
// Ambil corporate employee
// ===============================
$corporateEmployee = DB::table('corporate_employees')
->where('member_id', $memberId)
->first();
if (!$corporateEmployee) {
return ApiResponse::apiResponse("Data Not Found", [], "Corporate not found", 404);
}
// ===============================
// Ambil Plan OP
// ===============================
$planMember = MemberPlan::where('member_id', $memberId)->pluck('plan_id');
$plan = Plan::whereIn('id', $planMember)
->where('service_code', 'OP')
->first();
if (!$plan) {
return ApiResponse::apiResponse("Data Not Found", [], "Plan OP not found", 404);
}
// ===============================
// Ambil Benefit
// ===============================
$corporateBenefit = CorporateBenefit::where('plan_id', $plan->id)
->where('benefit_id', $benefitId)
->first();
if (!$corporateBenefit) {
return ApiResponse::apiResponse("Data Not Found", [], "Benefit not found", 404);
}
// ===============================
// Hitung Used Limit (PAKAI HELPER)
// ===============================
$allBenefits = CorporateBenefit::with(['benefit', 'plan'])
->where('plan_id', $plan->id)
->get();
$benefitData = [];
foreach ($allBenefits as $data) {
$benefitData[] = [
'id' => $data->benefit_id,
'limit_amount' => $data->limit_amount ?? 0,
'limit_amount_plan' => $plan->limit_rules ?? 0,
'family_plan' => $plan->family_plan ?? 'S',
'max_frequency_period' => $data->max_frequency_period ?? 0
];
}
$memberUsage = Helper::getUsageMember(
$corporateEmployee->corporate_id,
$memberId,
$benefitData
);
$usedLimitArray = json_decode($memberUsage, true);
// total semua benefit (INI YANG BENAR)
$totalUsedLimit = is_array($usedLimitArray) ? array_sum($usedLimitArray) : 0;
// tetap ambil per benefit (kalau mau ditampilkan)
$usedLimit = $totalUsedLimit;
// ===============================
// Limit Logic
// ===============================
$limitPlan = $plan->limit_rules ?? 0;
$sisaLimit = $limitPlan - $totalUsedLimit;
if ($sisaLimit < 0) {
$sisaLimit = 0;
}
if ($sisaLimit < 0) {
$sisaLimit = 0;
}
// ===============================
// Percentage Logic
// ===============================
$cashlessPercentage = $corporateBenefit->cashless_percentage ?? 0;
$ditanggungPercentage = ($biaya * $cashlessPercentage) / 100;
$ditanggungFinal = min($ditanggungPercentage, $sisaLimit);
$sisaBayar = $biaya - $ditanggungFinal;
// ===============================
// Response
// ===============================
return ApiResponse::apiResponse("Success", [
'member_id' => $memberId,
'benefit_id' => $benefitId,
'biaya' => $biaya,
'cashless_percentage' => $cashlessPercentage,
'limit_plan' => $limitPlan,
'used_limit' => $usedLimit,
'sisa_limit' => $sisaLimit,
'ditanggung_asuransi' => $ditanggungFinal,
'sisa_bayar_member' => $sisaBayar
], "Calculation successful", 200);
}
}

View File

@@ -109,7 +109,7 @@ class RequestLogController extends Controller
'type' => 'hospital',
'corporate_id_partner' => $request->corporate_id_partner ? implode(',', $request->corporate_id_partner) : null,
'created_at' => now(),
'created_by' => auth()->user()->id
// 'created_by' => auth()->user()->id
]);
// Insert data ke tabel addresses
@@ -120,7 +120,7 @@ class RequestLogController extends Controller
'addressable_id' => $organization_id,
'type' => 'hospital',
'created_at' => now(),
'created_by' => auth()->user()->id
// 'created_by' => auth()->user()->id
]);
// Update main_address_id di tabel organizations
@@ -235,7 +235,7 @@ class RequestLogController extends Controller
'amount_not_approved' => $value['amount_not_approved'],
'excess_paid' => $value['excess_paid'],
'keterangan' => $value['keterangan'] ?? '',
'created_by' => auth()->user()->id,
// 'created_by' => auth()->user()->id,
];
RequestLogBenefit::create($data);

View File

@@ -40,6 +40,8 @@ Route::prefix('v1')->group(function () {
Route::post('request-log', 'requestLog');
});
Route::post('calculate-benefit', [MemberController::class, 'calculateBenefit']);
Route::prefix('master')->group(function () {
Route::get('specialities', [MasterController::class, 'specialities']);

View File

@@ -20,7 +20,7 @@ class AuthService
exec($cmd);
}
}
/**
* Issue JWT access token for the given client
*/
@@ -90,23 +90,30 @@ class AuthService
{
try {
$parts = explode('.', $token);
if (count($parts) !== 3) {
return false;
}
$payload = json_decode(base64_decode(strtr($parts[1], '-_', '+/')));
// $payload = json_decode(base64_decode(strtr($parts[1], '-_', '+/')));
$payloadRaw = $parts[1];
$payloadRaw = strtr($payloadRaw, '-_', '+/');
$padding = strlen($payloadRaw) % 4;
if ($padding) {
$payloadRaw .= str_repeat('=', 4 - $padding);
}
$payload = json_decode(base64_decode($payloadRaw));
$clientId = $payload->sub ?? null;
if (!$clientId) {
return false;
}
$clients = config('api_clients.clients');
$client = collect($clients)->where('api_key', $clientId)->first();
$client = collect($clients)->where('api_key', $clientId)->first();
if (!$client || !isset($client['api_secret'])) {
return false;
}
return \Firebase\JWT\JWT::decode($token, new \Firebase\JWT\Key($client['api_secret'], 'HS256'));
} catch (\Exception $e) {
return false;

View File

@@ -0,0 +1,10 @@
GENERATE_SOURCEMAP=false
PORT=8000
REACT_APP_HOST_API_URL="http://lms.test"
# VITE_API_URL="https://aso-api.linksehat.dev/api/internal"
# VITE_API_URL="https://primecenter-api.linksehat.com/api/internal"
VITE_API_URL="http://localhost:8000/api/internal"

View File

@@ -415,7 +415,7 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl
</Grid>
</Grid>
<Grid item xs={width}>
<Grid item xs={width} style={{display: "none"}}>
<Grid container spacing={2}>
<Grid item xs={12}>
<Typography variant="subtitle1" component="div">
@@ -440,7 +440,7 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl
</Grid>
</Grid>
<Grid item xs={width}>
<Grid item xs={width} style={{display: "none"}}>
<Grid container spacing={2}>
<Grid item xs={12}>
<Typography variant="subtitle1" component="div">
@@ -464,7 +464,7 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl
</Grid>
</Grid>
<Grid item xs={width}>
<Grid item xs={width} style={{display: "none"}}>
<Grid container spacing={2}>
<Grid item xs={12}>
<Typography variant="subtitle1" component="div">
@@ -484,7 +484,7 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl
</Grid>
</Grid>
<Grid item xs={2}>
<Grid item xs={2} style={{display: "none"}}>
<Grid container spacing={2}>
<Grid item xs={12}>
<Typography variant="subtitle1" component="div">

View File

@@ -26,7 +26,7 @@ type DialogDeleteType = {
openDialog: boolean;
setOpenDialog: any;
onSubmit?: void;
data: BenefitConfigurationListType|undefined;
data: BenefitConfigurationListType|undefined;
id: number|undefined;
total: any
}
@@ -39,7 +39,7 @@ type BenefitSelected = {
limit_amount: number,
}
export default function DialogEditBenefit({id, data, setOpenDialog, openDialog, onSubmit, total} : DialogDeleteType ) {
export default function DialogEditBenefit({id, data, setOpenDialog, openDialog, onSubmit, total} : DialogDeleteType ) {
const handleCloseDialog = () => {
setOpenDialog(false);
}
@@ -79,7 +79,7 @@ export default function DialogEditBenefit({id, data, setOpenDialog, openDialog,
const amountApproved = parseFloat(watch('amount_approved'));
const amountNotApproved = parseFloat(watch('amount_not_approved'));
const excessPaid = parseFloat(watch('excess_paid'));
// Hitung total baru
const totalAmountIncurred = total.totalAmountIncurred - data?.amount_incurred + amountIncurred;
const totalAmountApproved = total.totalAmountApproved - data?.amount_approved + amountApproved;
@@ -104,8 +104,8 @@ export default function DialogEditBenefit({id, data, setOpenDialog, openDialog,
// Konversi nilai ke angka dengan aman
let limitAmount = Number(benefitData.limit_amount) || 0;
let limitAmountPlan = Number(benefitData.limit_amount_plan) || 0;
if (limitAmountPlan != 999999999){
if (limitAmountPlan != 999999999){
let realTimeUsage = totalAll().totalAmountApproved;
console.log(limitAmountPlan, 'test')
if (limitAmountPlan < realTimeUsage) {
@@ -162,11 +162,11 @@ export default function DialogEditBenefit({id, data, setOpenDialog, openDialog,
// // alert('Total Incurred tidak sama dengan Total Approve + Total Not Approve')
// // setValue('amount_approved', data?.amount_approved)
// }
// Submit Form
// =====================================
const submitHandler = async (data: BenefitConfigurationListType) => {
const response = await postEditBenefit(id, data);
if (response == true) {
@@ -191,19 +191,19 @@ export default function DialogEditBenefit({id, data, setOpenDialog, openDialog,
setValue('keterangan', data?.keterangan)
setValue('reason', data?.reason)
}, [data])
const getContent = () => (
<FormProvider methods={methods} onSubmit={handleSubmit(submitHandler)}>
<Stack paddingX={2} paddingY={4}>
{/* <Card sx={{padding:2}}> */}
<Box sx={{ marginTop:'10px', marginBottom:'10px', py: '8px', px: '12px', border:'1px solid #919EAB52', borderRadius: '6px'}}>
<Box sx={{ marginTop:'10px', marginBottom:'10px', py: '8px', px: '12px', border:'1px solid #919EAB52', borderRadius: '6px'}}>
<Grid key={id} container spacing={2}>
<Grid item xs={12}>
<Typography variant="subtitle1" sx={{ fontWeight: 'bold'}}>
{data?.benefit?.description}
</Typography>
</Grid>
<Grid item xs={2}>
<Grid container spacing={2}>
@@ -213,7 +213,7 @@ export default function DialogEditBenefit({id, data, setOpenDialog, openDialog,
</Typography>
</Grid>
<Grid item xs={12} sx={{display: 'flex', gap: 1}}>
<RHFTextFieldMoney
<RHFTextFieldMoney
key={id}
id='amount_incurred'
name={`amount_incurred`}
@@ -228,7 +228,7 @@ export default function DialogEditBenefit({id, data, setOpenDialog, openDialog,
</Grid>
</Grid>
<Grid item xs={2}>
<Grid item xs={2} style={{display: "none"}}>
<Grid container spacing={2}>
<Grid item xs={12}>
<Typography variant="subtitle1" component="div">
@@ -252,7 +252,7 @@ export default function DialogEditBenefit({id, data, setOpenDialog, openDialog,
</Grid>
</Grid>
<Grid item xs={2}>
<Grid item xs={2} style={{display: "none"}}>
<Grid container spacing={2}>
<Grid item xs={12}>
<Typography variant="subtitle1" component="div">
@@ -276,7 +276,7 @@ export default function DialogEditBenefit({id, data, setOpenDialog, openDialog,
</Grid>
</Grid>
<Grid item xs={2}>
<Grid item xs={2} style={{display: "none"}}>
<Grid container spacing={2}>
<Grid item xs={12}>
<Typography variant="subtitle1" component="div">
@@ -296,7 +296,7 @@ export default function DialogEditBenefit({id, data, setOpenDialog, openDialog,
</Grid>
</Grid>
<Grid item xs={2}>
<Grid item xs={2} style={{display: "none"}}>
<Grid container spacing={2}>
<Grid item xs={12}>
<Typography variant="subtitle1" component="div">

View File

@@ -666,7 +666,8 @@ export default function DetailRequestFinalLog() {
</Grid>
{/* Surat persetujuan Tindakan */}
<Grid item xs={12}>
<Grid item xs={12} style={{ display: "none" }}
>
<Card sx={{ p: 3 }}>
<Stack direction="row" justifyContent="space-between" alignItems="flex-start" sx={{ mb: 3 }}>
<Typography variant="subtitle1" sx={{ color: '#19BBBB', fontWeight: 'bold' }}>

View File

@@ -1,14 +1,14 @@
// mui
import { styled } from '@mui/material/styles';
import { LoadingButton, TabPanel } from "@mui/lab";
import {
Button,
Card,
Divider,
Grid,
LinearProgress,
linearProgressClasses,
Typography,
import {
Button,
Card,
Divider,
Grid,
LinearProgress,
linearProgressClasses,
Typography,
Paper,
Table,
TableBody,
@@ -34,7 +34,7 @@ import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';
export default function DialogMember(member:any, handleSubmitSuccess:() => void) {
const { localeData }: any = useContext(LanguageContext);
const [currentTab, setCurrentTab] = useState('request');
// ----------------------------------------------------------------------
useEffect(() => {
@@ -77,7 +77,7 @@ export default function DialogMember(member:any, handleSubmitSuccess:() => void)
</div>
);
}
const [openRows, setOpenRows] = useState<any>({});
const handleRowToggle = (index:number) => {
@@ -120,6 +120,14 @@ export default function DialogMember(member:any, handleSubmitSuccess:() => void)
<Typography sx={{width:'50%'}} variant="body2">Limit Peserta</Typography>
<Typography sx={{width:'50%', fontWeight: 'bold'}} variant="body2">{ member?.limit_rules ? fCurrency(member?.limit_rules) : '-'}</Typography>
</Stack>
<Stack direction="row" justifyContent="space-between">
<Typography sx={{width:'50%'}} variant="body2">Limit Terpakai</Typography>
<Typography sx={{width:'50%', fontWeight: 'bold'}} variant="body2">{ member?.total_used_limit ? fCurrency(member?.total_used_limit) : '-'}</Typography>
</Stack>
<Stack direction="row" justifyContent="space-between">
<Typography sx={{width:'50%'}} variant="body2">Sisa Limit</Typography>
<Typography sx={{width:'50%', fontWeight: 'bold'}} variant="body2">{ member?.remaining_limit ? fCurrency(member?.remaining_limit) : '-'}</Typography>
</Stack>
<Stack direction="row" justifyContent="space-between">
<Typography sx={{width:'50%'}} variant="body2">NRIC</Typography>
<Typography sx={{width:'50%', fontWeight: 'bold'}} variant="body2">{member?.members.nik ?? '-'}</Typography>
@@ -193,7 +201,7 @@ export default function DialogMember(member:any, handleSubmitSuccess:() => void)
</TableRow>
</TableBody>
))}
</Table>
</Table>
</TableContainer>
</TabPanel>
<TabPanel value={currentTab} index={'request'}>