dress/resources/js/pages/admin/manage/purchase/hooks/use-purchase-index.ts

71 lines
2.3 KiB
TypeScript

import { router } from '@inertiajs/react';
import { useState } from 'react';
import { toast } from 'sonner';
import purchaseRoutes from '@/routes/purchase';
import type { Purchase } from '@/types';
export function usePurchaseIndex() {
const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);
const [isBulkDeleteDialogOpen, setIsBulkDeleteDialogOpen] = useState(false);
const [purchaseToDelete, setPurchaseToDelete] = useState<Purchase | null>(null);
const [rowsToDelete, setRowsToDelete] = useState<any[]>([]);
const [rowSelection, setRowSelection] = useState({});
const onDelete = (purchase: Purchase) => {
setPurchaseToDelete(purchase);
setIsDeleteDialogOpen(true);
};
const confirmDelete = () => {
if (purchaseToDelete) {
router.delete(purchaseRoutes.destroy(purchaseToDelete.id).url, {
onSuccess: (response: any) => {
const flash = response.props.flash;
if (flash?.error) {
toast.error(flash.error);
} else if (flash?.success) {
toast.success(flash.success);
}
setIsDeleteDialogOpen(false);
setPurchaseToDelete(null);
setRowSelection({});
},
});
}
};
const confirmBulkDelete = () => {
router.post(purchaseRoutes.bulkDestroy().url, {
ids: rowsToDelete.map((row: any) => row.id),
_method: 'DELETE'
}, {
onSuccess: (response: any) => {
const flash = response.props.flash;
if (flash?.error) {
toast.error(flash.error);
} else if (flash?.success) {
toast.success(flash.success);
}
setIsBulkDeleteDialogOpen(false);
setRowsToDelete([]);
setRowSelection({});
},
});
};
return {
isDeleteDialogOpen,
isBulkDeleteDialogOpen,
purchaseToDelete,
rowsToDelete,
rowSelection,
setRowSelection,
setRowsToDelete,
setIsDeleteDialogOpen,
setIsBulkDeleteDialogOpen,
onDelete,
confirmDelete,
confirmBulkDelete,
};
}