// @mui import { styled } from '@mui/material/styles'; import { Typography, LinearProgress, linearProgressClasses, Stack, TextField, InputAdornment, Card, Grid, IconButton, FormControlLabel, Checkbox, } from '@mui/material'; import { Search as SearchIcon } from '@mui/icons-material'; // components import MuiDialog from '../../components/MuiDialog'; import Iconify from '../../components/Iconify'; import HistoryRoundedIcon from '@mui/icons-material/HistoryRounded'; // React import { ReactElement, useContext, useEffect, useState } from 'react'; import DialogRequestLog from './DialogRequestLog'; import axios from '../../utils/axios'; import { useSearchParams, useNavigate, Link } from 'react-router-dom'; import { UserCurrentCorporateContext } from '../../contexts/UserCurrentCorporate'; import { fSplit } from '../../utils/formatNumber'; import { LoadingButton } from '@mui/lab'; import { useDispatch, useSelector } from 'react-redux'; import { RootState } from '../../store'; import { claimSubmitAction, claimSubmitType } from '../../store/claimSubmit'; // ---------------------------------------------------------------------- type DataContentType = { id: number; fullName: string; memberId: string; limit: { current: number; total: number; percentage: number; }; avatar?: { url?: string; title?: string; }; }; type MuiDialogProps = { title?: { name?: string; icon?: string; }; openDialog: boolean; setOpenDialog: Function; content?: ReactElement; // data?: DataContent[]; }; // ---------------------------------------------------------------------- const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({ height: 10, borderRadius: 6, [`&.${linearProgressClasses.colorPrimary}`]: { backgroundColor: '#D1F1F1', }, [`& .${linearProgressClasses.bar}`]: { borderRadius: 6, backgroundColor: '#54D62C', }, })); // ---------------------------------------------------------------------- export default function DialogClaimSubmitMember({ title, openDialog, setOpenDialog, }: MuiDialogProps) { const { corporateValue } = useContext(UserCurrentCorporateContext); /* ---------------------------------- data ---------------------------------- */ const [data, setData] = useState([]); const dispatch = useDispatch(); const selectedData = useSelector((state: RootState) => state.claims.data); const [dataMemberClaim, setDataMemberClaim] = useState({ id: 0, fullName: '', memberId: '', limit: { current: 0, total: 0, percentage: 0, }, }); const navigate = useNavigate(); /* -------------------------------------------------------------------------- */ /* --------------------------------- Search --------------------------------- */ const [searchText, setSearchText] = useState(''); const [appliedParams, setAppliedParams] = useState({}); const handleSearchSubmit = async (event: React.FormEvent) => { event.preventDefault(); if (searchText === '') { setAppliedParams({}); } else { setAppliedParams({ search: searchText }); } await new Promise((resolve) => setTimeout(resolve, 500)); }; /* -------------------------------------------------------------------------- */ /* ------------------------------ Icon On Click ----------------------------- */ const handleCheck = (data: DataContentType, isChecked: boolean) => { if (isChecked) { dispatch(claimSubmitAction.patch([...selectedData, data])); } else { let temp = selectedData.filter((row) => row.memberId !== data.memberId); dispatch(claimSubmitAction.patch(temp)); } }; /* -------------------------------------------------------------------------- */ useEffect(() => { (async () => { if (openDialog === true) { const response = await axios.get(`${corporateValue}/members`, { params: { ...appliedParams, type: 'claim-submit' }, }); setData(response.data.data); } })(); }, [corporateValue, openDialog, appliedParams]); useEffect(() => { dispatch(claimSubmitAction.dispatch()); }, [dispatch]); const getContent = () => ( {data.map((row: DataContentType, key) => ( { return selectedData.some((item) => item.memberId === row.memberId) ? theme.palette.primary.lighter : theme.palette.background.default } }} >
handleCheck(row, e.target.checked)} />} label="" labelPlacement="end" sx={{ marginLeft: '20px' }} />
user-profile
{row.fullName} {row.memberId} {/* */} {/* */} {/* LIMIT {fSplit(row.limit && row.limit.current)} / {fSplit(row.limit && row.limit.total)} */} {/* */} {/* */} 0} sx={{ marginLeft: '10px' }} onClick={() => { dispatch(claimSubmitAction.patch([row])); navigate(`/claim-request/${row.id}`); }} >
))}
); return (
setSearchText(event?.target.value)} value={searchText} InputProps={{ startAdornment: ( ), }} placeholder="Search Name or Member ID... " sx={{ marginTop: 2 }} /> {getContent()}
navigate('/claim-request/bulk')} > Claim Submit Selected
); }