@@ -184,6 +184,12 @@ const initialFormState = {
184184 } ,
185185} ;
186186
187+ const getDateFromISO = ( iso ) =>
188+ iso ? new Date ( iso ) . toISOString ( ) . slice ( 0 , 10 ) : "" ;
189+
190+ const getTimeFromISO = ( iso ) =>
191+ iso ? new Date ( iso ) . toISOString ( ) . slice ( 11 , 16 ) : "" ;
192+
187193const EventForm = ( { addEvent, setAddEvent, event = null , onClose } ) => {
188194 const [ units , setUnits ] = useState ( [ ] ) ;
189195 const [ users , setUsers ] = useState ( [ ] ) ;
@@ -197,20 +203,12 @@ const EventForm = ({ addEvent, setAddEvent, event = null, onClose }) => {
197203 organizers : event ?. organizers ?. map ( ( o ) => o . _id ) || [ ] ,
198204 schedule : {
199205 date : {
200- start : event
201- ? new Date ( event . schedule . start ) . toISOString ( ) . slice ( 0 , 10 )
202- : "" ,
203- end : event
204- ? new Date ( event . schedule . end ) . toISOString ( ) . slice ( 0 , 10 )
205- : "" ,
206+ start : event ? getDateFromISO ( event . schedule . start ) : "" ,
207+ end : event ? getDateFromISO ( event . schedule . end ) : "" ,
206208 } ,
207209 time : {
208- start : event
209- ? new Date ( event . schedule . start ) . toTimeString ( ) . slice ( 0 , 5 )
210- : "" ,
211- end : event
212- ? new Date ( event . schedule . end ) . toTimeString ( ) . slice ( 0 , 5 )
213- : "" ,
210+ start : event ? getTimeFromISO ( event . schedule . start ) : "" ,
211+ end : event ? getTimeFromISO ( event . schedule . end ) : "" ,
214212 } ,
215213 venue : event ?. schedule ?. venue || "" ,
216214 mode : event ?. schedule ?. mode || "" ,
@@ -219,18 +217,18 @@ const EventForm = ({ addEvent, setAddEvent, event = null, onClose }) => {
219217 required : event ?. registration ?. required || false ,
220218 date : {
221219 start : event ?. registration ?. start
222- ? new Date ( event . registration . start ) . toISOString ( ) . slice ( 0 , 10 )
220+ ? getDateFromISO ( event . registration . start )
223221 : "" ,
224222 end : event ?. registration ?. end
225- ? new Date ( event . registration . end ) . toISOString ( ) . slice ( 0 , 10 )
223+ ? getDateFromISO ( event . registration . end )
226224 : "" ,
227225 } ,
228226 time : {
229227 start : event ?. registration ?. start
230- ? new Date ( event . registration . start ) . toTimeString ( ) . slice ( 0 , 5 )
228+ ? getTimeFromISO ( event . registration . start )
231229 : "" ,
232230 end : event ?. registration ?. end
233- ? new Date ( event . registration . end ) . toTimeString ( ) . slice ( 0 , 5 )
231+ ? getTimeFromISO ( event . registration . end )
234232 : "" ,
235233 } ,
236234 fees : event ?. registration ?. fees || "" ,
@@ -322,10 +320,15 @@ const EventForm = ({ addEvent, setAddEvent, event = null, onClose }) => {
322320 } ) ) ;
323321 } ;
324322
323+ const combineDateTime = ( dateStr , timeStr , isEnd = false ) => {
324+ if ( ! dateStr ) return null ;
325+ const defaultTime = isEnd ? "23:59" : "00:00" ;
326+ const time = timeStr && timeStr !== "" ? timeStr : defaultTime ;
327+ return new Date ( `${ dateStr } T${ time } :00` ) . toISOString ( ) ;
328+ } ;
329+
325330 const handleSubmit = async ( e ) => {
326331 e . preventDefault ( ) ;
327- const combineDateTime = ( dateStr , timeStr ) =>
328- new Date ( `${ dateStr } T${ timeStr } ` ) ;
329332 const finalPayload = {
330333 ...formData ,
331334 schedule : {
@@ -337,6 +340,7 @@ const EventForm = ({ addEvent, setAddEvent, event = null, onClose }) => {
337340 end : combineDateTime (
338341 formData . schedule . date . end ,
339342 formData . schedule . time . end ,
343+ true ,
340344 ) ,
341345 } ,
342346 registration : formData . registration . required
@@ -349,6 +353,7 @@ const EventForm = ({ addEvent, setAddEvent, event = null, onClose }) => {
349353 end : combineDateTime (
350354 formData . registration . date . end ,
351355 formData . registration . time . end ,
356+ true ,
352357 ) ,
353358 }
354359 : { required : false } ,
@@ -438,6 +443,7 @@ const EventForm = ({ addEvent, setAddEvent, event = null, onClose }) => {
438443 />
439444 </ div >
440445
446+
441447 < div className = "grid grid-cols-2 gap-4" >
442448 < div >
443449 < label className = { labelStyles } > Category</ label >
@@ -460,6 +466,7 @@ const EventForm = ({ addEvent, setAddEvent, event = null, onClose }) => {
460466 </ div >
461467 < div >
462468 < label className = { labelStyles } > Type</ label >
469+
463470 < input
464471 name = "type"
465472 value = { formData . type }
0 commit comments