'use client'; /* IMPORT */ import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { getRegEvalCriteriaWithDetails, removeRegEvalCriteria, } from '../service'; import { LoaderCircle } from 'lucide-react'; import { toast } from 'sonner'; import { REG_EVAL_CRITERIA_CATEGORY, REG_EVAL_CRITERIA_ITEM, REG_EVAL_CRITERIA_SCORE_CATEGORY, type RegEvalCriteriaView, type RegEvalCriteriaWithDetails, } from '@/db/schema'; import { useEffect, useState } from 'react'; // ---------------------------------------------------------------------------------------------------- /* TYPES */ interface RegEvalCriteriaDeleteDialogProps { open: boolean, onOpenChange: (open: boolean) => void, criteriaViewData: RegEvalCriteriaView, onSuccess: () => void, } // ---------------------------------------------------------------------------------------------------- /* REGULAR EVALUATION CRITERIA DELETE DIALOG COMPONENT */ function RegEvalCriteriaDeleteDialog(props: RegEvalCriteriaDeleteDialogProps) { const { open, onOpenChange, criteriaViewData, onSuccess } = props; const [isLoading, setIsLoading] = useState(false); const [isDeleting, setIsDeleting] = useState(false); const [targetData, setTargetData] = useState(); useEffect(() => { const fetchData = async () => { if (!criteriaViewData?.criteriaId) { return; } setIsLoading(true); try { const result = await getRegEvalCriteriaWithDetails(criteriaViewData.criteriaId); setTargetData(result); } catch (error) { console.error('Error in Loading Target Data for Deletion: ', error); } finally { setIsLoading(false); } } fetchData(); }, [criteriaViewData.criteriaId]); const handleDelete = async () => { if (!criteriaViewData || !criteriaViewData.criteriaId) { return; } try { setIsDeleting(true); await removeRegEvalCriteria(criteriaViewData.criteriaId); toast.success('평가 기준이 삭제되었습니다.'); onSuccess(); } catch (error) { console.error('Error in Deleting Regular Evaluation Criteria: ', error); toast.error( error instanceof Error ? error.message : '삭제 중 오류가 발생했습니다.' ); } finally { setIsDeleting(false); } } if (!criteriaViewData) { return null; } return ( {isLoading ? (

Loading...

) : ( <> 협력업체 평가 기준 삭제 정말로 이 협력업체 평가 기준을 삭제하시겠습니까?

삭제될 평가 기준:
• 평가부문: {REG_EVAL_CRITERIA_CATEGORY.find((c) => c.value === criteriaViewData.category)?.label ?? '-'}
• 점수구분: {REG_EVAL_CRITERIA_SCORE_CATEGORY.find((c) => c.value === criteriaViewData.scoreCategory)?.label ?? '-'}
• 항목: {REG_EVAL_CRITERIA_ITEM.find((c) => c.value === criteriaViewData.item)?.label ?? '-'}
• 구분: {criteriaViewData.classification || '-'}
• 범위: {criteriaViewData.range || '-'}

이 작업은 되돌릴 수 없으며, 평가기준과 그에 속한 {targetData?.criteriaDetails.length}개의 평가항목도 함께 삭제됩니다.
)}
) } // ---------------------------------------------------------------------------------------------------- /* EXPORT */ export default RegEvalCriteriaDeleteDialog;