diff --git a/src/app/admin/BusinessActionButtons.tsx b/src/app/admin/business/BusinessActionButtons.tsx similarity index 100% rename from src/app/admin/BusinessActionButtons.tsx rename to src/app/admin/business/BusinessActionButtons.tsx diff --git a/src/app/admin/project/[businessId]/ProjectAction.tsx b/src/app/admin/business/[businessId]/projects/ProjectAction.tsx similarity index 100% rename from src/app/admin/project/[businessId]/ProjectAction.tsx rename to src/app/admin/business/[businessId]/projects/ProjectAction.tsx diff --git a/src/app/admin/project/[businessId]/page.tsx b/src/app/admin/business/[businessId]/projects/page.tsx similarity index 100% rename from src/app/admin/project/[businessId]/page.tsx rename to src/app/admin/business/[businessId]/projects/page.tsx diff --git a/src/app/admin/business/page.tsx b/src/app/admin/business/page.tsx new file mode 100644 index 0000000..c1fe3b6 --- /dev/null +++ b/src/app/admin/business/page.tsx @@ -0,0 +1,156 @@ +import { getUserRole } from "@/lib/data/userQuery"; +import { createSupabaseClient } from "@/lib/supabase/serverComponentClient"; +import { redirect } from "next/navigation"; +import { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; +import { Checkbox } from "@/components/ui/checkbox"; +import Link from "next/link"; +import { FolderOpenDot } from "lucide-react"; +import { getAllBusinessApplicationQuery } from "@/lib/data/applicationQuery"; +import { BusinessActionButtons } from "./BusinessActionButtons"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { Separator } from "@/components/ui/separator"; + +interface ApplicationData { + id: any; + user_id: any; + username: any; + business_type_id: any; + business_type_value: any; + project_application_id: any; + business_name: any; + created_at: any; + is_in_us: any; + is_for_sale: any; + pitch_deck_url: any; + community_size: any; + is_generating_revenue: any; + money_raised_to_date: any; + location: any; + status: any; +} + +function ApplicationTable({ applications }: { applications: ApplicationData[] }) { + if (!applications || applications.length === 0) { + return ( + + + No business applications found + + + ); + } + + return applications.map((application: ApplicationData) => ( + + {application.business_name} + + + {application.username} + + + + {application.pitch_deck_url && ( + + {application.pitch_deck_url} + + )} + + + + + + + + + + + {application.community_size} + {application.money_raised_to_date} + {application.location} + + {application.project_application_id && ( + + + + )} + + + {application.status === "pending" && } + + + )); +} + +export default async function BusinesssApplicationAdminPage() { + const client = createSupabaseClient(); + const { data: userData, error: userDataError } = await client.auth.getUser(); + + if (userDataError) { + redirect("/"); + } + const uid = userData.user!.id; + const { data: roleData, error: roleDataError } = await getUserRole(client, uid); + + if (roleDataError || roleData!.role != "admin") { + redirect("/"); + } + + const { data: businessApplicationData, error: businessApplicationError } = + await getAllBusinessApplicationQuery(client); + + if (businessApplicationError) { + console.log(businessApplicationError); + } + + const pendingApplications = businessApplicationData?.filter((app) => app.status === "pending") || []; + const approvedApplications = businessApplicationData?.filter((app) => app.status === "approve") || []; + const rejectedApplications = businessApplicationData?.filter((app) => app.status === "rejecte") || []; + + return ( +
+
Admin Page
+ + + + Pending ({pendingApplications.length}) + Approved ({approvedApplications.length}) + Rejected ({rejectedApplications.length}) + + + {["pending", "approved", "rejected"].map((status) => ( + + + {status.charAt(0).toUpperCase() + status.slice(1)} business applications + + + Business Name + User Account + Pitch Deck URL + Is In US? + Is For Sale? + Generate Revenue + Community Size + Money raised to date + Location + Project + Actions + + + + + +
+
+ ))} +
+
+ ); +}