update banyak
This commit is contained in:
@@ -33,6 +33,9 @@ class CorporateMemberController extends Controller
|
|||||||
case 'alarm-center':
|
case 'alarm-center':
|
||||||
$members = $this->corporateMemberService->getAllMemberAlarmCenter($corporate_id, $request);
|
$members = $this->corporateMemberService->getAllMemberAlarmCenter($corporate_id, $request);
|
||||||
return response()->json(Helper::paginateResources(DashboardMemberAlarmResources::collection($members)));
|
return response()->json(Helper::paginateResources(DashboardMemberAlarmResources::collection($members)));
|
||||||
|
case 'service-monitoring':
|
||||||
|
$members = $this->corporateMemberService->getAllEncounter($corporate_id, $request);
|
||||||
|
return response()->json(Helper::paginateResources(DashboardMemberAlarmResources::collection($members)));
|
||||||
default:
|
default:
|
||||||
$members = $this->corporateMemberService->getAllMemberDashboards($corporate_id, $request);
|
$members = $this->corporateMemberService->getAllMemberDashboards($corporate_id, $request);
|
||||||
return response()->json(Helper::paginateResources(DashboardMemberResources::collection($members)));
|
return response()->json(Helper::paginateResources(DashboardMemberResources::collection($members)));
|
||||||
|
|||||||
@@ -62,6 +62,23 @@ class TopUpController extends Controller
|
|||||||
return view('client::show');
|
return view('client::show');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function get($corporate_id)
|
||||||
|
{
|
||||||
|
$data = CorporatePolicy::query()
|
||||||
|
->where('corporate_id', $corporate_id)
|
||||||
|
->with(['currentPolicy', 'employees'])
|
||||||
|
->withCount(['employees', 'claims' => function ($query) {
|
||||||
|
$query->where('claims.status', 'paid');
|
||||||
|
}])
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if (!$data) {
|
||||||
|
return response()->json(['message' => 'Corporate policy not found'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Helper::responseJson(TopUpLimitResources::make($data));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the specified resource in storage.
|
* Update the specified resource in storage.
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
|
|||||||
@@ -8,6 +8,9 @@ use Modules\Client\Http\Controllers\Api\CorporatePolicyController;
|
|||||||
use Modules\Client\Http\Controllers\Api\UserController;
|
use Modules\Client\Http\Controllers\Api\UserController;
|
||||||
use Modules\Client\Http\Controllers\Api\ClaimController;
|
use Modules\Client\Http\Controllers\Api\ClaimController;
|
||||||
use Modules\Client\Http\Controllers\Api\TopUpController;
|
use Modules\Client\Http\Controllers\Api\TopUpController;
|
||||||
|
use Modules\Internal\Http\Controllers\ClaimEncounterController;
|
||||||
|
use App\Models\Encounter;
|
||||||
|
use Modules\Internal\Transformers\EncounterResource;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
@@ -38,11 +41,16 @@ Route::prefix('client')->group(function () {
|
|||||||
Route::get('members', [CorporateMemberController::class, 'index']);
|
Route::get('members', [CorporateMemberController::class, 'index']);
|
||||||
Route::get('claims/status', [ClaimController::class, 'status']);
|
Route::get('claims/status', [ClaimController::class, 'status']);
|
||||||
Route::get('claims', [ClaimController::class, 'index']);
|
Route::get('claims', [ClaimController::class, 'index']);
|
||||||
|
Route::get('claims/{claim_id}/encounters', [ClaimEncounterController::class, 'getEncounterData']);
|
||||||
Route::get('topup', [TopUpController::class, 'index']);
|
Route::get('topup', [TopUpController::class, 'index']);
|
||||||
|
// Route::get('topup', [TopUpController::class, 'get']);
|
||||||
Route::post('topup', [TopUpController::class, 'store']);
|
Route::post('topup', [TopUpController::class, 'store']);
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::get('claims/{id}', [ClaimController::class, 'show']);
|
Route::get('claims/{id}', [ClaimController::class, 'show']);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ use Illuminate\Routing\Controller;
|
|||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Modules\Internal\Transformers\EncounterResource;
|
use Modules\Internal\Transformers\EncounterResource;
|
||||||
|
|
||||||
|
|
||||||
class ClaimEncounterController extends Controller
|
class ClaimEncounterController extends Controller
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@@ -31,6 +32,13 @@ class ClaimEncounterController extends Controller
|
|||||||
{
|
{
|
||||||
return view('internal::create');
|
return view('internal::create');
|
||||||
}
|
}
|
||||||
|
public function getAllData()
|
||||||
|
{
|
||||||
|
$encounters = Encounter::with('claim.member')->get();
|
||||||
|
|
||||||
|
return Helper::responseJson(data: EncounterResource::collection($encounters), message: 'Data berhasil diambil');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store a newly created resource in storage.
|
* Store a newly created resource in storage.
|
||||||
@@ -255,6 +263,22 @@ class ClaimEncounterController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function x`counters($claim_id)
|
||||||
|
{
|
||||||
|
$claim = Claim::findOrFail($claim_id);
|
||||||
|
$encounters = $claim->encounters()->get();
|
||||||
|
return response()->json($encounters);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getEncounterData($encounter_id)
|
||||||
|
{
|
||||||
|
$encounter = Encounter::with('claim.member')->findOrFail($encounter_id);
|
||||||
|
|
||||||
|
return Helper::responseJson(data: EncounterResource::make($encounter), message: 'Data berhasil diambil');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove the specified resource from storage.
|
* Remove the specified resource from storage.
|
||||||
* @param int $id
|
* @param int $id
|
||||||
|
|||||||
@@ -54,6 +54,12 @@ class Encounter extends Model
|
|||||||
return $this->hasMany(EncounterParticipant::class, 'encounter_id');
|
return $this->hasMany(EncounterParticipant::class, 'encounter_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function claim()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Claim::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public function doctors()
|
public function doctors()
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -96,6 +102,7 @@ class Encounter extends Model
|
|||||||
return $this->belongsTo(Service::class, 'class', 'code');
|
return $this->belongsTo(Service::class, 'class', 'code');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function getMetaAttribute()
|
public function getMetaAttribute()
|
||||||
{
|
{
|
||||||
$orgMeta = [];
|
$orgMeta = [];
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
namespace App\Services;
|
namespace App\Services;
|
||||||
|
|
||||||
use App\Models\Member;
|
use App\Models\Member;
|
||||||
|
use App\Models\Encounter;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
@@ -120,4 +121,9 @@ class CorporateMemberService
|
|||||||
->selectRaw("(select sum(`claims`.`total_claim`) from `claims` where `members`.`id` = `claims`.`member_id` AND `claims`.`deleted_at` IS NULL) AS `claims_sum_total_claim`")
|
->selectRaw("(select sum(`claims`.`total_claim`) from `claims` where `members`.`id` = `claims`.`member_id` AND `claims`.`deleted_at` IS NULL) AS `claims_sum_total_claim`")
|
||||||
->paginate($limit);
|
->paginate($limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getAllEncounter(int $corporateId){
|
||||||
|
return Encounter::query()->select(['id'])->paginate(10);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,9 +107,9 @@ export default function Drugs() {
|
|||||||
<Card>
|
<Card>
|
||||||
<Box sx={{ borderBottom: 1, borderColor: 'divider' }}>
|
<Box sx={{ borderBottom: 1, borderColor: 'divider' }}>
|
||||||
<StyledTabs value={value} onChange={handleChange} aria-label="basic tabs example">
|
<StyledTabs value={value} onChange={handleChange} aria-label="basic tabs example">
|
||||||
<StyledTab label="All Data (999)" {...a11yProps(0)} />
|
<StyledTab label="All Data" {...a11yProps(0)} />
|
||||||
<StyledTab label="Ongoing (888)" {...a11yProps(1)} />
|
<StyledTab label="Ongoing" {...a11yProps(1)} />
|
||||||
<StyledTab label="Done (777)" {...a11yProps(2)} />
|
<StyledTab label="Done" {...a11yProps(2)} />
|
||||||
</StyledTabs>
|
</StyledTabs>
|
||||||
</Box>
|
</Box>
|
||||||
<TabPanel value={value} index={0}>
|
<TabPanel value={value} index={0}>
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ export default function List() {
|
|||||||
,
|
,
|
||||||
status:
|
status:
|
||||||
obj.status === 1 ? (
|
obj.status === 1 ? (
|
||||||
<Button onClick={() => navigate('service-monitoring/:id')}
|
<Button onClick={() => navigate('service-monitoring/'+obj.personId )}
|
||||||
startIcon={<Iconify icon="ic:round-check" />}
|
startIcon={<Iconify icon="ic:round-check" />}
|
||||||
sx={{
|
sx={{
|
||||||
backgroundColor: palette.light.grey[300],
|
backgroundColor: palette.light.grey[300],
|
||||||
@@ -328,6 +328,8 @@ export default function List() {
|
|||||||
setPaginationTable(response.data);
|
setPaginationTable(response.data);
|
||||||
setRowsPerPage(response.data.per_page);
|
setRowsPerPage(response.data.per_page);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (searchParams.get('page')) {
|
if (searchParams.get('page')) {
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
const currentPage = parseInt(searchParams.get('page')) - 1;
|
const currentPage = parseInt(searchParams.get('page')) - 1;
|
||||||
|
|||||||
@@ -17,8 +17,13 @@ import Page from '../../components/Page';
|
|||||||
import Iconify from '../../components/Iconify';
|
import Iconify from '../../components/Iconify';
|
||||||
// utils
|
// utils
|
||||||
import useSettings from '../../hooks/useSettings';
|
import useSettings from '../../hooks/useSettings';
|
||||||
import { useState, SyntheticEvent } from 'react';
|
import { useState, SyntheticEvent, useContext, useEffect } from 'react';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { UserCurrentCorporateContext } from '../../contexts/UserCurrentCorporate';
|
||||||
|
import { useNavigate, useParams } from 'react-router-dom';
|
||||||
|
import axios from '../../utils/axios';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// sections
|
// sections
|
||||||
// import ListTable from '../../sections/claimreports/ListTable';
|
// import ListTable from '../../sections/claimreports/ListTable';
|
||||||
// import ClaimStatusCard from '../../sections/claimreports/ClaimStatusCard';
|
// import ClaimStatusCard from '../../sections/claimreports/ClaimStatusCard';
|
||||||
@@ -115,6 +120,47 @@ export default function ServiceMonitoring() {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const [data, setData] = useState({});
|
||||||
|
const [data1, setData1] = useState();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const {corporateValue} = useContext(UserCurrentCorporateContext);
|
||||||
|
const {id} = useParams();
|
||||||
|
const claimId = '2'
|
||||||
|
console.log('id',id);
|
||||||
|
|
||||||
|
useEffect (() => {
|
||||||
|
|
||||||
|
console.log('fetching data...')
|
||||||
|
axios.get('/data/'+id )
|
||||||
|
.then(response => {
|
||||||
|
console.log('data fetched...', response.data)
|
||||||
|
setData(response.data);
|
||||||
|
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('error fetching data...', error);
|
||||||
|
});
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
console.log('Data:' , data);
|
||||||
|
|
||||||
|
const [encounterData, setEncounterData] = useState({});
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
console.log('fetching encounter data...');
|
||||||
|
axios.get('/claims/${claim_id}/encounters')
|
||||||
|
.then(response => {
|
||||||
|
console.log('encounter data fetched...', response.data);
|
||||||
|
setEncounterData(response.data);
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('error fetching encounter data...', error);
|
||||||
|
});
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Page title="Service Monitoring 123456">
|
<Page title="Service Monitoring 123456">
|
||||||
@@ -160,23 +206,23 @@ export default function ServiceMonitoring() {
|
|||||||
<Stack spacing={2}>
|
<Stack spacing={2}>
|
||||||
<Stack>
|
<Stack>
|
||||||
<Typography variant="caption">Nama perusahaan</Typography>
|
<Typography variant="caption">Nama perusahaan</Typography>
|
||||||
<Typography variant="body2">PT. Amman Mineral</Typography>
|
<Typography variant="body2">{corporateValue}</Typography>
|
||||||
</Stack>
|
</Stack>
|
||||||
<Stack>
|
<Stack>
|
||||||
<Typography variant="caption">Nama Lengkap</Typography>
|
<Typography variant="caption">Nama Lengkap</Typography>
|
||||||
<Typography variant="body2">Stephen kuow</Typography>
|
<Typography variant="body2">{data.name || 'Loading...'}</Typography>
|
||||||
</Stack>
|
</Stack>
|
||||||
<Stack>
|
<Stack>
|
||||||
<Typography variant="caption">Tanggal lahir</Typography>
|
<Typography variant="caption">Tanggal lahir</Typography>
|
||||||
<Typography variant="body2">09 Aug 1980</Typography>
|
<Typography variant="body2">{data.birth_date}</Typography>
|
||||||
</Stack>
|
</Stack>
|
||||||
<Stack>
|
<Stack>
|
||||||
<Typography variant="caption">Email</Typography>
|
<Typography variant="caption">Email</Typography>
|
||||||
<Typography variant="body2">Stephen.uow@gmal.com</Typography>
|
<Typography variant="body2">{data.email}</Typography>
|
||||||
</Stack>
|
</Stack>
|
||||||
<Stack>
|
<Stack>
|
||||||
<Typography variant="caption">No telepon</Typography>
|
<Typography variant="caption">No telepon</Typography>
|
||||||
<Typography variant="body2">+62 821-8123-2323</Typography>
|
<Typography variant="body2">{data.phone}</Typography>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Stack>
|
</Stack>
|
||||||
<Stack>
|
<Stack>
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ export default function UserProfile() {
|
|||||||
});
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
console.log(id)
|
console.log('data', data)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Page title="Profile Peserta Jessica Lie">
|
<Page title="Profile Peserta Jessica Lie">
|
||||||
|
|||||||
@@ -277,6 +277,8 @@ export default function Index() {
|
|||||||
const corporateMembers = await axios.get(`${corporateValue}/members`, {
|
const corporateMembers = await axios.get(`${corporateValue}/members`, {
|
||||||
params: { ...parameters },
|
params: { ...parameters },
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('member',corporateMembers );
|
||||||
const corporateTopUpLimit = await axios.get(`${corporateValue}/topup`);
|
const corporateTopUpLimit = await axios.get(`${corporateValue}/topup`);
|
||||||
|
|
||||||
setSearchParams(parameters);
|
setSearchParams(parameters);
|
||||||
@@ -331,11 +333,11 @@ export default function Index() {
|
|||||||
Inactive
|
Inactive
|
||||||
</Button>
|
</Button>
|
||||||
),
|
),
|
||||||
action: (
|
/* action: (
|
||||||
<IconButton onClick={handleAction}>
|
<IconButton onClick={handleAction}>
|
||||||
<MoreVertIcon />
|
<MoreVertIcon />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
),
|
), */
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -256,13 +256,13 @@ export default function CardPersonalInformation({data}) {
|
|||||||
fullWidth
|
fullWidth
|
||||||
sx={{ marginTop: '16px' }}
|
sx={{ marginTop: '16px' }}
|
||||||
/>
|
/>
|
||||||
<TextField
|
{/* <TextField
|
||||||
label="Address"
|
label="Address"
|
||||||
value={address}
|
value={address}
|
||||||
onChange={(e) => setAddress(e.target.value)}
|
onChange={(e) => setAddress(e.target.value)}
|
||||||
fullWidth
|
fullWidth
|
||||||
sx={{ marginTop: '16px' }}
|
sx={{ marginTop: '16px' }}
|
||||||
/>
|
/> */}
|
||||||
|
|
||||||
|
|
||||||
{/* Add more fields as needed */}
|
{/* Add more fields as needed */}
|
||||||
|
|||||||
@@ -2,7 +2,10 @@
|
|||||||
import { styled } from '@mui/material/styles';
|
import { styled } from '@mui/material/styles';
|
||||||
import { Card, Typography, Stack, LinearProgress, linearProgressClasses } from '@mui/material';
|
import { Card, Typography, Stack, LinearProgress, linearProgressClasses } from '@mui/material';
|
||||||
import CardBenefitSummary from './CardBenefitSummary';
|
import CardBenefitSummary from './CardBenefitSummary';
|
||||||
|
import axios from '../../../utils/axios';
|
||||||
|
|
||||||
|
import { useContext, useState, useEffect } from 'react';
|
||||||
|
import { UserCurrentCorporateContext } from '../../../contexts/UserCurrentCorporate';
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({
|
const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({
|
||||||
@@ -17,10 +20,73 @@ const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({
|
|||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
type CardPolicyProps = {
|
||||||
|
limit: {
|
||||||
|
myLimit: {
|
||||||
|
balance: number;
|
||||||
|
total: number;
|
||||||
|
percentage: number;
|
||||||
|
};
|
||||||
|
lockLimit: {
|
||||||
|
balance: number;
|
||||||
|
percentage: number;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
topUpLimit: {
|
||||||
|
companyName: string;
|
||||||
|
policyNumber: number;
|
||||||
|
totalMembers: number;
|
||||||
|
totalCases: number;
|
||||||
|
totalPersen: number;
|
||||||
|
myLimit: {
|
||||||
|
balance: number;
|
||||||
|
total: number;
|
||||||
|
percentage: number;
|
||||||
|
};
|
||||||
|
maxTopUp: number;
|
||||||
|
};
|
||||||
|
members?: DataMember[];
|
||||||
|
};
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
export default function CardPolicyNumber() {
|
export default function CardPolicyNumber() {
|
||||||
return (
|
|
||||||
|
|
||||||
|
const { corporateValue } = useContext(UserCurrentCorporateContext);
|
||||||
|
const [policyNumber,setPolicyNumber] = useState('');
|
||||||
|
const [policyData, setPolicyData] = useState<CardPolicyProps>();
|
||||||
|
|
||||||
|
/* axios.get(`${corporateValue}/topup`)
|
||||||
|
.then(response => {
|
||||||
|
console.log(response.data);
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error(error);
|
||||||
|
}); */
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
axios
|
||||||
|
.get(`${corporateValue}/topup`)
|
||||||
|
.then(response => {
|
||||||
|
const { data } = response.data; // Access the 'data' object from the response
|
||||||
|
const { policyNumber } = data; // Access the 'policyNumber' field from the 'data' object
|
||||||
|
setPolicyNumber(policyNumber);
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error(error);
|
||||||
|
});
|
||||||
|
|
||||||
|
// const corporatePolicyLimit = axios.get(`${corporateValue}/policy`);
|
||||||
|
// const corporateTopUpLimit = axios.get(`${corporateValue}/topup`);
|
||||||
|
// setPolicyData({
|
||||||
|
// limit: corporatePolicyLimit.data.data,
|
||||||
|
// topUpLimit: corporateTopUpLimit.data.data,
|
||||||
|
// });
|
||||||
|
}, [corporateValue]);
|
||||||
|
|
||||||
|
return (
|
||||||
<Card sx={{ padding: 2 }}>
|
<Card sx={{ padding: 2 }}>
|
||||||
<Stack>
|
<Stack>
|
||||||
<Stack direction="row" alignItems="center" spacing={1} justifyContent="space-between">
|
<Stack direction="row" alignItems="center" spacing={1} justifyContent="space-between">
|
||||||
@@ -28,7 +94,7 @@ export default function CardPolicyNumber() {
|
|||||||
<img width={52} height={52} src="/logo/logo-linksehat.png" alt="LinkSehat" />
|
<img width={52} height={52} src="/logo/logo-linksehat.png" alt="LinkSehat" />
|
||||||
<Stack spacing={1}>
|
<Stack spacing={1}>
|
||||||
<Typography variant="subtitle2">Policy Number</Typography>
|
<Typography variant="subtitle2">Policy Number</Typography>
|
||||||
<Typography variant="subtitle2">12345678910</Typography>
|
<Typography variant="subtitle2">{policyNumber}</Typography>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Stack>
|
</Stack>
|
||||||
<Stack spacing={1} sx={{ width: '206.5px' }}>
|
<Stack spacing={1} sx={{ width: '206.5px' }}>
|
||||||
|
|||||||
Reference in New Issue
Block a user