'use client'; // File: components/response-code/ProjectOverrideManager.tsx // จัดการ project-specific overrides ของ Master Approval Matrix (T065) import React, { useState } from 'react'; import { Plus, Trash2, ArrowDownToLine } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Separator } from '@/components/ui/separator'; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from '@/components/ui/alert-dialog'; interface OverrideRule { publicId: string; responseCode: { code: string; descriptionEn: string; category: string; }; documentTypeCode: string; isEnabled: boolean; requiresComments: boolean; triggersNotification: boolean; } interface ProjectOverrideManagerProps { projectPublicId: string; projectName: string; overrides: OverrideRule[]; onDeleteOverride: (rulePublicId: string) => void; onAddOverride: () => void; isLoading?: boolean; } export function ProjectOverrideManager({ projectPublicId: _projectPublicId, projectName, overrides, onDeleteOverride, onAddOverride, isLoading, }: ProjectOverrideManagerProps) { const [confirmDelete, setConfirmDelete] = useState(null); const grouped = overrides.reduce>((acc, rule) => { const key = rule.documentTypeCode; if (!acc[key]) acc[key] = []; acc[key].push(rule); return acc; }, {}); return (
{projectName}

{overrides.length} project-specific override(s)

{overrides.length === 0 ? (
Inheriting all rules from global defaults
) : (
{Object.entries(grouped).map(([docType, rules]) => (

{docType}

{rules.map((rule) => (
{rule.responseCode.code} {rule.responseCode.descriptionEn} {rule.isEnabled ? 'Enabled' : 'Disabled'} {rule.requiresComments && ( Req. Comments )}
!open && setConfirmDelete(null)} > Remove Override? This will revert code {rule.responseCode.code} to the global default settings for this project. Cancel { onDeleteOverride(rule.publicId); setConfirmDelete(null); }} > Remove Override
))}
))}
)}
); }