71 lines
2.3 KiB
TypeScript
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,
|
|
};
|
|
}
|