'use client'; import { GenericCrudTable } from '@/components/admin/reference/generic-crud-table'; import { masterDataService } from '@/lib/services/master-data.service'; import { useContracts } from '@/hooks/use-master-data'; import { ColumnDef } from '@tanstack/react-table'; import { useState } from 'react'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; export default function DisciplinesPage() { const [selectedContractId, setSelectedContractId] = useState(null); const { data: contractsData = [] } = useContracts(); // Ensure we consistently use an array const contracts = Array.isArray(contractsData) ? contractsData : []; const columns: ColumnDef[] = [ { accessorKey: 'disciplineCode', header: 'Code', cell: ({ row }) => {row.getValue('disciplineCode')}, }, { accessorKey: 'codeNameTh', header: 'Name (TH)', }, { accessorKey: 'codeNameEn', header: 'Name (EN)', }, { accessorKey: 'isActive', header: 'Status', cell: ({ row }) => ( {row.getValue('isActive') ? 'Active' : 'Inactive'} ), }, ]; const contractOptions = contracts.map((c) => ({ label: `${c.contractName} (${c.contractNo})`, value: c.id, })); return (
masterDataService.getDisciplines(selectedContractId ? parseInt(selectedContractId) : undefined)} createFn={(data: Record) => masterDataService.createDiscipline(data as unknown as Parameters[0])} updateFn={(id, data) => Promise.reject('Not implemented yet')} // Update endpoint needs to be verified/added if missing deleteFn={(id) => masterDataService.deleteDiscipline(id)} columns={columns} filters={
} fields={[ { name: 'contractId', label: 'Contract', type: 'select', required: true, options: contractOptions, }, { name: 'disciplineCode', label: 'Code', type: 'text', required: true, }, { name: 'codeNameTh', label: 'Name (TH)', type: 'text', required: true, }, { name: 'codeNameEn', label: 'Name (EN)', type: 'text' }, { name: 'isActive', label: 'Active', type: 'checkbox' }, ]} />
); }