mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 16:11:12 -05:00
Fix entity validation and data loading
This commit is contained in:
@@ -83,6 +83,10 @@ export function DesignerForm({ onSubmit, onCancel, initialData }: DesignerFormPr
|
||||
...data,
|
||||
company_type: 'designer' as const,
|
||||
founded_year: data.founded_year ? parseInt(String(data.founded_year)) : undefined,
|
||||
banner_image_id: undefined,
|
||||
banner_image_url: undefined,
|
||||
card_image_id: undefined,
|
||||
card_image_url: undefined,
|
||||
};
|
||||
|
||||
await onSubmit(formData);
|
||||
|
||||
@@ -87,6 +87,10 @@ export function ManufacturerForm({ onSubmit, onCancel, initialData }: Manufactur
|
||||
...data,
|
||||
company_type: 'manufacturer' as const,
|
||||
founded_year: data.founded_year ? parseInt(String(data.founded_year)) : undefined,
|
||||
banner_image_id: undefined,
|
||||
banner_image_url: undefined,
|
||||
card_image_id: undefined,
|
||||
card_image_url: undefined,
|
||||
};
|
||||
|
||||
await onSubmit(formData);
|
||||
|
||||
@@ -83,6 +83,10 @@ export function OperatorForm({ onSubmit, onCancel, initialData }: OperatorFormPr
|
||||
...data,
|
||||
company_type: 'operator' as const,
|
||||
founded_year: data.founded_year ? parseInt(String(data.founded_year)) : undefined,
|
||||
banner_image_id: undefined,
|
||||
banner_image_url: undefined,
|
||||
card_image_id: undefined,
|
||||
card_image_url: undefined,
|
||||
};
|
||||
|
||||
await onSubmit(formData);
|
||||
|
||||
@@ -83,6 +83,10 @@ export function PropertyOwnerForm({ onSubmit, onCancel, initialData }: PropertyO
|
||||
...data,
|
||||
company_type: 'property_owner' as const,
|
||||
founded_year: data.founded_year ? parseInt(String(data.founded_year)) : undefined,
|
||||
banner_image_id: undefined,
|
||||
banner_image_url: undefined,
|
||||
card_image_id: undefined,
|
||||
card_image_url: undefined,
|
||||
};
|
||||
|
||||
await onSubmit(formData);
|
||||
|
||||
@@ -64,10 +64,10 @@ export const parkValidationSchema = z.object({
|
||||
.nullable()
|
||||
.or(z.literal(''))
|
||||
.transform(val => val || undefined),
|
||||
banner_image_id: z.string().optional(),
|
||||
banner_image_url: z.string().optional(),
|
||||
card_image_id: z.string().optional(),
|
||||
card_image_url: z.string().optional(),
|
||||
banner_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||
banner_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||
card_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||
card_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||
images: imageAssignmentSchema,
|
||||
source_url: z.string().trim().optional().or(z.literal('')).refine((val) => {
|
||||
if (!val || val === '') return true;
|
||||
@@ -258,10 +258,10 @@ export const rideValidationSchema = z.object({
|
||||
(val) => val === '' || val === null || val === undefined ? undefined : Number(val),
|
||||
z.number().int().min(0, 'Round trip duration must be positive').max(7200, 'Round trip duration must be less than 2 hours').optional()
|
||||
),
|
||||
banner_image_id: z.string().optional(),
|
||||
banner_image_url: z.string().optional(),
|
||||
card_image_id: z.string().optional(),
|
||||
card_image_url: z.string().optional(),
|
||||
banner_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||
banner_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||
card_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||
card_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||
images: imageAssignmentSchema,
|
||||
source_url: z.string().trim().optional().or(z.literal('')).refine((val) => {
|
||||
if (!val || val === '') return true;
|
||||
@@ -294,10 +294,10 @@ export const companyValidationSchema = z.object({
|
||||
if (!val || val === '') return true;
|
||||
return z.string().url().safeParse(val).success;
|
||||
}, 'Invalid URL format'),
|
||||
banner_image_id: z.string().optional(),
|
||||
banner_image_url: z.string().optional(),
|
||||
card_image_id: z.string().optional(),
|
||||
card_image_url: z.string().optional(),
|
||||
banner_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||
banner_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||
card_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||
card_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||
images: imageAssignmentSchema,
|
||||
source_url: z.string().trim().optional().or(z.literal('')).refine((val) => {
|
||||
if (!val || val === '') return true;
|
||||
|
||||
@@ -61,6 +61,9 @@ export async function fetchSubmissionItems(submissionId: string): Promise<Submis
|
||||
*,
|
||||
park_submission:park_submissions!park_submission_id(*),
|
||||
ride_submission:ride_submissions!ride_submission_id(*),
|
||||
company_submission:company_submissions!company_submission_id(*),
|
||||
ride_model_submission:ride_model_submissions!ride_model_submission_id(*),
|
||||
timeline_event_submission:timeline_event_submissions!timeline_event_submission_id(*),
|
||||
photo_submission:photo_submissions!photo_submission_id(
|
||||
*,
|
||||
photo_items:photo_submission_items(*)
|
||||
@@ -82,13 +85,30 @@ export async function fetchSubmissionItems(submissionId: string): Promise<Submis
|
||||
case 'ride':
|
||||
item_data = (item as any).ride_submission;
|
||||
break;
|
||||
case 'operator':
|
||||
case 'manufacturer':
|
||||
case 'designer':
|
||||
case 'property_owner':
|
||||
item_data = (item as any).company_submission;
|
||||
break;
|
||||
case 'ride_model':
|
||||
item_data = (item as any).ride_model_submission;
|
||||
break;
|
||||
case 'milestone':
|
||||
case 'timeline_event':
|
||||
item_data = (item as any).timeline_event_submission;
|
||||
break;
|
||||
case 'photo':
|
||||
case 'photo_edit':
|
||||
case 'photo_delete':
|
||||
item_data = {
|
||||
...(item as any).photo_submission,
|
||||
photos: (item as any).photo_submission?.photo_items || []
|
||||
};
|
||||
break;
|
||||
default:
|
||||
// Log warning for unknown types but don't crash
|
||||
console.warn(`Unknown item_type: ${item.item_type}`);
|
||||
item_data = null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user