// @mui import { Box, Button, Card, Collapse, IconButton, MenuItem, Table, TableBody, TableCell, TableRow, TextField, Typography, Stack, Menu, ButtonGroup, Tooltip, } from '@mui/material'; import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight'; import AddIcon from '@mui/icons-material/Add'; import AssessmentIcon from '@mui/icons-material/Assessment'; import UploadIcon from '@mui/icons-material/Upload'; import CancelIcon from '@mui/icons-material/Cancel'; // hooks import React, { ChangeEvent, useEffect, useRef, useState } from 'react'; import { Link, Navigate, useNavigate, useSearchParams } from 'react-router-dom'; // components import axios from '../../utils/axios'; import { LaravelPaginatedData, LaravelPaginatedDataDefault } from '../../@types/paginated-data'; import DataTable from '../../components/LaravelTable'; import { fCurrency } from '../../utils/formatNumber'; import EditRoundedIcon from '@mui/icons-material/EditRounded'; import { Chip } from '@mui/material'; import Iconify from '@/components/Iconify'; import { enqueueSnackbar } from 'notistack'; import { fDate } from '../../utils/formatTime'; export default function List() { const [searchParams, setSearchParams] = useSearchParams(); const [importResult, setImportResult] = useState(null); const navigate = useNavigate(); function SearchInput(props: any) { // SEARCH const searchInput = useRef(null); const [searchText, setSearchText] = useState(''); const handleSearchChange = (event: any) => { const newSearchText = event.target.value ?? ''; setSearchText(newSearchText); }; const handleSearchSubmit = (event: any) => { event.preventDefault(); props.onSearch({ search: searchText }); // Trigger to Parent }; const handleGetData = (type :string) => { axios.get(`claims/1/data-claim`) .then((response) => { const link = document.createElement('a'); link.href = response.data.data.file_url; link.setAttribute('download', response.data.data.file_name); document.body.appendChild(link); link.click(); }) } useEffect(() => { // Trigger First Search setSearchText(searchParams.get('search') ?? ''); }, []); return (
*/}
); } // 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.claim_request?.code} {/* {row.code} */} {fDate(row.created_at)} {row.member?.full_name} {row.plan?.code} {row.claim_request?.service?.name} ({row.diagnoses[0]?.icd?.code}) {row.diagnoses[0]?.icd?.name} {fCurrency(row.total_claim)} {row.status == 'draft' && ()} {row.status == 'requested' && ()} {row.status == 'received' && ()} {row.status == 'approved' && ()} {row.status == 'postpone' && ()} {row.status == 'paid' && ()} {row.status == 'declined' && ()} {['approved', 'paid'].includes(row.status) && ( { navigate('/claims/' + row.id); }}> )} {!['approved', 'paid'].includes(row.status) && ( { navigate('/claims/' + row.id); }}> )} {/* COLLAPSIBLE ROW */} {/* Description : {row.description} */} ); } { /* ------------------ END TABLE ROW ------------------ */ } function TableContent() { return ( {/* ------------------ TABLE HEADER ------------------ */} {/* */} Code Request Date {/* Code Claim */} Member Name Plan Benefit Diagnosis Total Claim Status Action {/* ------------------ END TABLE HEADER ------------------ */} {/* ------------------ TABLE ROW ------------------ */} {dataTableIsLoading ? ( Loading ) : dataTableData.data.length === 0 ? ( No Data ) : ( {dataTableData.data.map((row) => ( ))} )} {/* ------------------ END TABLE ROW ------------------ */}
); } return ( } /> ); }