summaryrefslogtreecommitdiff
path: root/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx
diff options
context:
space:
mode:
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.tsx43
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>
)