summaryrefslogtreecommitdiff
path: root/lib/compliance/compliance-template-detail.tsx
blob: f4531697a0b1cb620d47f4254dc41d7663bd1cab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
"use client"

import * as React from "react"
import { useRouter } from "next/navigation"

import { Button } from "@/components/ui/button"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
import { FileText, Users } from "lucide-react"

import { ComplianceResponseStats } from "@/lib/compliance/responses/compliance-response-stats"
import { ComplianceQuestionCreateDialog } from "@/lib/compliance/questions/compliance-question-create-dialog"
import { ComplianceQuestionsDraggableList } from "@/lib/compliance/questions/compliance-questions-draggable-list"

interface ComplianceTemplateDetailProps {
  templateId: number
  template: Awaited<ReturnType<typeof import("./services").getComplianceSurveyTemplate>>
  questions: Awaited<ReturnType<typeof import("./services").getComplianceQuestions>>
  responses: Awaited<ReturnType<typeof import("./services").getComplianceResponses>>
  stats: Awaited<ReturnType<typeof import("./services").getComplianceResponseStats>>
}

export function ComplianceTemplateDetail({ templateId, template, questions, responses, stats }: ComplianceTemplateDetailProps) {
  const router = useRouter()



  if (!template) {
    return (
      <div className="text-center py-8 text-muted-foreground">
        템플릿을 찾을 수 없습니다.
      </div>
    )
  }

  return (
    <div className="space-y-6">
      {/* 응답 현황 링크 */}
      <Card>
        <CardHeader>
          <CardTitle className="flex items-center gap-2">
            <Users className="h-5 w-5" />
            응답 현황 ({responses.length}개)
          </CardTitle>
        </CardHeader>
        <CardContent>
          <div className="space-y-4">
            {/* 통계 카드들 */}
            <ComplianceResponseStats stats={stats} />
            
            <div className="flex items-center justify-between pt-4 border-t">
              <p className="text-muted-foreground">
                이 템플릿에 대한 응답들을 확인하려면 응답 현황 페이지로 이동하세요.
              </p>
              <Button
                variant="outline"
                onClick={() => router.push(`/evcp/compliance/${templateId}/responses`)}
              >
                <Users className="mr-2 h-4 w-4" />
                응답 현황 보기
              </Button>
            </div>
          </div>
        </CardContent>
      </Card>

      {/* 질문 목록 */}
      <Card>
        <CardHeader>
          <div className="flex items-center justify-between">
            <CardTitle className="flex items-center gap-2">
              <FileText className="h-5 w-5" />
              설문 질문 목록 ({questions.length}개)
            </CardTitle>
            <ComplianceQuestionCreateDialog templateId={templateId} />
          </div>
        </CardHeader>
        <CardContent>
          <ComplianceQuestionsDraggableList questions={questions} />
        </CardContent>
      </Card>
    </div>
  )
}