) => {
+ setAnchorEl(event.currentTarget);
+ };
+
+ const handleClose = () => {
+ setAnchorEl(null);
+ };
+
+ const handleImportButton = () => {
+ if (importForm?.current) {
+ handleClose();
+ importForm.current ? importForm.current.click() : console.log('No File selected');
+ } else {
+ alert('No file selected')
+ }
+ }
+
+ const handleCancelImportButton = () => {
+ importForm.current.value = "";
+ importForm.current.dispatchEvent(new Event("change", { bubbles: true }));
+ }
+
+ const handleImportChange = (event: any) => {
+ if (event.target.files[0]) {
+ setCurrentImportFileName(event.target.files[0].name)
+ } else {
+ setCurrentImportFileName(null);
+ }
+ }
+
+ const handleUpload = () => {
+ if (importForm.current?.files.length) {
+ const formData = new FormData();
+ formData.append("file", importForm.current?.files[0])
+ axios.post(`corporates/${corporate_id}/import-plan-benefit`, formData )
+ .then(response => {
+ handleCancelImportButton();
+ loadDataTableData();
+ setImportResult(response.data)
+ // alert('Succesfully read '+ response.data.total_successed_row + ' with ' + response.data.total_failed_row + ' failed rows');
+ })
+ .catch(response => {
+ enqueueSnackbar('Looks like something went wrong. Please check your data and try again. ' + response.message, { variant: 'error' })
+ })
+ } else {
+ enqueueSnackbar('No File Selected', { variant: 'warning' })
+ }
+ }
+
+ return (
+
+
+
+
+ } sx={{ p: 1.8 }}
+ >
+ Create
+
+
+
+
+ );
+ }
+
+ // Dummy Default Data
+ const [dataTableIsLoading, setDataTableLoading] = useState(true);
+ const [dataTableData, setDataTableData] = useState(LaravelPaginatedDataDefault);
+
+ const loadDataTableData = async (appliedFilter : any | null = null) => {
+ setDataTableLoading(true);
+ const filter = appliedFilter ? appliedFilter : Object.fromEntries([...searchParams.entries()]);
+ const response = await axios.get('/claims', { params: filter });
+ // console.log(response.data);
+ setDataTableLoading(false);
+
+ setDataTableData(response.data);
+ }
+
+ const applyFilter = async (searchFilter: {search: string}) => {
+ await loadDataTableData(searchFilter);
+ setSearchParams(searchFilter);
+ }
+
+ const handlePageChange = (event : ChangeEvent, value: number) : void => {
+ const filter = Object.fromEntries([...searchParams.entries(), ["page", value]]);
+ loadDataTableData(filter);
+ setSearchParams(filter);
+ }
+
+ useEffect(() => {
+ loadDataTableData();
+ }, [])
+
+ const headStyle = {
+ fontWeight: 'bold',
+ };
+
+ // Called on every row to map the data to the columns
+ function createData( data: any ): any {
+ return {
+ ...data,
+ }
+ }
+
+ {/* ------------------ TABLE ROW ------------------ */}
+ function Row(props: { row: ReturnType }) {
+ const { row } = props;
+ const [open, setOpen] = React.useState(false);
+
+ return (
+
+ *': { borderBottom: 'unset' } }}>
+
+ setOpen(!open)}
+ >
+ {open ? : }
+
+
+ {row.code}
+ {row.member?.full_name}
+ {row.plan?.code}
+ {row.benefit?.code}
+ ({row.diagnosis?.code}) {row.diagnosis?.name}
+ {fCurrency(row.total_claim)}
+
+ {/* */}
+
+ {/* COLLAPSIBLE ROW */}
+
+
+
+
+
+ Description : {row.description}
+
+
+
+
+
+
+ );
+ }
+ {/* ------------------ END TABLE ROW ------------------ */}
+
+ function TableContent() {
+ return (
+
+ {/* ------------------ TABLE HEADER ------------------ */}
+
+
+
+ Code
+ Member Name
+ Plan
+ Benefit
+ Diagnosis
+ Total Claim
+ {/* Action */}
+
+
+ {/* ------------------ END TABLE HEADER ------------------ */}
+
+
+ {/* ------------------ TABLE ROW ------------------ */}
+ {dataTableIsLoading ?
+ (
+
+
+ Loading
+
+
+ ) : (
+ dataTableData.data.length === 0 ?
+ (
+
+
+ No Data
+
+
+ ) : (
+
+ {dataTableData.data.map(row => (
+
+ ))}
+
+ )
+ )}
+ {/* ------------------ END TABLE ROW ------------------ */}
+
+ )
+ }
+
+ return (
+
+
+
+ }
+ />
+
+ );
+}
diff --git a/frontend/dashboard/src/pages/Corporates/Index.tsx b/frontend/dashboard/src/pages/Corporates/Index.tsx
index 5c0ea756..6f99353a 100755
--- a/frontend/dashboard/src/pages/Corporates/Index.tsx
+++ b/frontend/dashboard/src/pages/Corporates/Index.tsx
@@ -398,6 +398,16 @@ export default function Corporates() {
? fCurrency(row.current_policy?.minimal_deposit_net)
: '-'}
+
+
+ Corporate Limit
+
+
+ :{' '}
+ {row.current_policy
+ ? fCurrency(row.current_policy?.limit_balance)
+ : '-'}
+
diff --git a/frontend/dashboard/src/pages/Corporates/Member/List.tsx b/frontend/dashboard/src/pages/Corporates/Member/List.tsx
index 371349fa..b60c8ec4 100755
--- a/frontend/dashboard/src/pages/Corporates/Member/List.tsx
+++ b/frontend/dashboard/src/pages/Corporates/Member/List.tsx
@@ -268,7 +268,7 @@ export default function CorporatePlanList() {
{row.name}
{row.nric}
{row.email}
- {row.plan_id}
+ {row.current_plan?.code}
{row.current_policy?.start}
{row.current_policy?.end}
{( row.active ? ()
diff --git a/frontend/dashboard/src/routes/index.tsx b/frontend/dashboard/src/routes/index.tsx
index 0f977c1e..bc126492 100755
--- a/frontend/dashboard/src/routes/index.tsx
+++ b/frontend/dashboard/src/routes/index.tsx
@@ -205,6 +205,20 @@ export default function Router() {
path: 'master/formularium/create',
element: ,
},
+
+
+ {
+ path: 'claims',
+ element: ,
+ },
+ {
+ path: 'claims/create',
+ element:
+ },
+ {
+ path: 'claims/:id',
+ element:
+ }
]
},
// {
@@ -287,3 +301,6 @@ const CorporateServicesCreate = Loadable(lazy(() => import('../pages/Corporates/
const CorporateHospitals = Loadable(lazy(() => import('../pages/Corporates/Hospital/Index')));
const CorporateClaimHistories = Loadable(lazy(() => import('../pages/Corporates/ClaimHistory/Index')));
+
+const Claims = Loadable(lazy(() => import('../pages/Claims/Index')));
+const ClaimsCreate = Loadable(lazy(() => import('../pages/Claims/Create')));
\ No newline at end of file