diff options
Diffstat (limited to 'lib/basic-contract/status-detail/basic-contracts-detail-table.tsx')
| -rw-r--r-- | lib/basic-contract/status-detail/basic-contracts-detail-table.tsx | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx b/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx index 93853560..2d747c85 100644 --- a/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx +++ b/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx @@ -12,6 +12,7 @@ import { getDetailColumns } from "./basic-contracts-detail-columns" import { getBasicContractsByTemplateId } from "@/lib/basic-contract/service" import { checkGTCCommentsForContracts } from "@/lib/basic-contract/actions/check-gtc-comments" import { checkRedFlagsForContracts } from "@/lib/basic-contract/actions/check-red-flags" +import { checkRedFlagResolutionForContracts } from "@/lib/basic-contract/actions/check-red-flag-resolution" import { BasicContractView } from "@/db/schema" import { BasicContractDetailTableToolbarActions } from "./basic-contract-detail-table-toolbar-actions" import { toast } from "sonner" @@ -37,6 +38,10 @@ export function BasicContractsDetailTable({ templateId, promises }: BasicContrac // Red Flag data 상태 관리 const [redFlagData, setRedFlagData] = React.useState<Record<number, boolean>>({}) const [isLoadingRedFlagData, setIsLoadingRedFlagData] = React.useState(false) + + // Red Flag 해제 data 상태 관리 + const [redFlagResolutionData, setRedFlagResolutionData] = React.useState<Record<number, { resolved: boolean; resolvedAt: Date | null }>>({}) + const [isLoadingRedFlagResolutionData, setIsLoadingRedFlagResolutionData] = React.useState(false) const [{ data, pageCount }] = React.use(promises) const router = useRouter() @@ -98,6 +103,33 @@ export function BasicContractsDetailTable({ templateId, promises }: BasicContrac loadRedFlagData(); }, [data]); + // Red Flag 해제 data 로딩 + React.useEffect(() => { + const loadRedFlagResolutionData = async () => { + if (!data || data.length === 0) return; + + // 준법서약 템플릿이 있는지 확인 + const hasComplianceTemplates = data.some(contract => + contract.templateName?.includes('준법') + ); + + if (!hasComplianceTemplates) return; + + setIsLoadingRedFlagResolutionData(true); + try { + const resolutionResults = await checkRedFlagResolutionForContracts(data); + setRedFlagResolutionData(resolutionResults); + } catch (error) { + console.error('Error checking Red Flag Resolution data:', error); + toast.error("Red Flag 해제 데이터를 불러오는데 실패했습니다."); + } finally { + setIsLoadingRedFlagResolutionData(false); + } + }; + + loadRedFlagResolutionData(); + }, [data]); + // 준법서약 템플릿인지 확인 const isComplianceTemplate = React.useMemo(() => { if (!data || data.length === 0) return false; @@ -111,10 +143,12 @@ export function BasicContractsDetailTable({ templateId, promises }: BasicContrac isLoadingGtcData, redFlagData, isLoadingRedFlagData, + redFlagResolutionData, + isLoadingRedFlagResolutionData, isComplianceTemplate, router }), - [setRowAction, gtcData, isLoadingGtcData, redFlagData, isLoadingRedFlagData, isComplianceTemplate, router] + [setRowAction, gtcData, isLoadingGtcData, redFlagData, isLoadingRedFlagData, redFlagResolutionData, isLoadingRedFlagResolutionData, isComplianceTemplate, router] ) const advancedFilterFields: DataTableAdvancedFilterField<BasicContractView>[] = [ @@ -192,7 +226,12 @@ export function BasicContractsDetailTable({ templateId, promises }: BasicContrac table={table} filterFields={advancedFilterFields} > - <BasicContractDetailTableToolbarActions table={table} gtcData={gtcData} /> + <BasicContractDetailTableToolbarActions + table={table} + gtcData={gtcData} + redFlagData={redFlagData} + isComplianceTemplate={isComplianceTemplate} + /> </DataTableAdvancedToolbar> </DataTable> ) |
