From a3760b8757153b633fd651b12abd5467b143f0b7 Mon Sep 17 00:00:00 2001 From: Muhammad Fajar Date: Mon, 12 Dec 2022 08:41:53 +0700 Subject: [PATCH] fixing auth, switching corporate, table member --- .../Controllers/Api/ClaimReportController.php | 63 +++++ ...er.php => CorporateDivisionController.php} | 2 +- ...ller.php => CorporateMemberController.php} | 20 +- Modules/Client/Routes/api.php | 9 +- .../Client/Transformers/MemberResources.php | 7 +- .../Services/MemberEnrollmentService.php | 14 +- app/Helpers/Helper.php | 2 + .../src/components/hook-form/FormProvider.tsx | 7 +- .../src/contexts/LaravelAuthContext.tsx | 5 +- .../src/contexts/UserCurrentCorporate.tsx | 2 +- .../src/layouts/dashboard/header/index.tsx | 3 +- .../src/layouts/dashboard/index.tsx | 2 +- .../src/sections/dashboard/CardBalance.tsx | 1 - .../dashboard/DialogClaimSubmitMember.tsx | 179 +++++++++----- .../DialogClaimSubmitMemberSubmission.tsx | 221 ++++++++++-------- .../sections/dashboard/DialogTopUpLimit.tsx | 8 +- .../src/sections/dashboard/TableList.tsx | 9 +- 17 files changed, 347 insertions(+), 207 deletions(-) create mode 100644 Modules/Client/Http/Controllers/Api/ClaimReportController.php rename Modules/Client/Http/Controllers/Api/{DivisionController.php => CorporateDivisionController.php} (98%) rename Modules/Client/Http/Controllers/Api/{MemberController.php => CorporateMemberController.php} (83%) diff --git a/Modules/Client/Http/Controllers/Api/ClaimReportController.php b/Modules/Client/Http/Controllers/Api/ClaimReportController.php new file mode 100644 index 00000000..a8b43216 --- /dev/null +++ b/Modules/Client/Http/Controllers/Api/ClaimReportController.php @@ -0,0 +1,63 @@ +whereHas('employeds', function ($corporateEmployee) use ($corporate_id) { $corporateEmployee->where('corporate_id', $corporate_id); - })->when($request->input('division'), function ($division, $division_id) { - $division->whereHas('division', function ($corporateEmployee) use ($division_id) { - $corporateEmployee->where('division_id', $division_id); - }); })->when($request->input('search'), function ($query, $search) { $query->where('member_id', 'like', "%" . $search . "%") ->orWhere('name', 'like', "%" . $search . "%"); + }); + + if ($request->input('claimMember') === 'false') { + $members = $members->when($request->input('division'), function ($division, $division_id) { + $division->whereHas('division', function ($corporateEmployee) use ($division_id) { + $corporateEmployee->where('division_id', $division_id); + }); })->when($request->has('orderBy'), function ($query) use ($request) { $query->orderBy($request->orderBy, $request->order); })->paginate($limit); - return response()->json(Helper::paginateResources(MemberResources::collection($members))); + return response()->json(Helper::paginateResources(MemberResources::collection($members))); + } else { + $members = $members->get(); + + return response()->json(MemberResources::collection($members)); + } } /** diff --git a/Modules/Client/Routes/api.php b/Modules/Client/Routes/api.php index 533a78d6..9b77b4e6 100755 --- a/Modules/Client/Routes/api.php +++ b/Modules/Client/Routes/api.php @@ -1,10 +1,10 @@ group(function () { }); Route::middleware('auth:sanctum')->group(function () { - Route::post('logout', [AuthController::class, 'logout'])->name('logout'); Route::get('user', [UserController::class, 'index']); Route::get('corporate-manage', [CorporateManageController::class, 'index']); Route::prefix('{corporate_id}')->group(function () { Route::get('policy', [CorporatePolicyController::class, 'index']); - Route::get('division', [DivisionController::class, 'index']); - Route::get('members', [MemberController::class, 'index']); + Route::get('division', [CorporateDivisionController::class, 'index']); + Route::get('members', [CorporateMemberController::class, 'index']); }); }); }); diff --git a/Modules/Client/Transformers/MemberResources.php b/Modules/Client/Transformers/MemberResources.php index 6a25d1fd..b9efac92 100644 --- a/Modules/Client/Transformers/MemberResources.php +++ b/Modules/Client/Transformers/MemberResources.php @@ -15,15 +15,18 @@ class MemberResources extends JsonResource public function toArray($request) { return [ + 'id' => $this->id, 'memberId' => $this->member_id, 'fullName' => $this->full_name, - 'division' => $this->division->name, + $this->mergeWhen($request->input('claimMember') === 'false', [ + 'division' => $this->division->name, + 'status' => $this->active + ]), 'limit' => [ 'current' => 2000000, 'total' => 4000000, 'percentage' => (2000000 / 4000000) * 100 ], - 'status' => $this->active ]; } } diff --git a/Modules/Internal/Services/MemberEnrollmentService.php b/Modules/Internal/Services/MemberEnrollmentService.php index b7b7e33b..183a52f6 100755 --- a/Modules/Internal/Services/MemberEnrollmentService.php +++ b/Modules/Internal/Services/MemberEnrollmentService.php @@ -457,20 +457,10 @@ class MemberEnrollmentService $division_id = CorporateDivision::query()->where('code', $row['division_name'])->pluck('id')->first(); if (empty($division_id)) { - $corporateCodeArray = explode(' ', $row['division_name']); - - if (!empty($corporateCodeArray[1])) { - $corporateCode = substr($corporateCodeArray[0], 0, 1) . substr($corporateCodeArray[1], 0, 1); - } elseif (!empty($corporateCodeArray[2])) { - $corporateCode = substr($corporateCodeArray[0], 0, 1) . substr($corporateCodeArray[1], 0, 1); - } else { - $corporateCode = substr($row['division_name'], 0, 1); - } - - $division = CorporateDivision::query()->create([ + $division = CorporateDivision::query()->updateOrCreate(['name' => $row['division_name'], 'code' => $row['division_name']], [ 'corporate_id' => $corporate->id, 'name' => $row['division_name'], - 'code' => $corporateCode, + 'code' => $row['division_name'], ]); $division_id = $division->id; diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 78355560..e61c7397 100755 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -35,6 +35,8 @@ class Helper 'last_page_url' => '', 'links' => $resource->links(null, $resource->items()), 'next_page_url' => $resource->nextPageUrl(), + 'per_page' => $resource->perPage(), + 'total' => $resource->total() ]; } diff --git a/frontend/client-portal/src/components/hook-form/FormProvider.tsx b/frontend/client-portal/src/components/hook-form/FormProvider.tsx index cc4bafd0..bb03272f 100755 --- a/frontend/client-portal/src/components/hook-form/FormProvider.tsx +++ b/frontend/client-portal/src/components/hook-form/FormProvider.tsx @@ -8,12 +8,15 @@ type Props = { children: ReactNode; methods: UseFormReturn; onSubmit?: VoidFunction; + encType?: string; }; -export default function FormProvider({ children, onSubmit, methods }: Props) { +export default function FormProvider({ children, onSubmit, methods, encType }: Props) { return (
- {children}
+
+ {children} +
); } diff --git a/frontend/client-portal/src/contexts/LaravelAuthContext.tsx b/frontend/client-portal/src/contexts/LaravelAuthContext.tsx index 896cc131..0ce83544 100755 --- a/frontend/client-portal/src/contexts/LaravelAuthContext.tsx +++ b/frontend/client-portal/src/contexts/LaravelAuthContext.tsx @@ -75,11 +75,12 @@ type AuthProviderProps = { function AuthProvider({ children }: AuthProviderProps) { const [state, dispatch] = useReducer(JWTReducer, initialState); + const accessToken = getSession(); useEffect(() => { (async () => { try { - const accessToken = getSession(); + // const accessToken = getSession(); if (accessToken) { setSession(accessToken); @@ -113,7 +114,7 @@ function AuthProvider({ children }: AuthProviderProps) { }); } })(); - }, []); + }, [accessToken]); const login = async (phoneOrEmail: string) => axios diff --git a/frontend/client-portal/src/contexts/UserCurrentCorporate.tsx b/frontend/client-portal/src/contexts/UserCurrentCorporate.tsx index 5f1ffcdc..b5da23d7 100755 --- a/frontend/client-portal/src/contexts/UserCurrentCorporate.tsx +++ b/frontend/client-portal/src/contexts/UserCurrentCorporate.tsx @@ -1,7 +1,7 @@ import { createContext } from 'react'; const UserCurrentCorporateContext = createContext({ - corporateValue: '', + corporateValue: '0', setCorporateValue: (value: string) => Promise, }); diff --git a/frontend/client-portal/src/layouts/dashboard/header/index.tsx b/frontend/client-portal/src/layouts/dashboard/header/index.tsx index 4b1a488f..ec8fb38d 100755 --- a/frontend/client-portal/src/layouts/dashboard/header/index.tsx +++ b/frontend/client-portal/src/layouts/dashboard/header/index.tsx @@ -1,6 +1,6 @@ // @mui import { styled } from '@mui/material/styles'; -import { Box, Stack, AppBar, Toolbar } from '@mui/material'; +import { Box, Stack, AppBar, Toolbar, Divider } from '@mui/material'; // hooks import useOffSetTop from '../../../hooks/useOffSetTop'; import useResponsive from '../../../hooks/useResponsive'; @@ -94,6 +94,7 @@ export default function DashboardHeader({ + diff --git a/frontend/client-portal/src/layouts/dashboard/index.tsx b/frontend/client-portal/src/layouts/dashboard/index.tsx index b0426c7a..e14aa6b7 100755 --- a/frontend/client-portal/src/layouts/dashboard/index.tsx +++ b/frontend/client-portal/src/layouts/dashboard/index.tsx @@ -60,7 +60,7 @@ export default function DashboardLayout() { const [corporateValue, setCorporateValue] = useLocalStorage( 'corporateValue', - `${user.corporate.id}` + user.corporate ? `${user.corporate.id}` : '' ); const value = { corporateValue, setCorporateValue }; diff --git a/frontend/client-portal/src/sections/dashboard/CardBalance.tsx b/frontend/client-portal/src/sections/dashboard/CardBalance.tsx index e2ef813a..301e8a72 100644 --- a/frontend/client-portal/src/sections/dashboard/CardBalance.tsx +++ b/frontend/client-portal/src/sections/dashboard/CardBalance.tsx @@ -156,7 +156,6 @@ export default function CardBalance(props: CardBalanceProps) { openDialog={openDialog} setOpenDialog={setOpenDialog} title={{ name: dialogTitle }} - // data={data?.members} /> )} diff --git a/frontend/client-portal/src/sections/dashboard/DialogClaimSubmitMember.tsx b/frontend/client-portal/src/sections/dashboard/DialogClaimSubmitMember.tsx index 97a6ac36..355ed544 100644 --- a/frontend/client-portal/src/sections/dashboard/DialogClaimSubmitMember.tsx +++ b/frontend/client-portal/src/sections/dashboard/DialogClaimSubmitMember.tsx @@ -15,15 +15,26 @@ import { Search as SearchIcon } from '@mui/icons-material'; import MuiDialog from '../../components/MuiDialog'; import Iconify from '../../components/Iconify'; // React -import { ReactElement, useRef, useState } from 'react'; +import { ReactElement, useContext, useEffect, useRef, useState } from 'react'; import DialogClaimSubmitMemberSubmission from './DialogClaimSubmitMemberSubmission'; +import axios from '../../utils/axios'; +import { UserCurrentCorporateContext } from '../../contexts/UserCurrentCorporate'; // ---------------------------------------------------------------------- -type DataContent = { - name: string; +type DataContentType = { + id: number; + fullName: string; memberId: string; - saldo: string; + limit: { + current: number; + total: number; + percentage: number; + }; + avatar?: { + url?: string; + title?: string; + }; }; type MuiDialogProps = { @@ -34,25 +45,11 @@ type MuiDialogProps = { openDialog: boolean; setOpenDialog: Function; content?: ReactElement; - data?: DataContent[]; + // data?: DataContent[]; }; // ---------------------------------------------------------------------- -function createData(name: string, memberId: string, saldo: string) { - return { name, memberId, saldo }; -} - -const rows = [ - createData('Alexandra tjoa tri atmaja kurniadi', '0122122', '10.000.000'), - createData('Marina kurniadi', '0122123', '10.000.000'), - createData('Tjoa Indri', '0122124', '10.000.000'), - createData('Atmaja Tirta', '0122125', '10.000.000'), - createData('Alexandra kurniadi', '0122126', '10.000.000'), -]; - -// ---------------------------------------------------------------------- - const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({ height: 10, borderRadius: 6, @@ -67,42 +64,81 @@ const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({ // ---------------------------------------------------------------------- -const DialogClaimSubmitMember = ({ title, openDialog, setOpenDialog, data }: MuiDialogProps) => { - /* --------------------------------- Search --------------------------------- */ +export default function DialogClaimSubmitMember({ + title, + openDialog, + setOpenDialog, +}: MuiDialogProps) { + const { corporateValue } = useContext(UserCurrentCorporateContext); - const searchInput = useRef(null); - const [searchText, setSearchText] = useState(''); - const [dataMemberClaim, setDataMemberClaim] = useState({ - name: '', + /* ---------------------------------- data ---------------------------------- */ + const [data, setData] = useState([]); + const [dataMemberClaim, setDataMemberClaim] = useState({ + id: 0, + fullName: '', memberId: '', - saldo: '', + limit: { + current: 0, + total: 0, + percentage: 0, + }, }); + /* -------------------------------------------------------------------------- */ - const handleSearchChange = (event: any) => { - const newSearchText = event.target.value ?? ''; - setSearchText(newSearchText); + /* --------------------------------- 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 = (name: string, memberId: string, saldo: string) => { - setDataMemberClaim({ name: name, memberId: memberId, saldo: saldo }); + 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); + } + })(); + }, [corporateValue, openDialog, appliedParams]); + const getContent = () => ( @@ -112,36 +148,37 @@ const DialogClaimSubmitMember = ({ title, openDialog, setOpenDialog, data }: Mui {date} - - - - ), - }} - placeholder="Cari nama atau member ID disini..." - sx={{ marginTop: 2 }} - /> +
+ setSearchText(event?.target.value)} + value={searchText} + InputProps={{ + startAdornment: ( + + + + ), + }} + placeholder="Cari nama atau member ID disini..." + sx={{ marginTop: 2 }} + /> + - {rows.map((row, key) => ( + {data.map((row: DataContentType, key) => ( user-profile - {row.name} + {row.fullName} Member ID : {row.memberId} @@ -150,15 +187,31 @@ const DialogClaimSubmitMember = ({ title, openDialog, setOpenDialog, data }: Mui Total Limit - + - {row.saldo} /{' '} + {row.limit && row.limit.current} /{' '} - 10.000.000 + {row.limit && row.limit.total} - clickHandler(row.name, row.memberId, row.saldo)}> + + clickHandler({ + id: row.id, + fullName: row.fullName, + memberId: row.memberId, + limit: { + current: row.limit.current, + total: row.limit.total, + percentage: row.limit.percentage, + }, + }) + } + > @@ -186,6 +239,4 @@ const DialogClaimSubmitMember = ({ title, openDialog, setOpenDialog, data }: Mui /> ); -}; - -export default DialogClaimSubmitMember; +} diff --git a/frontend/client-portal/src/sections/dashboard/DialogClaimSubmitMemberSubmission.tsx b/frontend/client-portal/src/sections/dashboard/DialogClaimSubmitMemberSubmission.tsx index fe9da992..3c5782b2 100644 --- a/frontend/client-portal/src/sections/dashboard/DialogClaimSubmitMemberSubmission.tsx +++ b/frontend/client-portal/src/sections/dashboard/DialogClaimSubmitMemberSubmission.tsx @@ -10,28 +10,37 @@ import { Link, Switch, SwitchProps, - FormControlLabel, + ButtonGroup, } from '@mui/material'; -import { Add as AddIcon } from '@mui/icons-material'; +import { Add as AddIcon, Cancel as CancelIcon } from '@mui/icons-material'; // components import MuiDialog from '../../components/MuiDialog'; import Iconify from '../../components/Iconify'; import { FormProvider } from '../../components/hook-form'; // React -import { ReactElement, useEffect, useRef, useState } from 'react'; +import { ReactElement, useEffect, useState } from 'react'; // yup import * as Yup from 'yup'; // form import { useForm } from 'react-hook-form'; import { yupResolver } from '@hookform/resolvers/yup'; import { LoadingButton } from '@mui/lab'; +import { fSplit } from '../../utils/formatNumber'; -// ---------------------------------------------------------------------- - -type DataContent = { - name: string; +/* ---------------------------------- types --------------------------------- */ +type DataContentType = { + id: number; + fullName: string; memberId: string; - saldo: string; + limit: { + current: number; + total: number; + percentage: number; + }; + avatar?: { + url?: string; + title?: string; + }; }; type MuiDialogProps = { @@ -42,24 +51,43 @@ type MuiDialogProps = { openDialog: boolean; setOpenDialog: Function; content?: ReactElement; - data?: DataContent; + data: DataContentType; }; -// ---------------------------------------------------------------------- +type BorderLinearProgressProps = { + percentage: number; +}; -const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({ - height: 10, - borderRadius: 6, - [`&.${linearProgressClasses.colorPrimary}`]: { - backgroundColor: theme.palette.grey[theme.palette.mode === 'light' ? 300 : 800], - }, - [`& .${linearProgressClasses.bar}`]: { +type FormValuesProps = { + invoice: ''; +}; +/* -------------------------------------------------------------------------- */ + +/* --------------------------------- styles --------------------------------- */ +const BorderLinearProgress = styled(LinearProgress)( + ({ theme, percentage }) => ({ + height: 10, borderRadius: 6, - background: 'linear-gradient(270deg, #19BBBB 38.42%, #FF9565 76.21%, #FE7253 104.02%)', - }, -})); - -// ---------------------------------------------------------------------- + [`&.${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%)', + '&::before': { + content: '""', + position: 'absolute', + right: 0, + top: 0, + width: `${100 - percentage}%`, + zIndex: 1, + bottom: 0, + background: '#DFE3E8', + }, + }, + }) +); +/* -------------------------------------------------------------------------- */ const DialogClaimSubmitMemberSubmission = ({ title, @@ -67,64 +95,74 @@ const DialogClaimSubmitMemberSubmission = ({ setOpenDialog, data, }: MuiDialogProps) => { - /* --------------------------------- Search --------------------------------- */ - - const searchInput = useRef(null); - const [searchText, setSearchText] = useState(''); - - const handleSearchChange = (event: any) => { - const newSearchText = event.target.value ?? ''; - setSearchText(newSearchText); - }; - - /* -------------------------------------------------------------------------- */ - /* ---------------------------- Get Current Date ---------------------------- */ - const current = new Date(); const date = `${current.getDate()} / ${current.getMonth() + 1} / ${current.getFullYear()}`; + /* -------------------------------------------------------------------------- */ + /* ------------------------------- file input ------------------------------- */ + // const [multipleImages, setMultipleImages] = useState([]); + + // Functions to preview multiple images + // const changeMultipleFiles = (e) => { + // if (e.target.files) { + // const imageArray = Array.from(e.target.files).map((file) => URL.createObjectURL(file)); + // setMultipleImages((prevImages) => prevImages.concat(imageArray)); + // } + // }; + + // const render = (data) => { + // data.map((image) => { + // {image}; + // }); + // }; + + // const FileForm = (props: any) => ( + // + // ); /* -------------------------------------------------------------------------- */ /* ------------------------------- Form Submit ------------------------------ */ - - type FormValuesProps = { - topup: string; - }; - - const TopUpSchema = Yup.object().shape({ - topup: Yup.string(), + const ClaimSubmitSchema = Yup.object().shape({ + invoice: Yup.mixed() + .required('You need to provide a file') + // @ts-ignore + .test('fileSize', 'The file is too large', (value) => { + for (let index = 0; index < value.length; index++) { + return value ? value[index].size <= 2000000 : false; + } + }), }); - const defaultValues = { - topup: '', - }; - const methods = useForm({ - resolver: yupResolver(TopUpSchema), - defaultValues, + resolver: yupResolver(ClaimSubmitSchema), }); const { + register, reset, handleSubmit, - formState: { isSubmitting }, + formState: { isSubmitting, errors }, } = methods; - useEffect(() => { - if (openDialog === false) { - reset(); - } - }, [openDialog, reset]); + // const { + // register, + // reset, + // handleSubmit, + // formState: { isSubmitting }, + // } = useForm({ resolver: yupResolver(ClaimSubmitSchema) }); - const onSubmit = async (data: FormValuesProps) => { - reset(); + const onSubmit = ({ invoice }: FormValuesProps) => { + // console.log(invoice); }; - /* -------------------------------------------------------------------------- */ /* ---------------------------- Ios Switch Style ---------------------------- */ - const IosSwitch = styled((props: SwitchProps) => ( ))(({ theme }) => ({ @@ -171,9 +209,14 @@ const DialogClaimSubmitMemberSubmission = ({ }), }, })); - /* -------------------------------------------------------------------------- */ + useEffect(() => { + if (openDialog === false) { + reset(); + } + }, [openDialog, reset]); + const getContent = () => ( @@ -193,7 +236,7 @@ const DialogClaimSubmitMemberSubmission = ({ style={{ borderRadius: '50%' }} /> - {data && data.name} + {data && data.fullName} Member ID : {data && data.memberId} @@ -206,15 +249,19 @@ const DialogClaimSubmitMemberSubmission = ({ Total Limit - + Details Benefits - + - {data && data.saldo} /{' '} + {fSplit(data && data.limit ? data.limit.current : 0)} /{' '} - 10.000.000 + {fSplit(data && data.limit ? data.limit.total : 0)} @@ -228,20 +275,11 @@ const DialogClaimSubmitMemberSubmission = ({ Real invoice required - - - + + {errors.invoice && errors.invoice.message ?

{errors.invoice.message}

: ''}
{/* Prescription */} - + {/* @@ -268,20 +306,10 @@ const DialogClaimSubmitMemberSubmission = ({ - - - - + + */} {/* Laboratory */} - + {/* @@ -308,18 +336,9 @@ const DialogClaimSubmitMemberSubmission = ({ - - - - + + */} + {/* Submit */} (val > 5000000 ? false : true)), + /* + // @ts-ignore */ + // .test('limit', 'Maximum Top Up Rp. 5.000.000', (val) => (val > 5000000 ? false : true)), }); const defaultValues = { @@ -87,6 +87,7 @@ const DialogTopUpLimit = ({ title, openDialog, setOpenDialog, data }: MuiDialogP const methods = useForm({ resolver: yupResolver(TopUpSchema), + // @ts-ignore defaultValues, }); @@ -110,6 +111,7 @@ const DialogTopUpLimit = ({ title, openDialog, setOpenDialog, data }: MuiDialogP const onCheckHandler = (data: FormValuesProps) => { setIsDisabledCheckbox(!isDisabledCheckbox); setIsDisabledButton(false); + // @ts-ignore setValue('topup', testData.totalLimit - testData.myLimit); }; diff --git a/frontend/client-portal/src/sections/dashboard/TableList.tsx b/frontend/client-portal/src/sections/dashboard/TableList.tsx index d81b35cf..9305b0af 100755 --- a/frontend/client-portal/src/sections/dashboard/TableList.tsx +++ b/frontend/client-portal/src/sections/dashboard/TableList.tsx @@ -262,14 +262,13 @@ export default function TableList(props: any) { await new Promise((resolve) => setTimeout(resolve, 500)); setAppliedParams(params); setIsLoading(false); - // setSearchParams.set('page', newPage + 1); }; /* -------------------------------------------------------------------------- */ /* --------------------------- row page per limit --------------------------- */ const onRowsPerPageChangeHandle = async (event: React.ChangeEvent) => { setIsLoading(true); - setPage(0); + searchParams.delete('page'); const params = Object.fromEntries([ ...searchParams.entries(), ['per_page', parseInt(event.target.value, 10)], @@ -294,13 +293,13 @@ export default function TableList(props: any) { : Object.fromEntries([...searchParams.entries(), ['order', order], ['orderBy', orderBy]]); const corporateMembers = await axios.get(`${corporateValue}/members`, { - params, + params: { ...params, claimMember: false }, }); setSearchParams(params); setDataTable(corporateMembers.data.data); - // setPaginationTable(response.data.meta); - // setRowsPerPage(response.data.meta.per_page); + setPaginationTable(corporateMembers.data); + setRowsPerPage(corporateMembers.data.per_page); setIsLoading(false); })(); }, [appliedParams, searchParams, order, orderBy, setSearchParams, corporateValue]);