@ -33,7 +33,11 @@ export default function GenerateSlotDefinitionsModal({
// Form state
// Form state
const [ preset , setPreset ] = useState < SlotDefinitionPreset > ( 'workday_standard' ) ;
const [ preset , setPreset ] = useState < SlotDefinitionPreset > ( 'workday_standard' ) ;
const [ selectedCourtIds , setSelectedCourtIds ] = useState < number [ ] > ( [ ] ) ;
const [ selectedCourtIds , setSelectedCourtIds ] = useState < number [ ] > ( [ ] ) ;
const [ validFrom , setValidFrom ] = useState ( '' ) ;
const [ validFrom , setValidFrom ] = useState ( ( ) = > {
// Default to today's date in YYYY-MM-DD format
const today = new Date ( ) ;
return today . toISOString ( ) . split ( 'T' ) [ 0 ] ;
} ) ;
const [ validTo , setValidTo ] = useState ( '' ) ;
const [ validTo , setValidTo ] = useState ( '' ) ;
const [ showAdvanced , setShowAdvanced ] = useState ( false ) ;
const [ showAdvanced , setShowAdvanced ] = useState ( false ) ;
@ -109,6 +113,11 @@ export default function GenerateSlotDefinitionsModal({
return ;
return ;
}
}
if ( ! validFrom ) {
setError ( 'Please select a valid from date' ) ;
return ;
}
setLoading ( true ) ;
setLoading ( true ) ;
setError ( null ) ;
setError ( null ) ;
@ -116,9 +125,9 @@ export default function GenerateSlotDefinitionsModal({
preset ,
preset ,
court_ids : selectedCourtIds ,
court_ids : selectedCourtIds ,
pattern_overrides : buildPatternOverrides ( ) ,
pattern_overrides : buildPatternOverrides ( ) ,
valid_from : validFrom ,
} ;
} ;
if ( validFrom ) request . valid_from = validFrom ;
if ( validTo ) request . valid_to = validTo ;
if ( validTo ) request . valid_to = validTo ;
const result = await generateSlotDefinitions ( clubId , request ) ;
const result = await generateSlotDefinitions ( clubId , request ) ;
@ -223,7 +232,7 @@ export default function GenerateSlotDefinitionsModal({
< div className = "grid grid-cols-2 gap-4" >
< div className = "grid grid-cols-2 gap-4" >
< div >
< div >
< label className = "block text-sm font-semibold text-slate-700 mb-2" >
< label className = "block text-sm font-semibold text-slate-700 mb-2" >
Valid From (Optional )
Valid From <span className = "text-red-600" > * < / span >
< / label >
< / label >
< input
< input
type = "date"
type = "date"