diff options
Diffstat (limited to 'lib/gtc-contract/status')
6 files changed, 35 insertions, 11 deletions
diff --git a/lib/gtc-contract/status/create-gtc-document-dialog.tsx b/lib/gtc-contract/status/create-gtc-document-dialog.tsx index 6791adfa..98cd249f 100644 --- a/lib/gtc-contract/status/create-gtc-document-dialog.tsx +++ b/lib/gtc-contract/status/create-gtc-document-dialog.tsx @@ -42,11 +42,18 @@ import { toast } from "sonner" import { createGtcDocumentSchema, type CreateGtcDocumentSchema } from "@/lib/gtc-contract/validations" import { createGtcDocument, getProjectsForSelect } from "@/lib/gtc-contract/service" import { type Project } from "@/db/schema/projects" +import { useSession } from "next-auth/react" export function CreateGtcDocumentDialog() { const [open, setOpen] = React.useState(false) const [projects, setProjects] = React.useState<Project[]>([]) const [isCreatePending, startCreateTransition] = React.useTransition() + const { data: session } = useSession() + + const currentUserId =React.useMemo(() => { + return session?.user?.id ? Number(session.user.id) : null; + }, [session]); + React.useEffect(() => { if (open) { @@ -70,8 +77,17 @@ export function CreateGtcDocumentDialog() { async function onSubmit(data: CreateGtcDocumentSchema) { startCreateTransition(async () => { + + if (!currentUserId) { + toast.error("로그인이 필요합니다") + return + } + try { - const result = await createGtcDocument(data) + const result = await createGtcDocument({ + ...data, + createdById: currentUserId + }) if (result.error) { toast.error(`에러: ${result.error}`) diff --git a/lib/gtc-contract/status/delete-gtc-documents-dialog.tsx b/lib/gtc-contract/status/delete-gtc-documents-dialog.tsx index 5779a2b6..50c8d3f4 100644 --- a/lib/gtc-contract/status/delete-gtc-documents-dialog.tsx +++ b/lib/gtc-contract/status/delete-gtc-documents-dialog.tsx @@ -29,6 +29,7 @@ import { } from "@/components/ui/drawer" import { deleteGtcDocuments } from "@/lib/gtc-contract/service" +import { useSession } from "next-auth/react" import { type GtcDocumentWithRelations } from "@/db/schema/gtc" interface DeleteGtcDocumentsDialogProps @@ -46,11 +47,18 @@ export function DeleteGtcDocumentsDialog({ }: DeleteGtcDocumentsDialogProps) { const [isDeletePending, startDeleteTransition] = React.useTransition() const isDesktop = useMediaQuery("(min-width: 640px)") + const { data: session } = useSession() function onDelete() { + if (!session?.user?.id) { + toast.error("로그인이 필요합니다.") + return + } + startDeleteTransition(async () => { const { error } = await deleteGtcDocuments({ ids: gtcDocuments.map((doc) => doc.id), + updatedById: Number(session.user.id) }) if (error) { diff --git a/lib/gtc-contract/status/gtc-contract-table.tsx b/lib/gtc-contract/status/gtc-contract-table.tsx index dd04fbc9..0fb637b6 100644 --- a/lib/gtc-contract/status/gtc-contract-table.tsx +++ b/lib/gtc-contract/status/gtc-contract-table.tsx @@ -26,6 +26,7 @@ import { GtcDocumentsTableFloatingBar } from "./gtc-documents-table-floating-bar import { UpdateGtcDocumentSheet } from "./update-gtc-document-sheet" import { CreateGtcDocumentDialog } from "./create-gtc-document-dialog" import { CreateNewRevisionDialog } from "./create-new-revision-dialog" +import { useRouter } from "next/navigation" interface GtcDocumentsTableProps { promises: Promise< @@ -39,13 +40,14 @@ interface GtcDocumentsTableProps { export function GtcDocumentsTable({ promises }: GtcDocumentsTableProps) { const [{ data, pageCount }, projects, users] = React.use(promises) + const router = useRouter() const [rowAction, setRowAction] = React.useState<DataTableRowAction<GtcDocumentWithRelations> | null>(null) const columns = React.useMemo( - () => getColumns({ setRowAction }), - [setRowAction] + () => getColumns({ setRowAction , router}), + [setRowAction, router] ) /** @@ -167,7 +169,7 @@ export function GtcDocumentsTable({ promises }: GtcDocumentsTableProps) { originalDocument={rowAction?.row.original ?? null} /> - <CreateGtcDocumentDialog /> + {/* <CreateGtcDocumentDialog /> */} </> ) }
\ No newline at end of file diff --git a/lib/gtc-contract/status/gtc-documents-table-columns.tsx b/lib/gtc-contract/status/gtc-documents-table-columns.tsx index 2d5f08b9..f6eb81d0 100644 --- a/lib/gtc-contract/status/gtc-documents-table-columns.tsx +++ b/lib/gtc-contract/status/gtc-documents-table-columns.tsx @@ -20,7 +20,6 @@ import { import { DataTableColumnHeaderSimple } from "@/components/data-table/data-table-column-simple-header" import { type GtcDocumentWithRelations } from "@/db/schema/gtc" -import { useRouter } from "next/navigation" interface GetColumnsProps { setRowAction: React.Dispatch<React.SetStateAction<DataTableRowAction<GtcDocumentWithRelations> | null>> @@ -29,8 +28,7 @@ interface GetColumnsProps { /** * GTC Documents 테이블 컬럼 정의 */ -export function getColumns({ setRowAction }: GetColumnsProps): ColumnDef<GtcDocumentWithRelations>[] { - const router = useRouter() +export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef<GtcDocumentWithRelations>[] { // ---------------------------------------------------------------- // 1) select 컬럼 (체크박스) diff --git a/lib/gtc-contract/status/gtc-documents-table-floating-bar.tsx b/lib/gtc-contract/status/gtc-documents-table-floating-bar.tsx index a9139ed2..8fac597e 100644 --- a/lib/gtc-contract/status/gtc-documents-table-floating-bar.tsx +++ b/lib/gtc-contract/status/gtc-documents-table-floating-bar.tsx @@ -8,9 +8,9 @@ import { Button } from "@/components/ui/button" import { Separator } from "@/components/ui/separator" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip" -import { exportTableToCSV } from "@/lib/export" import { type GtcDocumentWithRelations } from "@/db/schema/gtc" import { DeleteGtcDocumentsDialog } from "./delete-gtc-documents-dialog" +import { exportTableToExcel } from "@/lib/export" interface GtcDocumentsTableFloatingBarProps { table: Table<GtcDocumentWithRelations> @@ -68,7 +68,7 @@ export function GtcDocumentsTableFloatingBar({ variant="secondary" size="sm" onClick={() => - exportTableToCSV(table, { + exportTableToExcel(table, { filename: "gtc-documents", excludeColumns: ["select", "actions"], }) diff --git a/lib/gtc-contract/status/gtc-documents-table-toolbar-actions.tsx b/lib/gtc-contract/status/gtc-documents-table-toolbar-actions.tsx index cb52b2ed..90f2f8a8 100644 --- a/lib/gtc-contract/status/gtc-documents-table-toolbar-actions.tsx +++ b/lib/gtc-contract/status/gtc-documents-table-toolbar-actions.tsx @@ -3,11 +3,11 @@ import { type Table } from "@tanstack/react-table" import { Download } from "lucide-react" -import { exportTableToCSV } from "@/lib/export" import { Button } from "@/components/ui/button" import { type GtcDocumentWithRelations } from "@/db/schema/gtc" import { CreateGtcDocumentDialog } from "./create-gtc-document-dialog" +import { exportTableToExcel } from "@/lib/export" interface GtcDocumentsTableToolbarActionsProps { table: Table<GtcDocumentWithRelations> @@ -23,7 +23,7 @@ export function GtcDocumentsTableToolbarActions({ variant="outline" size="sm" onClick={() => - exportTableToCSV(table, { + exportTableToExcel(table, { filename: "gtc-documents", excludeColumns: ["select", "actions"], }) |
