mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-22 07:31:12 -05:00
Fix ride status constraint violation
This commit is contained in:
@@ -135,6 +135,25 @@ const intensityLevels = [
|
||||
'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) {
|
||||
const { isModerator } = useUserRole();
|
||||
const [submitting, setSubmitting] = useState(false);
|
||||
@@ -174,7 +193,9 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }:
|
||||
description: initialData?.description || '',
|
||||
category: initialData?.category || '',
|
||||
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 || '',
|
||||
closing_date: initialData?.closing_date || '',
|
||||
// Convert metric values to user's preferred unit for display
|
||||
@@ -216,10 +237,14 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }:
|
||||
const handleFormSubmit = async (data: RideFormData) => {
|
||||
setSubmitting(true);
|
||||
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
|
||||
const metricData = {
|
||||
...data,
|
||||
height_requirement: data.height_requirement
|
||||
status: dbStatus,
|
||||
height_requirement: data.height_requirement
|
||||
? convertHeightToMetric(data.height_requirement, measurementSystem)
|
||||
: undefined,
|
||||
max_speed_kmh: data.max_speed_kmh
|
||||
@@ -361,7 +386,13 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }:
|
||||
|
||||
<div className="space-y-2">
|
||||
<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>
|
||||
<SelectValue placeholder="Select status" />
|
||||
</SelectTrigger>
|
||||
|
||||
Reference in New Issue
Block a user