// @mui import { styled } from '@mui/material/styles'; import { Typography, LinearProgress, linearProgressClasses, Stack, TextField, InputAdornment, Card, IconButton, } from '@mui/material'; import { Search as SearchIcon } from '@mui/icons-material'; // components import MuiDialog from '../../components/MuiDialog'; import Iconify from '../../components/Iconify'; // React import { ReactElement, useContext, useEffect, useRef, useState } from 'react'; import DialogClaimSubmitMemberSubmission from './DialogClaimSubmitMemberSubmission'; import axios from '../../utils/axios'; import { UserCurrentCorporateContext } from '../../contexts/UserCurrentCorporate'; // ---------------------------------------------------------------------- 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: theme.palette.grey[theme.palette.mode === 'light' ? 300 : 800], }, [`& .${linearProgressClasses.bar}`]: { borderRadius: 6, background: 'linear-gradient(270deg, #19BBBB 38.42%, #FF9565 76.21%, #FE7253 104.02%)', }, })); // ---------------------------------------------------------------------- export default function DialogClaimSubmitMember({ title, openDialog, setOpenDialog, }: MuiDialogProps) { const { corporateValue } = useContext(UserCurrentCorporateContext); /* ---------------------------------- data ---------------------------------- */ const [data, setData] = useState([]); const [dataMemberClaim, setDataMemberClaim] = useState({ id: 0, fullName: '', memberId: '', limit: { current: 0, total: 0, percentage: 0, }, }); /* -------------------------------------------------------------------------- */ /* --------------------------------- 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)); }; /* -------------------------------------------------------------------------- */ /* ---------------------------- Get Current Date ---------------------------- */ const current = new Date(); const date = `${current.getDate()} / ${current.getMonth() + 1} / ${current.getFullYear()}`; /* -------------------------------------------------------------------------- */ /* ------------------------------ Icon On Click ----------------------------- */ const [openDialogClaimMember, setOpenDialogMemberClaim] = useState(false); const clickHandler = ({ id, fullName, memberId, limit, avatar }: DataContentType) => { setDataMemberClaim({ id: id, fullName: fullName, memberId: memberId, limit: { current: limit.current, total: limit.total, percentage: limit.percentage, }, avatar: { url: avatar && avatar.url, title: avatar && avatar.title, }, }); setOpenDialogMemberClaim(true); }; /* -------------------------------------------------------------------------- */ useEffect(() => { (async () => { if (openDialog === true) { const response = await axios.get(`${corporateValue}/members`, { params: { ...appliedParams, claimMember: true }, }); setData(response.data.data); } })(); }, [corporateValue, openDialog, appliedParams]); const getContent = () => ( Pilih Karyawan Submission date {date}
setSearchText(event?.target.value)} value={searchText} InputProps={{ startAdornment: ( ), }} placeholder="Cari nama atau member ID disini..." sx={{ marginTop: 2 }} /> {data.map((row: DataContentType, key) => ( {row.avatar {row.fullName} Member ID : {row.memberId} Total Limit {row.limit && row.limit.current} /{' '} {row.limit && row.limit.total} clickHandler({ id: row.id, fullName: row.fullName, memberId: row.memberId, limit: { current: row.limit.current, total: row.limit.total, percentage: row.limit.percentage, }, }) } > ))}
); return ( <> ); }