import { Badge, Button, ButtonGroup, Checkbox, Icon, IconButton, Link, Menu, MenuButton, MenuItem, MenuList, Stack, Switch, Text, useToast, } from '@chakra-ui/react'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { __ } from '@wordpress/i18n'; import React from 'react'; import { BiCalendar, BiDotsVerticalRounded, BiShow } from 'react-icons/bi'; import { Link as RouterLink } from 'react-router-dom'; import { Td, Tr } from 'react-super-responsive-table'; import { CustomIcon } from '../../../../../assets/js/back-end/components/common/CustomIcon'; import { EditIcon, Trash, } from '../../../../../assets/js/back-end/constants/images'; import API from '../../../../../assets/js/back-end/utils/api'; import localized from '../../../../../assets/js/back-end/utils/global'; import { getWordpressLocalTime } from '../../../../../assets/js/back-end/utils/utils'; import { urls } from '../constants/urls'; import { multipleCurrencyBackendRoutes } from '../routes/routes'; import { PriceZoneSchema } from '../types/multiCurrency'; import CountryList from './components/CountryList'; interface Props { data: PriceZoneSchema; onDeletePress: (id: number) => void; onTrashPress: (id: number) => void; onRestorePress: (id: number) => void; setBulkIds: (value: string[]) => void; bulkIds: string[]; isLoading?: boolean; } const PriceZoneList: React.FC = (props) => { const { data, onDeletePress, onTrashPress, onRestorePress, setBulkIds, bulkIds, isLoading, } = props; const queryClient = useQueryClient(); const toast = useToast(); const pricingZonePI = new API(urls.pricingZones); const updateStatus = useMutation({ mutationFn: (newStatus) => pricingZonePI.update(data?.id, { status: newStatus }), ...{ onSuccess: () => { queryClient.invalidateQueries({ queryKey: [`pricingZone${data?.id}`] }); queryClient.invalidateQueries({ queryKey: [`pricingZonesList`] }); toast({ title: __( 'Pricing zone status updated successfully.', 'learning-management-system', ), isClosable: true, status: 'success', }); }, onError: (error: any) => { const message: any = error?.message ? error?.message : error?.data?.message; toast({ title: __( 'Failed to update the pricing zone status.', 'learning-management-system', ), description: message ? `${message}` : undefined, status: 'error', isClosable: true, }); }, }, }); const handleStatusChange = (newStatus: any) => { updateStatus.mutate(newStatus); }; return ( setBulkIds( e.target.checked ? [...bulkIds, data?.id.toString()] : bulkIds.filter((item) => item !== data?.id.toString()), ) } /> {data?.status === 'trash' ? ( {data?.title} ) : ( {data?.title} )} {data?.currency?.label} {`1 ${localized.currency.code} = `} {data?.exchange_rate} {` ${data?.currency?.value} `} <> {getWordpressLocalTime(data?.date_created, 'Y-m-d, h:i A')} handleStatusChange(e.target.checked ? 'active' : 'inactive') } isDisabled={updateStatus.isPending} /> {'active' === data?.status ? ( {__('Active', 'learning-management-system')} ) : ( {__('Inactive', 'learning-management-system')} )} {data?.status === 'trash' ? ( } variant="outline" rounded="sm" fontSize="large" size="xs" /> onRestorePress(data?.id)} icon={} _hover={{ color: 'primary.500' }} > {__('Restore', 'learning-management-system')} onDeletePress(data?.id)} icon={} _hover={{ color: 'red.500' }} > {__('Delete Permanently', 'learning-management-system')} ) : ( } variant="outline" rounded="sm" fontSize="large" size="xs" /> onTrashPress(data?.id)} icon={} _hover={{ color: 'red.500' }} > {__('Trash', 'learning-management-system')} )} ); }; export default PriceZoneList;