diff --git a/src/lib/companyHelpers.ts b/src/lib/companyHelpers.ts index e6b9bb7e..3db2df9d 100644 --- a/src/lib/companyHelpers.ts +++ b/src/lib/companyHelpers.ts @@ -7,6 +7,7 @@ export interface CompanyFormData { name: string; slug: string; description?: string; + company_type: 'manufacturer' | 'designer' | 'operator' | 'property_owner'; person_type: 'company' | 'individual' | 'firm' | 'organization'; website_url?: string; founded_year?: number; diff --git a/src/pages/DesignerDetail.tsx b/src/pages/DesignerDetail.tsx index ce746b29..85a6dc9b 100644 --- a/src/pages/DesignerDetail.tsx +++ b/src/pages/DesignerDetail.tsx @@ -341,7 +341,8 @@ export default function DesignerDetail() { name: designer.name, slug: designer.slug, description: designer.description, - person_type: designer.person_type as any, + company_type: 'designer', + person_type: designer.person_type, website_url: designer.website_url, founded_year: designer.founded_year, headquarters_location: designer.headquarters_location, diff --git a/src/pages/DesignerRides.tsx b/src/pages/DesignerRides.tsx index dddecfbe..4c4ec019 100644 --- a/src/pages/DesignerRides.tsx +++ b/src/pages/DesignerRides.tsx @@ -68,9 +68,9 @@ export default function DesignerRides() { case 'speed': query = query.order('max_speed_kmh', { ascending: false, nullsFirst: false }); break; - case 'height': - query = query.order('max_height_meters', { ascending: false, nullsFirst: false }); - break; + case 'height': + query = query.order('height_meters', { ascending: false, nullsFirst: false }); + break; case 'reviews': query = query.order('review_count', { ascending: false }); break; @@ -102,10 +102,6 @@ export default function DesignerRides() { const handleCreateSubmit = async (data: any) => { try { - if (!user || !designer) { - return; - } - if (!designer) { toast({ title: "Error", @@ -130,10 +126,11 @@ export default function DesignerRides() { setIsCreateModalOpen(false); fetchData(); - } catch (error: any) { + } catch (error) { + const message = error instanceof Error ? error.message : "Failed to submit ride."; toast({ title: "Error", - description: error.message || "Failed to submit ride.", + description: message, variant: "destructive" }); } diff --git a/src/pages/ManufacturerDetail.tsx b/src/pages/ManufacturerDetail.tsx index bf7cdded..2aa92c21 100644 --- a/src/pages/ManufacturerDetail.tsx +++ b/src/pages/ManufacturerDetail.tsx @@ -375,7 +375,8 @@ export default function ManufacturerDetail() { name: manufacturer.name, slug: manufacturer.slug, description: manufacturer.description, - person_type: manufacturer.person_type as any, + company_type: 'manufacturer', + person_type: manufacturer.person_type, website_url: manufacturer.website_url, founded_year: manufacturer.founded_year, headquarters_location: manufacturer.headquarters_location, diff --git a/src/pages/ManufacturerModels.tsx b/src/pages/ManufacturerModels.tsx index 713fc1f8..ed8a7169 100644 --- a/src/pages/ManufacturerModels.tsx +++ b/src/pages/ManufacturerModels.tsx @@ -22,7 +22,7 @@ export default function ManufacturerModels() { const { user } = useAuth(); const { requireAuth } = useAuthModal(); const [manufacturer, setManufacturer] = useState(null); - const [models, setModels] = useState([]); + const [models, setModels] = useState([]); const [loading, setLoading] = useState(true); const [searchQuery, setSearchQuery] = useState(''); const [sortBy, setSortBy] = useState('name'); @@ -68,12 +68,12 @@ export default function ManufacturerModels() { if (modelsError) throw modelsError; // Transform data to include ride count - const modelsWithCounts = (modelsData || []).map(model => ({ - ...model, - ride_count: Array.isArray(model.rides) ? model.rides[0]?.count || 0 : 0 - })); - - setModels(modelsWithCounts as RideModel[]); + const modelsWithCounts: RideModelWithCount[] = (modelsData || []).map(model => ({ + ...model, + ride_count: Array.isArray(model.rides) ? model.rides[0]?.count || 0 : 0 + })); + + setModels(modelsWithCounts); } } catch (error) { console.error('Error fetching data:', error); @@ -95,10 +95,6 @@ export default function ManufacturerModels() { const handleCreateSubmit = async (data: any) => { try { - if (!user || !manufacturer) { - return; - } - if (!manufacturer) { toast({ title: "Error", @@ -123,10 +119,11 @@ export default function ManufacturerModels() { setIsCreateModalOpen(false); fetchData(); - } catch (error: any) { + } catch (error) { + const message = error instanceof Error ? error.message : "Failed to submit ride model."; toast({ title: "Error", - description: error.message || "Failed to submit ride model.", + description: message, variant: "destructive" }); } diff --git a/src/pages/ManufacturerRides.tsx b/src/pages/ManufacturerRides.tsx index 96608f31..7282862e 100644 --- a/src/pages/ManufacturerRides.tsx +++ b/src/pages/ManufacturerRides.tsx @@ -68,9 +68,9 @@ export default function ManufacturerRides() { case 'speed': query = query.order('max_speed_kmh', { ascending: false, nullsFirst: false }); break; - case 'height': - query = query.order('max_height_meters', { ascending: false, nullsFirst: false }); - break; + case 'height': + query = query.order('height_meters', { ascending: false, nullsFirst: false }); + break; case 'reviews': query = query.order('review_count', { ascending: false }); break; @@ -102,10 +102,6 @@ export default function ManufacturerRides() { const handleCreateSubmit = async (data: any) => { try { - if (!user || !manufacturer) { - return; - } - if (!manufacturer) { toast({ title: "Error", @@ -130,10 +126,11 @@ export default function ManufacturerRides() { setIsCreateModalOpen(false); fetchData(); - } catch (error: any) { + } catch (error) { + const message = error instanceof Error ? error.message : "Failed to submit ride."; toast({ title: "Error", - description: error.message || "Failed to submit ride.", + description: message, variant: "destructive" }); } diff --git a/src/pages/OperatorDetail.tsx b/src/pages/OperatorDetail.tsx index 20f320dc..543650d2 100644 --- a/src/pages/OperatorDetail.tsx +++ b/src/pages/OperatorDetail.tsx @@ -26,7 +26,7 @@ export default function OperatorDetail() { const { slug } = useParams<{ slug: string }>(); const navigate = useNavigate(); const [operator, setOperator] = useState(null); - const [parks, setParks] = useState([]); + const [parks, setParks] = useState([]); const [loading, setLoading] = useState(true); const [parksLoading, setParksLoading] = useState(true); const [isEditModalOpen, setIsEditModalOpen] = useState(false); @@ -427,7 +427,8 @@ export default function OperatorDetail() { name: operator.name, slug: operator.slug, description: operator.description, - person_type: operator.person_type as any, + company_type: 'operator', + person_type: operator.person_type, website_url: operator.website_url, founded_year: operator.founded_year, headquarters_location: operator.headquarters_location, diff --git a/src/pages/PropertyOwnerDetail.tsx b/src/pages/PropertyOwnerDetail.tsx index c4c9a8bb..c32eda9e 100644 --- a/src/pages/PropertyOwnerDetail.tsx +++ b/src/pages/PropertyOwnerDetail.tsx @@ -26,7 +26,7 @@ export default function PropertyOwnerDetail() { const { slug } = useParams<{ slug: string }>(); const navigate = useNavigate(); const [owner, setOwner] = useState(null); - const [parks, setParks] = useState([]); + const [parks, setParks] = useState([]); const [loading, setLoading] = useState(true); const [parksLoading, setParksLoading] = useState(true); const [isEditModalOpen, setIsEditModalOpen] = useState(false); @@ -427,7 +427,8 @@ export default function PropertyOwnerDetail() { name: owner.name, slug: owner.slug, description: owner.description, - person_type: owner.person_type as any, + company_type: 'property_owner', + person_type: owner.person_type, website_url: owner.website_url, founded_year: owner.founded_year, headquarters_location: owner.headquarters_location, diff --git a/src/types/database.ts b/src/types/database.ts index e2a795f7..e105cb2d 100644 --- a/src/types/database.ts +++ b/src/types/database.ts @@ -16,7 +16,7 @@ export interface Company { slug: string; description?: string; company_type: string; // Allow any string from database - person_type: string; // 'company', 'individual', 'firm', 'organization' + person_type: 'company' | 'individual' | 'firm' | 'organization'; website_url?: string; founded_year?: number; // Legacy field founded_date?: string;