@ -7,6 +7,8 @@ import useTranslation from '@/src/hooks/useTranslation';
import { getSlotDefinitions , getMockSlotDefinitions , deleteSlotDefinition } from '@/src/lib/api/slot-definitions' ;
import type { SlotDefinition , SlotDefinitionError } from '@/src/types/slot-definitions' ;
import { DAY_NAMES , formatTime , calculateEndTime } from '@/src/types/slot-definitions' ;
import { getAdminClubDetail } from '@/src/lib/api/admin-clubs' ;
import type { Court } from '@/src/types/courts' ;
import SlotDefinitionForm from './SlotDefinitionForm' ;
import MaterialisationStatusPanel from './MaterialisationStatusPanel' ;
@ -14,28 +16,28 @@ interface SlotDefinitionsComponentProps {
clubId : number ;
}
// Mock courts data (will come from parent/API later)
const MOCK_COURTS = [
{ court_id : 101 , name : 'Court 1' } ,
{ court_id : 102 , name : 'Court 2' } ,
{ court_id : 103 , name : 'Court 3' } ,
] ;
export default function SlotDefinitionsComponent ( { clubId } : SlotDefinitionsComponentProps ) {
const { t , locale } = useTranslation ( ) ;
const [ definitions , setDefinitions ] = useState < SlotDefinition [ ] > ( [ ] ) ;
const [ courts , setCourts ] = useState < Court [ ] > ( [ ] ) ;
const [ loading , setLoading ] = useState ( true ) ;
const [ error , setError ] = useState < SlotDefinitionError | null > ( null ) ;
const [ showCreateModal , setShowCreateModal ] = useState ( false ) ;
const [ editingDefinition , setEditingDefinition ] = useState < SlotDefinition | undefined > ( undefined ) ;
useEffect ( ( ) = > {
loadD efinitions ( ) ;
loadD ata ( ) ;
} , [ clubId ] ) ;
async function loadD efinitions () {
async function loadD ata () {
setLoading ( true ) ;
// Fetch club detail to get courts with actual names
const clubResult = await getAdminClubDetail ( clubId ) ;
if ( clubResult . success ) {
setCourts ( clubResult . data . courts ) ;
}
// Use mock data for now (until backend is ready)
const USE_MOCKS = true ;
@ -59,6 +61,22 @@ export default function SlotDefinitionsComponent({ clubId }: SlotDefinitionsComp
setLoading ( false ) ;
}
async function loadDefinitions() {
// Reload just definitions (for after create/edit/delete)
const USE_MOCKS = true ;
if ( USE_MOCKS ) {
await new Promise ( resolve = > setTimeout ( resolve , 300 ) ) ;
setDefinitions ( getMockSlotDefinitions ( ) ) ;
return ;
}
const result = await getSlotDefinitions ( clubId ) ;
if ( result . success ) {
setDefinitions ( result . data ) ;
}
}
function handleCreate() {
setEditingDefinition ( undefined ) ;
setShowCreateModal ( true ) ;
@ -277,7 +295,7 @@ export default function SlotDefinitionsComponent({ clubId }: SlotDefinitionsComp
{ showCreateModal && (
< SlotDefinitionForm
clubId = { clubId }
courts = { MOCK_COURTS }
courts = { courts }
definition = { editingDefinition }
onClose = { handleFormClose }
onSuccess = { handleFormSuccess }