diff --git a/app/admin/actions.ts b/app/admin/actions.ts index 0391e83..53c842d 100644 --- a/app/admin/actions.ts +++ b/app/admin/actions.ts @@ -2247,7 +2247,13 @@ export async function deleteTestBusinessAction(formData: FormData) { }); revalidatePath('/admin'); - redirect(clearBusinessSelectionFromReturnPath(parsed.data.returnTo, { deleted: 1 }, '/admin?deleted=1')); + redirect( + clearBusinessSelectionFromReturnPath( + parsed.data.returnTo, + { deleted: 1, deletedBusinessName: business.name }, + `/admin?deleted=1&deletedBusinessName=${encodeURIComponent(business.name)}` + ) + ); } export async function founderDeleteAllBusinessesAction(formData: FormData) { diff --git a/app/admin/page.tsx b/app/admin/page.tsx index f7137da..1fbc7a2 100644 --- a/app/admin/page.tsx +++ b/app/admin/page.tsx @@ -11,6 +11,7 @@ import { restoreBusinessAction, sendBusinessTestSmsAction, } from '@/app/admin/actions'; +import { FounderDeleteBusinessCard } from '@/components/founder-delete-business-card'; import { buildAdminCustomerOpenHref } from '@/lib/admin-customer-paths'; import { FOUNDER_DELETE_ALL_BUSINESSES_CONFIRMATION } from '@/lib/admin-business-lifecycle'; import { @@ -32,6 +33,7 @@ import { } from '@/lib/admin-operator-visibility'; import { AdminBusinessPicker } from '@/components/admin-business-picker'; import { requireAdmin } from '@/lib/admin'; +import { isTestDemoBusiness } from '@/lib/admin-test-data-reset'; import { Badge } from '@/components/ui/badge'; import { Button, buttonVariants } from '@/components/ui/button'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; @@ -163,6 +165,7 @@ export default async function AdminPage({ searchParams }: { searchParams?: Recor ownerEmail: true, }, }, + ownerClerkId: true, }, }), db.lead.groupBy({ @@ -483,6 +486,16 @@ export default async function AdminPage({ searchParams }: { searchParams?: Recor ]; const founderResetBusinessCount = businessPickerOptions.length; const founderResetBusinessPreview = businessPickerOptions.slice(0, 4).map((business) => business.name); + const founderDeleteCandidates = businessPickerOptions.map((business) => ({ + id: business.id, + name: business.name, + ownerEmail: business.notificationSettings?.ownerEmail || null, + isTestDemo: isTestDemoBusiness(business), + isArchived: isBusinessArchived(business), + deleteEligible: canDeleteTestBusiness(business), + deleteBlockedReason: getDeleteTestBusinessBlockedReason(business), + })); + const deletedBusinessName = getQueryValue(searchParams, 'deletedBusinessName'); return (
- {founderResetBusinessCount} current {founderResetBusinessCount === 1 ? 'business' : 'businesses'} will be deleted -
-- This permanently deletes every current business record, including archived ones, so you can restart from one clean workspace. -
- {founderResetBusinessPreview.length > 0 ? ( -
- Preview: {founderResetBusinessPreview.join(', ')}
- {founderResetBusinessCount > founderResetBusinessPreview.length
- ? ` and ${founderResetBusinessCount - founderResetBusinessPreview.length} more.`
- : '.'}
+ Delete one test/demo business
+ Select a workspace, review whether it is test/demo or real, then type the exact business name before permanent deletion is allowed.
No businesses are currently present.