import { For, Show, createMemo, createSignal, onMount } from 'solid-js'; import AdminShell from '~/components/AdminShell'; type AdminContact = { name: string; email: string; phone: string; }; type CompanyRecord = { id: string; companyCode: string; name: string; registrationNumber: string; industry: string; location: string; joinedOn: string; adminContact: AdminContact; accountStatus: string; verificationStatus: string; subscriptionType: string; jobPostingsCount: number; totalHires: number; updatedAt: string; }; export default function CompanyManagementPage() { const [rows, setRows] = createSignal([]); const [search, setSearch] = createSignal(''); const [statusFilter, setStatusFilter] = createSignal('all'); const [sortBy, setSortBy] = createSignal('name_asc'); const load = async () => { try { const r = await fetch('/api/admin/companies'); if (!r.ok) throw new Error('Failed to fetch companies'); const data = await r.json(); const mapped: CompanyRecord[] = data.map((c: any) => ({ id: c.id, companyCode: c.id.slice(0, 8).toUpperCase(), name: c.company_name, registrationNumber: c.registration_number || 'Pending Registration', industry: c.industry || 'Not Specified', location: 'Not Specified', joinedOn: new Date(c.created_at).toLocaleDateString(), adminContact: { name: 'Company Admin', email: '...', phone: '...' }, accountStatus: c.status.toUpperCase(), verificationStatus: c.status === 'APPROVED' ? 'VERIFIED' : 'PENDING', subscriptionType: 'STANDARD', jobPostingsCount: 0, totalHires: 0, updatedAt: c.updated_at, })); setRows(mapped); } catch (e) { console.error(e); setRows([]); } }; onMount(() => void load()); const filteredRows = createMemo(() => { let r = rows(); if (statusFilter() !== 'all') r = r.filter((d) => d.accountStatus === statusFilter().toUpperCase()); const q = search().toLowerCase(); if (q) { r = r.filter(it => it.name.toLowerCase().includes(q) || it.companyCode.toLowerCase().includes(q)); } const sorted = [...r]; sorted.sort((a, b) => { if (sortBy() === 'name_desc') return b.name.localeCompare(a.name); return a.name.localeCompare(b.name); }); return sorted; }); return (

Companies Management

Manage all registered companies and their verification status.

setSearch(e.currentTarget.value)} />
{(c) => ( )}
Company Industry Status Joined
{c.name}
{c.companyCode}
{c.industry} {c.accountStatus} {c.joinedOn}
); }