diff --git a/src/components/pages/uniformity/UniformityTable.tsx b/src/components/pages/uniformity/UniformityTable.tsx index 5e3a2f7f..77d0c75c 100644 --- a/src/components/pages/uniformity/UniformityTable.tsx +++ b/src/components/pages/uniformity/UniformityTable.tsx @@ -86,6 +86,10 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => { const singleDeleteModal = useModal(); const bulkDeleteModal = useModal(); const successModal = useModal(); + const singleApproveModal = useModal(); + const singleRejectModal = useModal(); + const bulkApproveModal = useModal(); + const bulkRejectModal = useModal(); const { data: uniformities, @@ -136,6 +140,38 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => { setIsDeleteLoading(false); }, [selectedUniformity?.id, refreshUniformities, singleDeleteModal]); + const singleApproveHandler = useCallback(async () => { + setIsDeleteLoading(true); + + try { + await UniformityApi.approve([selectedUniformity?.id as number]); + refreshUniformities(); + + singleApproveModal.closeModal(); + toast.success('Successfully approved Uniformity!'); + } catch { + toast.error('Failed to approve Uniformity'); + } finally { + setIsDeleteLoading(false); + } + }, [selectedUniformity?.id, refreshUniformities, singleApproveModal]); + + const singleRejectHandler = useCallback(async () => { + setIsDeleteLoading(true); + + try { + await UniformityApi.reject([selectedUniformity?.id as number]); + refreshUniformities(); + + singleRejectModal.closeModal(); + toast.success('Successfully rejected Uniformity!'); + } catch { + toast.error('Failed to reject Uniformity'); + } finally { + setIsDeleteLoading(false); + } + }, [selectedUniformity?.id, refreshUniformities, singleRejectModal]); + const handleBulkDelete = useCallback(() => { bulkDeleteModal.openModal(); }, [bulkDeleteModal]); @@ -164,7 +200,15 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => { setRowSelection({}); }, []); - const handleBulkApprove = useCallback(async () => { + const handleBulkApprove = useCallback(() => { + bulkApproveModal.openModal(); + }, [bulkApproveModal]); + + const handleBulkReject = useCallback(() => { + bulkRejectModal.openModal(); + }, [bulkRejectModal]); + + const bulkApproveHandler = useCallback(async () => { setIsBulkActionLoading(true); try { @@ -173,6 +217,7 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => { setRowSelection({}); refreshUniformities(); + bulkApproveModal.closeModal(); toast.success( `Successfully approved ${selectedRowIds.length} Uniformity data!` ); @@ -181,9 +226,9 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => { } finally { setIsBulkActionLoading(false); } - }, [selectedRowIds, refreshUniformities]); + }, [selectedRowIds, refreshUniformities, bulkApproveModal]); - const handleBulkReject = useCallback(async () => { + const bulkRejectHandler = useCallback(async () => { setIsBulkActionLoading(true); try { @@ -192,6 +237,7 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => { setRowSelection({}); refreshUniformities(); + bulkRejectModal.closeModal(); toast.success( `Successfully rejected ${selectedRowIds.length} Uniformity data!` ); @@ -200,7 +246,7 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => { } finally { setIsBulkActionLoading(false); } - }, [selectedRowIds, refreshUniformities]); + }, [selectedRowIds, refreshUniformities, bulkRejectModal]); useEffect(() => { if (isResponseSuccess(uniformities) && uniformities.data) { @@ -638,6 +684,252 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => { + +
+ props.row.original.label, + }, + { + accessorKey: 'value', + header: 'Value', + cell: (props) => {props.row.original.value}, + }, + ]} + pageSize={6} + className={{ + containerClassName: 'mb-0', + paginationClassName: 'hidden', + }} + /> + + + + +
+
props.row.original.label, + }, + { + accessorKey: 'value', + header: 'Value', + cell: (props) => {props.row.original.value}, + }, + ]} + pageSize={6} + className={{ + containerClassName: 'mb-0', + paginationClassName: 'hidden', + }} + /> + + + + +
+
({ + id: `bulk-approve-${index}`, + label: `${index + 1}. ${u.location_name}`, + value: `${u.flock_name} - ${u.kandang_name}`, + }))} + columns={[ + { + accessorKey: 'label', + header: 'Label', + cell: (props) => props.row.original.label, + }, + { + accessorKey: 'value', + header: 'Value', + cell: (props) => {props.row.original.value}, + }, + ]} + pageSize={selectedUniformities.length} + className={{ + containerClassName: 'mb-0', + paginationClassName: 'hidden', + }} + /> + + + + +
+
({ + id: `bulk-reject-${index}`, + label: `${index + 1}. ${u.location_name}`, + value: `${u.flock_name} - ${u.kandang_name}`, + }))} + columns={[ + { + accessorKey: 'label', + header: 'Label', + cell: (props) => props.row.original.label, + }, + { + accessorKey: 'value', + header: 'Value', + cell: (props) => {props.row.original.value}, + }, + ]} + pageSize={selectedUniformities.length} + className={{ + containerClassName: 'mb-0', + paginationClassName: 'hidden', + }} + /> + + + {/* Floating Actions Button */}