import { useParams, useNavigate } from 'react-router-dom'; import { Button } from '@/components/ui/button'; import JobCard from '@/components/JobCard'; import TransactionForm from '@/components/TransactionForm'; import TransactionTable from '@/components/TransactionTable'; import JobForm from '@/components/JobForm'; import { IndTransactionRecordNoId, IndJobRecordNoId, IndTransactionRecord } from '@/lib/pbtypes'; import { useJobs, useJob } from '@/hooks/useDataService'; import { useState } from 'react'; import { IndJob } from '@/lib/types'; const JobDetails = () => { const { jobId } = useParams<{ jobId: string }>(); const navigate = useNavigate(); const [showJobForm, setShowJobForm] = useState(false); const [editingJob, setEditingJob] = useState(null); const { createMultipleTransactions, updateTransaction, deleteTransaction, updateJob, deleteJob, createMultipleBillItems } = useJobs(); const job = useJob(jobId || null); if (!jobId) { navigate('/'); return null; } if (!job) { return (
Job not found
); } const handleEditJob = (job: IndJob) => { setEditingJob(job); setShowJobForm(true); }; const handleUpdateJob = async (jobData: IndJobRecordNoId) => { if (!editingJob) return; try { await updateJob(editingJob.id, jobData); setShowJobForm(false); setEditingJob(null); } catch (error) { console.error('Error updating job:', error); } }; const handleDeleteJob = async (jobId: string) => { if (confirm('Are you sure you want to delete this job?')) { try { await deleteJob(jobId); navigate('/'); } catch (error) { console.error('Error deleting job:', error); } } }; const handleTransactionsAdded = async (transactions: IndTransactionRecordNoId[], type: 'expenditure' | 'income') => { try { await createMultipleTransactions(jobId, transactions, type); } catch (error) { console.error('Error adding transactions:', error); } }; const handleUpdateTransaction = async (transactionId: string, updates: Partial) => { try { await updateTransaction(jobId, transactionId, updates); } catch (error) { console.error('Error updating transaction:', error); } }; const handleDeleteTransaction = async (transactionId: string) => { try { await deleteTransaction(jobId, transactionId); } catch (error) { console.error('Error deleting transaction:', error); } }; const handleUpdateProduced = async (jobId: string, produced: number) => { try { await updateJob(jobId, { produced }); } catch (error) { console.error('Error updating produced quantity:', error); } }; const handleImportBOM = async (jobId: string, items: { name: string; quantity: number }[]) => { try { const billItems = items.map(item => ({ name: item.name, quantity: item.quantity, unitPrice: 0 })); await createMultipleBillItems(jobId, billItems, 'billOfMaterials'); } catch (error) { console.error('Error importing BOM:', error); } }; if (showJobForm) { return (
{ setShowJobForm(false); setEditingJob(null); }} />
); } return (

Job Details

{job.outputItem}

); }; export default JobDetails;