Fix ride status constraint violation

This commit is contained in:
gpt-engineer-app[bot]
2025-10-02 17:21:39 +00:00
parent d4d7da977a
commit 68ca57e712

View File

@@ -135,6 +135,25 @@ const intensityLevels = [
'extreme' 'extreme'
]; ];
// Status value mappings between display (form) and database values
const STATUS_DISPLAY_TO_DB: Record<string, string> = {
'Operating': 'operating',
'Seasonal': 'operating',
'Closed Temporarily': 'maintenance',
'Closed Permanently': 'closed',
'Under Construction': 'under_construction',
'Planned': 'under_construction',
'SBNO': 'sbno'
};
const STATUS_DB_TO_DISPLAY: Record<string, string> = {
'operating': 'Operating',
'closed': 'Closed Permanently',
'under_construction': 'Under Construction',
'maintenance': 'Closed Temporarily',
'sbno': 'SBNO'
};
export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }: RideFormProps) { export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }: RideFormProps) {
const { isModerator } = useUserRole(); const { isModerator } = useUserRole();
const [submitting, setSubmitting] = useState(false); const [submitting, setSubmitting] = useState(false);
@@ -174,7 +193,9 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }:
description: initialData?.description || '', description: initialData?.description || '',
category: initialData?.category || '', category: initialData?.category || '',
ride_sub_type: initialData?.ride_sub_type || '', ride_sub_type: initialData?.ride_sub_type || '',
status: initialData?.status || 'Operating', status: initialData?.status
? STATUS_DB_TO_DISPLAY[initialData.status] || 'Operating'
: 'Operating',
opening_date: initialData?.opening_date || '', opening_date: initialData?.opening_date || '',
closing_date: initialData?.closing_date || '', closing_date: initialData?.closing_date || '',
// Convert metric values to user's preferred unit for display // Convert metric values to user's preferred unit for display
@@ -216,9 +237,13 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }:
const handleFormSubmit = async (data: RideFormData) => { const handleFormSubmit = async (data: RideFormData) => {
setSubmitting(true); setSubmitting(true);
try { try {
// Transform status from display value to DB value
const dbStatus = STATUS_DISPLAY_TO_DB[data.status] || 'operating';
// Convert form values back to metric for storage // Convert form values back to metric for storage
const metricData = { const metricData = {
...data, ...data,
status: dbStatus,
height_requirement: data.height_requirement height_requirement: data.height_requirement
? convertHeightToMetric(data.height_requirement, measurementSystem) ? convertHeightToMetric(data.height_requirement, measurementSystem)
: undefined, : undefined,
@@ -361,7 +386,13 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }:
<div className="space-y-2"> <div className="space-y-2">
<Label>Status *</Label> <Label>Status *</Label>
<Select onValueChange={(value) => setValue('status', value)} defaultValue={initialData?.status || 'Operating'}> <Select
onValueChange={(value) => setValue('status', value)}
defaultValue={initialData?.status
? STATUS_DB_TO_DISPLAY[initialData.status] || 'Operating'
: 'Operating'
}
>
<SelectTrigger> <SelectTrigger>
<SelectValue placeholder="Select status" /> <SelectValue placeholder="Select status" />
</SelectTrigger> </SelectTrigger>