mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 17:51: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,
|
...data,
|
||||||
company_type: 'designer' as const,
|
company_type: 'designer' as const,
|
||||||
founded_year: data.founded_year ? parseInt(String(data.founded_year)) : undefined,
|
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);
|
await onSubmit(formData);
|
||||||
|
|||||||
@@ -87,6 +87,10 @@ export function ManufacturerForm({ onSubmit, onCancel, initialData }: Manufactur
|
|||||||
...data,
|
...data,
|
||||||
company_type: 'manufacturer' as const,
|
company_type: 'manufacturer' as const,
|
||||||
founded_year: data.founded_year ? parseInt(String(data.founded_year)) : undefined,
|
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);
|
await onSubmit(formData);
|
||||||
|
|||||||
@@ -83,6 +83,10 @@ export function OperatorForm({ onSubmit, onCancel, initialData }: OperatorFormPr
|
|||||||
...data,
|
...data,
|
||||||
company_type: 'operator' as const,
|
company_type: 'operator' as const,
|
||||||
founded_year: data.founded_year ? parseInt(String(data.founded_year)) : undefined,
|
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);
|
await onSubmit(formData);
|
||||||
|
|||||||
@@ -83,6 +83,10 @@ export function PropertyOwnerForm({ onSubmit, onCancel, initialData }: PropertyO
|
|||||||
...data,
|
...data,
|
||||||
company_type: 'property_owner' as const,
|
company_type: 'property_owner' as const,
|
||||||
founded_year: data.founded_year ? parseInt(String(data.founded_year)) : undefined,
|
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);
|
await onSubmit(formData);
|
||||||
|
|||||||
@@ -64,10 +64,10 @@ export const parkValidationSchema = z.object({
|
|||||||
.nullable()
|
.nullable()
|
||||||
.or(z.literal(''))
|
.or(z.literal(''))
|
||||||
.transform(val => val || undefined),
|
.transform(val => val || undefined),
|
||||||
banner_image_id: z.string().optional(),
|
banner_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||||
banner_image_url: z.string().optional(),
|
banner_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||||
card_image_id: z.string().optional(),
|
card_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||||
card_image_url: z.string().optional(),
|
card_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||||
images: imageAssignmentSchema,
|
images: imageAssignmentSchema,
|
||||||
source_url: z.string().trim().optional().or(z.literal('')).refine((val) => {
|
source_url: z.string().trim().optional().or(z.literal('')).refine((val) => {
|
||||||
if (!val || val === '') return true;
|
if (!val || val === '') return true;
|
||||||
@@ -258,10 +258,10 @@ export const rideValidationSchema = z.object({
|
|||||||
(val) => val === '' || val === null || val === undefined ? undefined : Number(val),
|
(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()
|
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_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||||
banner_image_url: z.string().optional(),
|
banner_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||||
card_image_id: z.string().optional(),
|
card_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||||
card_image_url: z.string().optional(),
|
card_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||||
images: imageAssignmentSchema,
|
images: imageAssignmentSchema,
|
||||||
source_url: z.string().trim().optional().or(z.literal('')).refine((val) => {
|
source_url: z.string().trim().optional().or(z.literal('')).refine((val) => {
|
||||||
if (!val || val === '') return true;
|
if (!val || val === '') return true;
|
||||||
@@ -294,10 +294,10 @@ export const companyValidationSchema = z.object({
|
|||||||
if (!val || val === '') return true;
|
if (!val || val === '') return true;
|
||||||
return z.string().url().safeParse(val).success;
|
return z.string().url().safeParse(val).success;
|
||||||
}, 'Invalid URL format'),
|
}, 'Invalid URL format'),
|
||||||
banner_image_id: z.string().optional(),
|
banner_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||||
banner_image_url: z.string().optional(),
|
banner_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||||
card_image_id: z.string().optional(),
|
card_image_id: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||||
card_image_url: z.string().optional(),
|
card_image_url: z.string().optional().or(z.literal('')).transform(val => val || undefined),
|
||||||
images: imageAssignmentSchema,
|
images: imageAssignmentSchema,
|
||||||
source_url: z.string().trim().optional().or(z.literal('')).refine((val) => {
|
source_url: z.string().trim().optional().or(z.literal('')).refine((val) => {
|
||||||
if (!val || val === '') return true;
|
if (!val || val === '') return true;
|
||||||
|
|||||||
@@ -61,6 +61,9 @@ export async function fetchSubmissionItems(submissionId: string): Promise<Submis
|
|||||||
*,
|
*,
|
||||||
park_submission:park_submissions!park_submission_id(*),
|
park_submission:park_submissions!park_submission_id(*),
|
||||||
ride_submission:ride_submissions!ride_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_submission:photo_submissions!photo_submission_id(
|
||||||
*,
|
*,
|
||||||
photo_items:photo_submission_items(*)
|
photo_items:photo_submission_items(*)
|
||||||
@@ -82,13 +85,30 @@ export async function fetchSubmissionItems(submissionId: string): Promise<Submis
|
|||||||
case 'ride':
|
case 'ride':
|
||||||
item_data = (item as any).ride_submission;
|
item_data = (item as any).ride_submission;
|
||||||
break;
|
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':
|
||||||
|
case 'photo_edit':
|
||||||
|
case 'photo_delete':
|
||||||
item_data = {
|
item_data = {
|
||||||
...(item as any).photo_submission,
|
...(item as any).photo_submission,
|
||||||
photos: (item as any).photo_submission?.photo_items || []
|
photos: (item as any).photo_submission?.photo_items || []
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
// Log warning for unknown types but don't crash
|
||||||
|
console.warn(`Unknown item_type: ${item.item_type}`);
|
||||||
item_data = null;
|
item_data = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user