/** * 스케줄 생성 확인 다이얼로그 * * 스케줄 자동 생성 시 미리보기 결과를 표시하고 확인을 받는 다이얼로그입니다. */ "use client"; import React from "react"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "@/components/ui/alert-dialog"; import { Badge } from "@/components/ui/badge"; import { ScrollArea } from "@/components/ui/scroll-area"; import { Calendar, Plus, Trash2, RefreshCw } from "lucide-react"; import type { SchedulePreviewResult } from "./ScheduleGeneratorService"; interface ScheduleConfirmDialogProps { open: boolean; onOpenChange: (open: boolean) => void; preview: SchedulePreviewResult | null; onConfirm: () => void; onCancel: () => void; isLoading?: boolean; } export function ScheduleConfirmDialog({ open, onOpenChange, preview, onConfirm, onCancel, isLoading = false, }: ScheduleConfirmDialogProps) { if (!preview) return null; const { summary, toCreate, toDelete, toUpdate } = preview; return ( 스케줄 생성 확인 다음과 같이 스케줄이 변경됩니다. 계속하시겠습니까? {/* 요약 정보 */}
{summary.createCount} 생성
{summary.deleteCount} 삭제
{summary.updateCount} 수정
{/* 상세 정보 */}
{/* 생성될 스케줄 */} {toCreate.length > 0 && (

생성 {toCreate.length}건

{toCreate.slice(0, 5).map((item, index) => (
{item.resource_name || item.resource_id} {item.start_date} ~ {item.end_date} / {item.plan_qty}개
))} {toCreate.length > 5 && (
... 외 {toCreate.length - 5}건
)}
)} {/* 삭제될 스케줄 */} {toDelete.length > 0 && (

삭제 {toDelete.length}건

{toDelete.slice(0, 5).map((item, index) => (
{item.resource_name || item.resource_id} {item.start_date} ~ {item.end_date}
))} {toDelete.length > 5 && (
... 외 {toDelete.length - 5}건
)}
)} {/* 수정될 스케줄 */} {toUpdate.length > 0 && (

수정 {toUpdate.length}건

{toUpdate.slice(0, 5).map((item, index) => (
{item.resource_name || item.resource_id} {item.start_date} ~ {item.end_date}
))} {toUpdate.length > 5 && (
... 외 {toUpdate.length - 5}건
)}
)}
{/* 총 수량 */}
총 계획 수량 {summary.totalQty.toLocaleString()}개
취소 {isLoading ? "처리 중..." : "확인 및 적용"}
); }