diff --git a/src/lib/companyHelpers.ts b/src/lib/companyHelpers.ts
index 960c1bad..1f3b5db5 100644
--- a/src/lib/companyHelpers.ts
+++ b/src/lib/companyHelpers.ts
@@ -15,14 +15,15 @@ export interface CompanyFormData {
export async function submitCompanyCreation(
data: CompanyFormData,
companyType: 'manufacturer' | 'designer' | 'operator' | 'property_owner',
- userId: string,
- isModerator: boolean
+ userId: string
) {
- if (isModerator) {
- // Moderators can create directly
- const { data: newCompany, error } = await supabase
- .from('companies')
- .insert({
+ // All users submit for moderation
+ const { error } = await supabase
+ .from('content_submissions')
+ .insert([{
+ user_id: userId,
+ submission_type: 'company_create',
+ content: {
name: data.name,
slug: data.slug,
description: data.description,
@@ -30,50 +31,29 @@ export async function submitCompanyCreation(
website_url: data.website_url,
founded_year: data.founded_year,
headquarters_location: data.headquarters_location,
- company_type: companyType
- })
- .select()
- .single();
+ company_type: companyType,
+ images: data.images as any // Include image assignments in submission
+ } as any,
+ status: 'pending'
+ }]);
- if (error) throw error;
- return { company: newCompany, submitted: false };
- } else {
- // Regular users submit for moderation
- const { error } = await supabase
- .from('content_submissions')
- .insert([{
- user_id: userId,
- submission_type: 'company_create',
- content: {
- name: data.name,
- slug: data.slug,
- description: data.description,
- person_type: data.person_type,
- website_url: data.website_url,
- founded_year: data.founded_year,
- headquarters_location: data.headquarters_location,
- company_type: companyType,
- images: data.images as any // Include image assignments in submission
- } as any,
- status: 'pending'
- }]);
-
- if (error) throw error;
- return { company: null, submitted: true };
- }
+ if (error) throw error;
+ return { submitted: true };
}
export async function submitCompanyUpdate(
companyId: string,
data: CompanyFormData,
- userId: string,
- isModerator: boolean
+ userId: string
) {
- if (isModerator) {
- // Moderators can update directly
- const { error } = await supabase
- .from('companies')
- .update({
+ // All users submit for moderation
+ const { error } = await supabase
+ .from('content_submissions')
+ .insert([{
+ user_id: userId,
+ submission_type: 'company_edit',
+ content: {
+ company_id: companyId,
name: data.name,
slug: data.slug,
description: data.description,
@@ -81,34 +61,11 @@ export async function submitCompanyUpdate(
website_url: data.website_url,
founded_year: data.founded_year,
headquarters_location: data.headquarters_location,
- updated_at: new Date().toISOString()
- })
- .eq('id', companyId);
+ images: data.images as any // Include image role assignments in submission
+ } as any,
+ status: 'pending'
+ }]);
- if (error) throw error;
- return { submitted: false };
- } else {
- // Regular users submit for moderation
- const { error } = await supabase
- .from('content_submissions')
- .insert([{
- user_id: userId,
- submission_type: 'company_edit',
- content: {
- company_id: companyId,
- name: data.name,
- slug: data.slug,
- description: data.description,
- person_type: data.person_type,
- website_url: data.website_url,
- founded_year: data.founded_year,
- headquarters_location: data.headquarters_location,
- images: data.images as any // Include image role assignments in submission
- } as any,
- status: 'pending'
- }]);
-
- if (error) throw error;
- return { submitted: true };
- }
+ if (error) throw error;
+ return { submitted: true };
}
diff --git a/src/pages/DesignerDetail.tsx b/src/pages/DesignerDetail.tsx
index ea14d1d1..192eb554 100644
--- a/src/pages/DesignerDetail.tsx
+++ b/src/pages/DesignerDetail.tsx
@@ -51,24 +51,18 @@ export default function DesignerDetail() {
const handleEditSubmit = async (data: any) => {
try {
- const result = await submitCompanyUpdate(
+ await submitCompanyUpdate(
designer!.id,
data,
- user!.id,
- isModerator()
+ user!.id
);
toast({
- title: result.submitted ? "Edit Submitted" : "Designer Updated",
- description: result.submitted
- ? "Your edit has been submitted for review."
- : "The designer has been updated successfully."
+ title: "Edit Submitted",
+ description: "Your edit has been submitted for review."
});
setIsEditModalOpen(false);
- if (!result.submitted) {
- fetchDesignerData();
- }
} catch (error: any) {
toast({
title: "Error",
diff --git a/src/pages/Designers.tsx b/src/pages/Designers.tsx
index 0837ac5c..450d4696 100644
--- a/src/pages/Designers.tsx
+++ b/src/pages/Designers.tsx
@@ -32,15 +32,14 @@ export default function Designers() {
navigate('/auth');
return;
}
- const result = await submitCompanyCreation(data, 'designer', user.id, isModerator());
+ await submitCompanyCreation(data, 'designer', user.id);
toast({
- title: result.submitted ? "Designer Submitted" : "Designer Created",
- description: result.submitted ? "Your submission has been sent for review." : "The designer has been created successfully."
+ title: "Designer Submitted",
+ description: "Your submission has been sent for review."
});
setIsCreateModalOpen(false);
- if (!result.submitted) fetchCompanies();
} catch (error: any) {
- toast({ title: "Error", description: error.message || "Failed to create designer.", variant: "destructive" });
+ toast({ title: "Error", description: error.message || "Failed to submit designer.", variant: "destructive" });
}
};
diff --git a/src/pages/ManufacturerDetail.tsx b/src/pages/ManufacturerDetail.tsx
index fd71aedd..b66bf926 100644
--- a/src/pages/ManufacturerDetail.tsx
+++ b/src/pages/ManufacturerDetail.tsx
@@ -51,24 +51,18 @@ export default function ManufacturerDetail() {
const handleEditSubmit = async (data: any) => {
try {
- const result = await submitCompanyUpdate(
+ await submitCompanyUpdate(
manufacturer!.id,
data,
- user!.id,
- isModerator()
+ user!.id
);
toast({
- title: result.submitted ? "Edit Submitted" : "Manufacturer Updated",
- description: result.submitted
- ? "Your edit has been submitted for review."
- : "The manufacturer has been updated successfully."
+ title: "Edit Submitted",
+ description: "Your edit has been submitted for review."
});
setIsEditModalOpen(false);
- if (!result.submitted) {
- fetchManufacturerData();
- }
} catch (error: any) {
toast({
title: "Error",
diff --git a/src/pages/Manufacturers.tsx b/src/pages/Manufacturers.tsx
index a23a8e23..1a15a5e6 100644
--- a/src/pages/Manufacturers.tsx
+++ b/src/pages/Manufacturers.tsx
@@ -71,28 +71,22 @@ export default function Manufacturers() {
return;
}
- const result = await submitCompanyCreation(
+ await submitCompanyCreation(
data,
'manufacturer',
- user.id,
- isModerator()
+ user.id
);
toast({
- title: result.submitted ? "Manufacturer Submitted" : "Manufacturer Created",
- description: result.submitted
- ? "Your submission has been sent for review."
- : "The manufacturer has been created successfully."
+ title: "Manufacturer Submitted",
+ description: "Your submission has been sent for review."
});
setIsCreateModalOpen(false);
- if (!result.submitted) {
- fetchCompanies();
- }
} catch (error: any) {
toast({
title: "Error",
- description: error.message || "Failed to create manufacturer.",
+ description: error.message || "Failed to submit manufacturer.",
variant: "destructive"
});
}
diff --git a/src/pages/OperatorDetail.tsx b/src/pages/OperatorDetail.tsx
index bc6f2b0a..e7fc77b3 100644
--- a/src/pages/OperatorDetail.tsx
+++ b/src/pages/OperatorDetail.tsx
@@ -51,24 +51,18 @@ export default function OperatorDetail() {
const handleEditSubmit = async (data: any) => {
try {
- const result = await submitCompanyUpdate(
+ await submitCompanyUpdate(
operator!.id,
data,
- user!.id,
- isModerator()
+ user!.id
);
toast({
- title: result.submitted ? "Edit Submitted" : "Operator Updated",
- description: result.submitted
- ? "Your edit has been submitted for review."
- : "The operator has been updated successfully."
+ title: "Edit Submitted",
+ description: "Your edit has been submitted for review."
});
setIsEditModalOpen(false);
- if (!result.submitted) {
- fetchOperatorData();
- }
} catch (error: any) {
toast({
title: "Error",
diff --git a/src/pages/Operators.tsx b/src/pages/Operators.tsx
index c164ad15..fa92ba7e 100644
--- a/src/pages/Operators.tsx
+++ b/src/pages/Operators.tsx
@@ -64,25 +64,22 @@ const Operators = () => {
return;
}
- const result = await submitCompanyCreation(
+ await submitCompanyCreation(
data,
'operator',
- user.id,
- isModerator()
+ user.id
);
toast({
- title: result.submitted ? "Operator Submitted" : "Operator Created",
- description: result.submitted
- ? "Your submission has been sent for review."
- : "The operator has been created successfully."
+ title: "Operator Submitted",
+ description: "Your submission has been sent for review."
});
setIsCreateModalOpen(false);
} catch (error: any) {
toast({
title: "Error",
- description: error.message || "Failed to create operator.",
+ description: error.message || "Failed to submit operator.",
variant: "destructive"
});
}
diff --git a/src/pages/ParkOwners.tsx b/src/pages/ParkOwners.tsx
index 360da44b..5676e2ec 100644
--- a/src/pages/ParkOwners.tsx
+++ b/src/pages/ParkOwners.tsx
@@ -64,25 +64,22 @@ const ParkOwners = () => {
return;
}
- const result = await submitCompanyCreation(
+ await submitCompanyCreation(
data,
'property_owner',
- user.id,
- isModerator()
+ user.id
);
toast({
- title: result.submitted ? "Property Owner Submitted" : "Property Owner Created",
- description: result.submitted
- ? "Your submission has been sent for review."
- : "The property owner has been created successfully."
+ title: "Property Owner Submitted",
+ description: "Your submission has been sent for review."
});
setIsCreateModalOpen(false);
} catch (error: any) {
toast({
title: "Error",
- description: error.message || "Failed to create property owner.",
+ description: error.message || "Failed to submit property owner.",
variant: "destructive"
});
}
diff --git a/src/pages/Parks.tsx b/src/pages/Parks.tsx
index aa28d5bb..c2dfc454 100644
--- a/src/pages/Parks.tsx
+++ b/src/pages/Parks.tsx
@@ -250,58 +250,24 @@ export default function Parks() {
}
try {
- if (isModerator()) {
- // Moderators can create parks directly
- const { error } = await supabase
- .from('parks')
- .insert({
- name: parkData.name,
- slug: parkData.slug,
- description: parkData.description || null,
- park_type: parkData.park_type,
- status: parkData.status,
- opening_date: parkData.opening_date || null,
- closing_date: parkData.closing_date || null,
- website_url: parkData.website_url || null,
- phone: parkData.phone || null,
- email: parkData.email || null,
- banner_image_url: parkData.banner_image_url || null,
- banner_image_id: parkData.banner_image_id || null,
- card_image_url: parkData.card_image_url || null,
- card_image_id: parkData.card_image_id || null,
- operator_id: parkData.operator_id || null,
- property_owner_id: parkData.property_owner_id || null
- });
-
- if (error) throw error;
-
- toast({
- title: "Park Created",
- description: "The park has been created successfully.",
+ // All users submit for moderation
+ const { error } = await supabase
+ .from('content_submissions')
+ .insert({
+ user_id: user.id,
+ submission_type: 'park',
+ status: 'pending',
+ content: parkData
});
- setIsAddParkModalOpen(false);
- fetchParks();
- } else {
- // Regular users submit for moderation
- const { error } = await supabase
- .from('content_submissions')
- .insert({
- user_id: user.id,
- submission_type: 'park',
- status: 'pending',
- content: parkData
- });
+ if (error) throw error;
- if (error) throw error;
+ toast({
+ title: "Park Submitted",
+ description: "Your park submission has been sent for moderation review.",
+ });
- toast({
- title: "Submission Sent",
- description: "Your park submission has been sent for moderation review.",
- });
-
- setIsAddParkModalOpen(false);
- }
+ setIsAddParkModalOpen(false);
} catch (error: any) {
toast({
title: "Submission Failed",
@@ -477,7 +443,7 @@ export default function Parks() {
Add New Park
- Add a new park to the database. {isModerator() ? 'The park will be added immediately.' : 'Your submission will be reviewed before being published.'}
+ Add a new park to the database. Your submission will be reviewed before being published.
{
try {
- const result = await submitCompanyUpdate(
+ await submitCompanyUpdate(
owner!.id,
data,
- user!.id,
- isModerator()
+ user!.id
);
toast({
- title: result.submitted ? "Edit Submitted" : "Property Owner Updated",
- description: result.submitted
- ? "Your edit has been submitted for review."
- : "The property owner has been updated successfully."
+ title: "Edit Submitted",
+ description: "Your edit has been submitted for review."
});
setIsEditModalOpen(false);
- if (!result.submitted) {
- fetchOwnerData();
- }
} catch (error: any) {
toast({
title: "Error",
diff --git a/src/pages/Rides.tsx b/src/pages/Rides.tsx
index 2bd2740f..784bc343 100644
--- a/src/pages/Rides.tsx
+++ b/src/pages/Rides.tsx
@@ -83,39 +83,24 @@ export default function Rides() {
return;
}
- if (isModerator()) {
- const { error } = await supabase
- .from('rides')
- .insert(data);
-
- if (error) throw error;
-
- toast({
- title: "Ride Created",
- description: "The ride has been created successfully.",
+ // All users submit for moderation
+ const { error } = await supabase
+ .from('content_submissions')
+ .insert({
+ user_id: user.id,
+ submission_type: 'ride',
+ status: 'pending',
+ content: data
});
- setIsCreateModalOpen(false);
- fetchRides();
- } else {
- const { error } = await supabase
- .from('content_submissions')
- .insert({
- user_id: user.id,
- submission_type: 'ride',
- status: 'pending',
- content: data
- });
+ if (error) throw error;
- if (error) throw error;
+ toast({
+ title: "Ride Submitted",
+ description: "Your ride submission has been sent for moderation review.",
+ });
- toast({
- title: "Submission Sent",
- description: "Your ride submission has been sent for moderation review.",
- });
-
- setIsCreateModalOpen(false);
- }
+ setIsCreateModalOpen(false);
} catch (error: any) {
toast({
title: "Submission Failed",