"use client";

import type { ColumnDef } from "@tanstack/react-table";
import Link from "next/link";

import { DashboardMasterRowActions } from "@/app/dashboard/_components/dashboard-master-row-actions";

import type { BusinessTypeRow } from "./schema";

const DELETE_HREF = "/dashboard/master/business-types/delete";

function BusinessTypeActions({ row }: { row: BusinessTypeRow }) {
  const base = `/dashboard/master/business-types/${row.id}`;

  return (
    <DashboardMasterRowActions
      editHref={base}
      editAriaLabel="Update business type"
      deleteUrl={DELETE_HREF}
      entityId={row.id}
      entityName={row.name}
      entityLabel="business type"
      fallbackError="Business type could not be deleted."
      defaultSuccessMessage="Business type deleted."
    />
  );
}

export const businessTypeColumns: ColumnDef<BusinessTypeRow>[] = [
  {
    accessorKey: "name",
    header: "Name",
    cell: ({ row }) => (
      <Link
        href={`/dashboard/master/business-types/${row.original.id}`}
        className="font-medium text-primary hover:underline"
      >
        {row.original.name}
      </Link>
    ),
  },
  {
    accessorKey: "dateAdded",
    header: "Date added",
    enableColumnFilter: false,
    cell: ({ row }) => (
      <span className="text-muted-foreground text-sm whitespace-nowrap">
        {row.original.dateAdded}
      </span>
    ),
  },
  {
    accessorKey: "lastUpdated",
    header: "Last updated",
    enableColumnFilter: false,
    cell: ({ row }) => (
      <span className="text-muted-foreground text-sm whitespace-nowrap">
        {row.original.lastUpdated}
      </span>
    ),
  },
  {
    id: "options",
    header: () => <span className="block w-full text-right">Options</span>,
    cell: ({ row }) => <BusinessTypeActions row={row.original} />,
    enableSorting: false,
  },
];
