diff --git a/src/components/admin/ParkForm.tsx b/src/components/admin/ParkForm.tsx index 5f500105..1825521b 100644 --- a/src/components/admin/ParkForm.tsx +++ b/src/components/admin/ParkForm.tsx @@ -262,7 +262,7 @@ export function ParkForm({ onSubmit, onCancel, initialData, isEditing = false }: setValue('opening_date', date ? date.toISOString().split('T')[0] : '')} + onSelect={(date) => setValue('opening_date', date ? date.toISOString().split('T')[0] : undefined)} placeholder="Select opening date" disableFuture={true} fromYear={1800} @@ -273,7 +273,7 @@ export function ParkForm({ onSubmit, onCancel, initialData, isEditing = false }: setValue('closing_date', date ? date.toISOString().split('T')[0] : '')} + onSelect={(date) => setValue('closing_date', date ? date.toISOString().split('T')[0] : undefined)} placeholder="Select closing date" disablePast={false} fromYear={1800} diff --git a/src/components/admin/RideForm.tsx b/src/components/admin/RideForm.tsx index eb41139c..bfbcdf35 100644 --- a/src/components/admin/RideForm.tsx +++ b/src/components/admin/RideForm.tsx @@ -523,7 +523,7 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }: setValue('opening_date', date ? date.toISOString().split('T')[0] : '')} + onSelect={(date) => setValue('opening_date', date ? date.toISOString().split('T')[0] : undefined)} placeholder="Select opening date" disableFuture={true} fromYear={1800} @@ -534,7 +534,7 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }: setValue('closing_date', date ? date.toISOString().split('T')[0] : '')} + onSelect={(date) => setValue('closing_date', date ? date.toISOString().split('T')[0] : undefined)} placeholder="Select closing date" disablePast={false} fromYear={1800} diff --git a/supabase/functions/process-selective-approval/index.ts b/supabase/functions/process-selective-approval/index.ts index c08d59c0..1e0d7a0f 100644 --- a/supabase/functions/process-selective-approval/index.ts +++ b/supabase/functions/process-selective-approval/index.ts @@ -196,6 +196,19 @@ function resolveDependencies(data: any, dependencyMap: Map): any return resolved; } +function sanitizeDateFields(data: any): any { + const dateFields = ['opening_date', 'closing_date', 'date_changed', 'date_taken', 'visit_date']; + const sanitized = { ...data }; + + for (const field of dateFields) { + if (field in sanitized && sanitized[field] === '') { + sanitized[field] = null; + } + } + + return sanitized; +} + async function createPark(supabase: any, data: any): Promise { // Transform images object if present if (data.images) { @@ -225,18 +238,20 @@ async function createPark(supabase: any, data: any): Promise { const parkId = data.park_id; delete data.park_id; // Remove ID from update data + const sanitizedData = sanitizeDateFields(data); const { error } = await supabase .from('parks') - .update(data) + .update(sanitizedData) .eq('id', parkId); if (error) throw new Error(`Failed to update park: ${error.message}`); return parkId; } else { console.log('Creating new park'); + const sanitizedData = sanitizeDateFields(data); const { data: park, error } = await supabase .from('parks') - .insert(data) + .insert(sanitizedData) .select('id') .single(); @@ -274,18 +289,20 @@ async function createRide(supabase: any, data: any): Promise { const rideId = data.ride_id; delete data.ride_id; // Remove ID from update data + const sanitizedData = sanitizeDateFields(data); const { error } = await supabase .from('rides') - .update(data) + .update(sanitizedData) .eq('id', rideId); if (error) throw new Error(`Failed to update ride: ${error.message}`); return rideId; } else { console.log('Creating new ride'); + const sanitizedData = sanitizeDateFields(data); const { data: ride, error } = await supabase .from('rides') - .insert(data) + .insert(sanitizedData) .select('id') .single(); @@ -322,7 +339,7 @@ async function createCompany(supabase: any, data: any, companyType: string): Pro if (companyId) { console.log(`Updating existing company ${companyId}`); - const updateData = { ...data, company_type: companyType }; + const updateData = sanitizeDateFields({ ...data, company_type: companyType }); delete updateData.company_id; delete updateData.id; // Remove ID from update data @@ -335,7 +352,7 @@ async function createCompany(supabase: any, data: any, companyType: string): Pro return companyId; } else { console.log('Creating new company'); - const companyData = { ...data, company_type: companyType }; + const companyData = sanitizeDateFields({ ...data, company_type: companyType }); const { data: company, error } = await supabase .from('companies') .insert(companyData)