import { FC, useState } from 'react' import { useTranslation } from 'react-i18next' import { useGetShops, useHardDeleteShop } from '../hooks/useIconData' import PageLoading from '../../../components/PageLoading' import Td from '../../../components/Td' import { ShopType, ShopsResponse } from '../types/Types' import moment from 'moment-jalaali' import { Edit } from 'iconsax-react' import { toast } from '../../../components/Toast'; import Button from '../../../components/Button' import ShopAdminsModal from './components/ShopAdminsModal' import Pagination from '../../../components/Pagination' import { Link } from 'react-router-dom' import { Pages } from '../../../config/Pages' import TrashWithConfrim from '../../../components/TrashWithConfrim' import { useQueryClient } from '@tanstack/react-query' const ShopsList: FC = () => { const { t } = useTranslation('global') const queryClient = useQueryClient() const [page, setPage] = useState(1) const limit = 10 const { data: shops, isLoading } = useGetShops(page, limit) const [selectedShopId, setSelectedShopId] = useState('') const [isAdminsModalOpen, setIsAdminsModalOpen] = useState(false) const deleteShop = useHardDeleteShop() const shopsList = (shops as ShopsResponse | undefined)?.data?.shops || [] const totalPages = (shops as ShopsResponse | undefined)?.data?.pager?.totalPages || 1 const handleOpenAdminsModal = (shopId: string) => { setSelectedShopId(shopId) setIsAdminsModalOpen(true) } const handleCloseAdminsModal = () => { setIsAdminsModalOpen(false) setSelectedShopId('') } const calculateDaysRemaining = (endDate: string): string => { const end = moment(endDate) const now = moment() const diff = end.diff(now, 'days') if (diff < 0) { return 'منقضی شده' } return `${diff} روز` } const formatJalaliDate = (date: string): string => { return moment(date).format('jYYYY-jMM-jDD') } const handleDeleteShop = (shopId: string) => { deleteShop.mutate(shopId, { onSuccess: () => { toast('فروشگاه با موفقیت حذف شد', 'success') queryClient.invalidateQueries({ queryKey: ['shops'] }) }, onError: () => { toast('خطا در حذف فروشگاه', 'error') } }) } return (
{t('shop.list_shop')}
{ isLoading ? :
{ shopsList.map((item: ShopType) => { return ( ) }) }
{item.isActive ? t('shop.active') : t('shop.inactive')}
{formatJalaliDate(item.subscriptionStartDate)}
{formatJalaliDate(item.subscriptionEndDate)}
{calculateDaysRemaining(item.subscriptionEndDate)}
handleDeleteShop(item.id)} isLoading={deleteShop.isPending} />
{totalPages > 1 && ( )}
}
) } export default ShopsList