diff --git a/Modules/Client/Http/Controllers/Api/ClaimReportController.php b/Modules/Client/Http/Controllers/Api/ClaimReportController.php
index 8a3d5b5a..599dcd13 100644
--- a/Modules/Client/Http/Controllers/Api/ClaimReportController.php
+++ b/Modules/Client/Http/Controllers/Api/ClaimReportController.php
@@ -3,7 +3,6 @@
namespace Modules\Client\Http\Controllers\Api;
use App\Helpers\Helper;
-use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\ClaimRequest;
diff --git a/Modules/Client/Http/Controllers/Api/CorporateMemberController.php b/Modules/Client/Http/Controllers/Api/CorporateMemberController.php
index 4180139e..e711c470 100644
--- a/Modules/Client/Http/Controllers/Api/CorporateMemberController.php
+++ b/Modules/Client/Http/Controllers/Api/CorporateMemberController.php
@@ -32,7 +32,7 @@ class CorporateMemberController extends Controller
$members = $this->corporateMemberService->getAllMemberClaimReports($corporate_id, $request);
return response()->json(Helper::paginateResources(ClaimReportMemberResources::collection($members)));
case 'claim-submit':
- $members = $this->corporateMemberService->getAllMemberClaimReports($corporate_id, $request);
+ $members = $this->corporateMemberService->getAllMemberClaimSubmits($corporate_id, $request);
return response()->json(Helper::paginateResources(ClaimSubmitMemberResources::collection($members)));
case 'alarm-center':
$members = $this->corporateMemberService->getAllMemberAlarmCenter($corporate_id, $request);
@@ -61,35 +61,34 @@ class CorporateMemberController extends Controller
//Get Family
$data_family = DB::table('members')
- ->join('persons', 'members.person_id', '=', 'persons.id')
- ->select('members.*','persons.phone')
- ->where('principal_id', $data->member_id)
- ->get();
- if($data_family->isEmpty())
- {
- $principal_id = DB::table('members')
- ->where('member_id', $data->member_id)
- ->select('principal_id')
- ->first();
- $data_family = DB::table('members')
->join('persons', 'members.person_id', '=', 'persons.id')
- ->select('members.*','persons.phone')
- ->where('principal_id', $principal_id->principal_id)
- ->where('members.member_id','<>',$data->member_id)
- ->orWhere('members.member_id', $principal_id->principal_id)
- ->get();
+ ->select('members.*', 'persons.phone')
+ ->where('principal_id', $data->member_id)
+ ->get();
+ if ($data_family->isEmpty()) {
+ $principal_id = DB::table('members')
+ ->where('member_id', $data->member_id)
+ ->select('principal_id')
+ ->first();
+ $data_family = DB::table('members')
+ ->join('persons', 'members.person_id', '=', 'persons.id')
+ ->select('members.*', 'persons.phone')
+ ->where('principal_id', $principal_id->principal_id)
+ ->where('members.member_id', '<>', $data->member_id)
+ ->orWhere('members.member_id', $principal_id->principal_id)
+ ->get();
}
-
+
$data->family = $data_family;
//Claim History
$data_claim_history = DB::table('claim_requests')
- ->join('claims', 'claims.claim_request_id', '=', 'claim_requests.id')
- ->join('claim_items', 'claim_items.claim_id', '=', 'claims.id')
- ->join('benefits', 'benefits.id', '=', 'claim_items.claim_itemable_id')
- ->select('claim_requests.status','claim_requests.submission_date','benefits.description')
- ->where('claim_requests.member_id', $data->id)
- ->get();
+ ->join('claims', 'claims.claim_request_id', '=', 'claim_requests.id')
+ ->join('claim_items', 'claim_items.claim_id', '=', 'claims.id')
+ ->join('benefits', 'benefits.id', '=', 'claim_items.claim_itemable_id')
+ ->select('claim_requests.status', 'claim_requests.submission_date', 'benefits.description')
+ ->where('claim_requests.member_id', $data->id)
+ ->get();
$data->claim_history = $data_claim_history;
return response()->json(DataMemberResource::make($data));
diff --git a/Modules/Client/Transformers/ClaimReport/MemberResources.php b/Modules/Client/Transformers/ClaimReport/MemberResources.php
index 088f3510..2b4128f6 100644
--- a/Modules/Client/Transformers/ClaimReport/MemberResources.php
+++ b/Modules/Client/Transformers/ClaimReport/MemberResources.php
@@ -19,8 +19,7 @@ class MemberResources extends JsonResource
'memberId' => $this->member_id,
'fullName' => $this->full_name,
'division' => $this->division_name ?? '',
- 'submission_date' => '',
- 'status' => $this->active,
+ 'status' => $this->status,
];
}
}
diff --git a/app/Services/CorporateMemberService.php b/app/Services/CorporateMemberService.php
index 9d40ae24..b552ac21 100644
--- a/app/Services/CorporateMemberService.php
+++ b/app/Services/CorporateMemberService.php
@@ -47,6 +47,46 @@ class CorporateMemberService
{
$limit = $request->has('perPage') ? $request->input('perPage') : 10;
+ return Member::query()
+ ->joinClaimRequests('right')
+ ->joinCorporateEmployees('left')
+ ->joinCorporateDivisions('left')
+ ->withSum('claims', 'total_claim')
+ ->whereHas('employeds', function (Builder $corporateEmployee) use ($corporateId) {
+ $corporateEmployee->where('corporate_id', $corporateId);
+ })
+ ->when($request->input('search'), function (Builder $query, $search) {
+ $query->where(function (Builder $query) use ($search) {
+ $query->orWhere('members.member_id', 'like', "%" . $search . "%")
+ ->orWhere('members.name', 'like', "%" . $search . "%");
+ });
+ })
+ ->when($request->input('division'), function (Builder $division, $value) {
+ $division->whereHas('division', function (Builder $corporateEmployee) use ($value) {
+ $corporateEmployee->where('division_id', $value);
+ });
+ })
+ ->when($request->has('orderBy'), function (Builder $query) use ($request) {
+ $orderBy = match ($request->orderBy) {
+ 'memberId' => 'member_id',
+ 'fullName' => 'name',
+ default => ''
+ };
+
+ if (in_array($orderBy, ['member_id', 'name', 'active'])) {
+ $query->getQuery()->orderBy($orderBy, $request->order);
+ } elseif ($request->orderBy === 'division') {
+ $query->getQuery()->orderBy('corporate_divisions.name', $request->order);
+ }
+ })
+ ->select(['members.id', 'members.person_id', 'members.member_id', 'members.name', 'corporate_divisions.name AS division_name', 'claim_requests.status'])
+ ->paginate($limit);
+ }
+
+ public function getAllMemberClaimSubmits(int $corporateId, Request $request)
+ {
+ $limit = $request->has('perPage') ? $request->input('perPage') : 10;
+
return Member::query()
->joinClaimRequests('right')
->joinCorporateEmployees('left')
diff --git a/frontend/client-portal/src/pages/ClaimReport/DialogDetailClaim.tsx b/frontend/client-portal/src/pages/ClaimReport/DialogDetailClaim.tsx
index 44c59d93..01df6b98 100644
--- a/frontend/client-portal/src/pages/ClaimReport/DialogDetailClaim.tsx
+++ b/frontend/client-portal/src/pages/ClaimReport/DialogDetailClaim.tsx
@@ -1,183 +1,181 @@
// @mui
import {
- Button,
- Box,
- Stepper,
- Step,
- StepLabel,
- Card,
- Typography,
- Divider,
- Stack,
- } from '@mui/material';
- import { Add } from '@mui/icons-material';
- // components
- import MuiDialog from '../../components/MuiDialog';
- // theme
- import palette from '../../theme/palette';
- // React
- import { ReactElement } from 'react';
-
- type DataContent = {
- info: string;
- date: string;
- time: string;
- };
-
- type MuiDialogProps = {
- title?: {
- name?: string;
- icon?: string;
- };
- openDialog: boolean;
- setOpenDialog: Function;
- content?: ReactElement;
- data?: DataContent[];
- };
-
- const steps = ['Review', 'Approval', 'Disbursement'];
-
- const DialogDetailClaim = ({ title, openDialog, setOpenDialog, data }: MuiDialogProps) => {
- function clickHandler(arg0: string) {
- throw new Error('Function not implemented.');
- }
+ Button,
+ Box,
+ Stepper,
+ Step,
+ StepLabel,
+ Card,
+ Typography,
+ Divider,
+ Stack,
+} from '@mui/material';
+import { Add } from '@mui/icons-material';
+// components
+import MuiDialog from '../../components/MuiDialog';
+// theme
+import palette from '../../theme/palette';
+// React
+import { ReactElement } from 'react';
- // const getContent = () => (
-
- // );
-
- return (
-
- <>
-
-
- Claim Request
-
-
- Submission date
- 15 / 05 / 2022
-
-
-
-
- {steps.map((label) => (
-
- {label}
-
- ))}
-
-
-
-
- 17 Mei 2022
-
-
-
-
-
- {/* Item 1 */}
-
-
- 09:10 WIB
-
- Approval
-
-
-
-
-
- Details : mohon melengkapi kekurangan dokumen
-
-
- Lab pemeriksaan darah
-
- }
- fullWidth
- sx={{ typography: 'subtitle2', borderColor: '#F5F5F5' }}
- >
- onClick={() => clickHandler('topUpLimit')}
- Hasil Pemeriksaan Laboratorium
-
-
-
- {/* Item 2 */}
-
-
- 09:00 WIB
-
- Approval
-
-
-
-
-
- Details : Penilaian Dokter
-
-
-
- {/* Item 3 */}
-
-
- 08:00 WIB
-
- Review
-
-
-
-
-
- Details : Klaim Diajukan
-
-
-
-
-
- >
- //
- );
+type DataContent = {
+ info: string;
+ date: string;
+ time: string;
+};
+
+type MuiDialogProps = {
+ title?: {
+ name?: string;
+ icon?: string;
};
-
- export default DialogDetailClaim;
-
\ No newline at end of file
+ openDialog: boolean;
+ setOpenDialog: Function;
+ content?: ReactElement;
+ data?: DataContent[];
+};
+
+const steps = ['Review', 'Approval', 'Disbursement'];
+
+const DialogDetailClaim = ({ title, openDialog, setOpenDialog, data }: MuiDialogProps) => {
+ function clickHandler(arg0: string) {
+ throw new Error('Function not implemented.');
+ }
+
+ // const getContent = () => (
+
+ // );
+
+ return (
+ <>
+
+
+ Claim Request
+
+
+ Submission date
+ 15 / 05 / 2022
+
+
+
+
+ {steps.map((label) => (
+
+ {label}
+
+ ))}
+
+
+
+
+ 17 Mei 2022
+
+
+
+
+
+ {/* Item 1 */}
+
+
+ 09:10 WIB
+
+ Approval
+
+
+
+
+
+ Details : mohon melengkapi kekurangan dokumen
+
+
+ Lab pemeriksaan darah
+
+ }
+ fullWidth
+ sx={{ typography: 'subtitle2', borderColor: '#F5F5F5' }}
+ // onClick={() => clickHandler('topUpLimit')}
+ >
+ Hasil Pemeriksaan Laboratorium
+
+
+
+ {/* Item 2 */}
+
+
+ 09:00 WIB
+
+ Approval
+
+
+
+
+
+ Details : Penilaian Dokter
+
+
+
+ {/* Item 3 */}
+
+
+ 08:00 WIB
+
+ Review
+
+
+
+
+
+ Details : Klaim Diajukan
+
+
+
+
+
+ >
+ //
+ );
+};
+
+export default DialogDetailClaim;
diff --git a/frontend/client-portal/src/pages/ClaimReport/List.tsx b/frontend/client-portal/src/pages/ClaimReport/List.tsx
index ddc67739..f41aa4bb 100644
--- a/frontend/client-portal/src/pages/ClaimReport/List.tsx
+++ b/frontend/client-portal/src/pages/ClaimReport/List.tsx
@@ -1,22 +1,5 @@
/* ---------------------------------- @mui ---------------------------------- */
-import {
- Paper,
- Table,
- TableBody,
- TableCell,
- TableContainer,
- TableHead,
- TableRow,
- TextField,
- Stack,
- IconButton,
- Button,
- TableSortLabel,
- Box,
-} from '@mui/material';
-import DialogDetailClaim from '../../sections/dashboard/DialogDetailClaim';
-import { visuallyHidden } from '@mui/utils';
-import { MoreVert as MoreVertIcon } from '@mui/icons-material';
+import { Stack, Button } from '@mui/material';
/* ---------------------------------- axios --------------------------------- */
// import axios from 'axios';
import axios from '../../utils/axios';
@@ -25,121 +8,13 @@ import { useContext, useEffect, useState } from 'react';
/* -------------------------------- component ------------------------------- */
import Iconify from '../../components/Iconify';
-import BaseTablePagination from '../../components/BaseTablePagination';
import TableComponent from '../../components/Table';
-import { Navigate } from 'react-router-dom';
-
-/* ---------------------------------- hooks --------------------------------- */
-import useMap from '../../hooks/useMap';
/* ---------------------------------- theme --------------------------------- */
import palette from '../../theme/palette';
import { UserCurrentCorporateContext } from '../../contexts/UserCurrentCorporate';
import { HeadCell, Order, PaginationTableProps } from '../../@types/table';
import { useSearchParams, useNavigate } from 'react-router-dom';
-/* ---------------------------------- types --------------------------------- */
-
-// type PaginationTableProps = {
-// current_page: number;
-// from: number;
-// last_page: number;
-// links: [];
-// path: string;
-// per_page: number;
-// to: number;
-// total: number;
-// };
-
-// type DataTableProps = {
-// fullName: string;
-// memberId: string;
-// service: string;
-// start_date: string;
-// end_date: string;
-// status: boolean | number;
-// };
-
-// /* -------------------------------------------------------------------------- */
-
-// /* -------------------------- enchanced table head -------------------------- */
-
-// type Order = 'asc' | 'desc';
-
-// interface HeadCell {
-// id: string;
-// label: string;
-// }
-
-// const headCells: readonly HeadCell[] = [
-// {
-// id: 'name',
-// label: 'Name',
-// },
-// {
-// id: 'member_id',
-// label: 'Member ID',
-// },
-// {
-// id: 'service',
-// label: 'Service',
-// },
-// {
-// id: 'start_date',
-// label: 'Start Date',
-// },
-// {
-// id: 'end_date',
-// label: 'End Date',
-// },
-// {
-// id: 'status',
-// label: 'Status',
-// },
-// ];
-
-// interface EnhancedTableProps {
-// onRequestSort: (event: React.MouseEvent, property: string) => void;
-// order: Order;
-// orderBy: string;
-// }
-
-// function EnhancedTableHead(props: EnhancedTableProps) {
-// const { order, orderBy, onRequestSort } = props;
-// const createSortHandler = (property: string) => (event: React.MouseEvent) => {
-// onRequestSort(event, property);
-// };
-
-// return (
-//
-//
-// No
-// {headCells.map((headCell) => (
-//
-//
-// {headCell.label}
-// {orderBy === headCell.id ? (
-//
-// {order === 'desc' ? 'sorted descending' : 'sorted ascending'}
-//
-// ) : null}
-//
-//
-// ))}
-//
-//
-// );
-// }
-
-/* -------------------------------------------------------------------------- */
-
export default function List() {
const navigate = useNavigate();
@@ -250,12 +125,6 @@ export default function List() {
label: 'Divisi',
isSort: true,
},
- /* {
- id: 'end_date',
- align: 'center',
- label: 'End Date',
- isSort: false,
- }, */
{
id: 'status',
align: 'center',
@@ -270,31 +139,6 @@ export default function List() {
},
];
- const [open, setOpen] = useState(null);
-
- const handleOpen = (event: React.MouseEvent) => {
- setOpen(event.currentTarget);
- };
-
- const handleClose = () => {
- setOpen(null);
- };
-
- /* const clickHandler = (isDialog: string) => {
- switch (isDialog) {
-
- case 'infoDetail':
- setDialogTitle('Claim Details');
- setIsDialog(isDialog);
- setOpenDialog(true);
- break;
-
- default:
- break;
- }
- }; */
- /* -------------------------------------------------------------------------- */
-
useEffect(() => {
(async () => {
setIsLoading(true);
@@ -313,13 +157,10 @@ export default function List() {
setData(
response.data.data.map((obj: any) => ({
...obj,
-
- /* memberId: , */
status:
- obj.status === 1 ? (
+ obj.status === 'requested' ? (
+ ) : obj.status === 'approved' ? (
+
) : (
}
@@ -350,11 +206,6 @@ export default function List() {
Ongoing
),
- /* action: (
- clickHandler('infoDetail')}>
-
-
- ), */
}))
);
@@ -383,7 +234,6 @@ export default function List() {
loadings={loadings}
params={params}
searchs={searchs}
- // filters={filters}
/>
);