import { canDo } from "@/lib/auth/permissions";
import { listMaster } from "@/lib/master/factory";
import { PageHeader } from "@/components/layout/page-header";
import { Card, CardContent } from "@/components/ui/card";
import { Badge } from "@/components/ui/badge";
import {
  Table,
  TableBody,
  TableCell,
  TableHead,
  TableHeader,
  TableRow,
} from "@/components/ui/table";
import { MasterRowActions, AddMasterForm } from "./master-client";

/**
 * Generic master CRUD page. Renders a name+status table with add/edit/toggle.
 * Use for any simple "name + active" master table.
 *
 *   <MasterPage table="inquiries" title="Inquiry" breadcrumb="Master / Inquiry"
 *               revalidate="/master/lead-management/inquiry" />
 */
export async function MasterPage({
  table,
  title,
  breadcrumb,
  revalidate,
}: {
  table: string;
  title: string;
  breadcrumb?: string;
  revalidate: string;
}) {
  const rows = await listMaster(table);
  const canManage = await canDo("master", "update");

  return (
    <div>
      <PageHeader title={title} breadcrumb={breadcrumb} />
      {canManage && (
        <Card className="mb-6">
          <CardContent className="pt-6">
            <AddMasterForm table={table} revalidate={revalidate} label={title} />
          </CardContent>
        </Card>
      )}
      <Card className="p-0">
        <Table>
          <TableHeader>
            <TableRow>
              <TableHead className="w-12">No</TableHead>
              <TableHead>{title}</TableHead>
              <TableHead>Status</TableHead>
              {canManage && <TableHead className="w-32 text-right">Actions</TableHead>}
            </TableRow>
          </TableHeader>
          <TableBody>
            {rows.length === 0 ? (
              <TableRow>
                <TableCell colSpan={canManage ? 4 : 3} className="py-10 text-center text-muted-foreground">
                  No records yet.
                </TableCell>
              </TableRow>
            ) : (
              rows.map((r, i) => (
                <TableRow key={r.id}>
                  <TableCell>{i + 1}</TableCell>
                  <TableCell className="font-medium">{r.name}</TableCell>
                  <TableCell>
                    <Badge variant={r.is_active ? "default" : "secondary"}>
                      {r.is_active ? "Active" : "Inactive"}
                    </Badge>
                  </TableCell>
                  {canManage && (
                    <TableCell className="text-right">
                      <MasterRowActions
                        table={table}
                        revalidate={revalidate}
                        id={r.id}
                        name={r.name}
                        isActive={r.is_active}
                      />
                    </TableCell>
                  )}
                </TableRow>
              ))
            )}
          </TableBody>
        </Table>
      </Card>
    </div>
  );
}
