import { router } from '@inertiajs/react'; import { useState } from 'react'; import { toast } from 'sonner'; import payrollRoutes from '@/routes/payroll'; import type { Payroll } from '@/types'; export function usePayrollIndex() { const [isFormOpen, setIsFormOpen] = useState(false); const [selectedPayroll, setSelectedPayroll] = useState(null); const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false); const [isBulkDeleteDialogOpen, setIsBulkDeleteDialogOpen] = useState(false); const [payrollToDelete, setPayrollToDelete] = useState(null); const [rowsToDelete, setRowsToDelete] = useState([]); const [rowSelection, setRowSelection] = useState({}); const [isGenerating, setIsGenerating] = useState(false); const onGenerate = () => { setIsGenerating(true); router.post(payrollRoutes.generate().url, {}, { onSuccess: (response: any) => { console.log(response) toast.success(response.props.flash.success); setIsGenerating(false); }, onError: (response: any) => { console.log(response) toast.error(response.props.flash.error); setIsGenerating(false); }, onFinish: () => setIsGenerating(false), }); }; const onEdit = (payroll: Payroll) => { setSelectedPayroll(payroll); setIsFormOpen(true); }; const onDelete = (payroll: Payroll) => { setPayrollToDelete(payroll); setIsDeleteDialogOpen(true); }; const confirmDelete = () => { if (payrollToDelete) { router.delete(payrollRoutes.destroy(payrollToDelete.id).url, { onSuccess: (response: any) => { toast.success(response.props.flash.success); setIsDeleteDialogOpen(false); setPayrollToDelete(null); setRowSelection({}); }, }); } }; const confirmBulkDelete = () => { router.post(payrollRoutes.bulkDestroy().url, { ids: rowsToDelete.map((row: any) => row.id), _method: 'DELETE' }, { onSuccess: (response: any) => { toast.success(response.props.flash.success); setIsBulkDeleteDialogOpen(false); setRowsToDelete([]); setRowSelection({}); }, }); }; const onTogglePaid = (id: number) => { router.patch(payrollRoutes.togglePaid(id).url, {}, { onSuccess: (response: any) => toast.success(response.props.flash.success), }); }; const closeForm = () => { setIsFormOpen(false); setTimeout(() => setSelectedPayroll(null), 200); }; return { isFormOpen, selectedPayroll, isDeleteDialogOpen, isBulkDeleteDialogOpen, payrollToDelete, rowsToDelete, rowSelection, isGenerating, setRowSelection, setRowsToDelete, setIsDeleteDialogOpen, setIsBulkDeleteDialogOpen, onGenerate, onEdit, onDelete, confirmDelete, confirmBulkDelete, onTogglePaid, closeForm, }; }