import React, { useState } from "react"; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from "../ui/dialog"; import FormSurvey from "./survey"; import { Controller, useForm } from "react-hook-form"; import { Textarea } from "../ui/textarea"; import { Button } from "../ui/button"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { Checkbox } from "../ui/checkbox"; import { createSurveyData } from "@/service/survey/survey"; const surveySchema = z.object({ accessFrequency: z.string(), uiExperienceDesign: z.string(), uiExperienceNavigation: z.string(), uiExperienceSpeed: z.string(), infoAccuracy: z.string(), infoCompleteness: z.string(), usefulness: z.string(), suggestion: z.string().optional(), }); type SurveySchema = z.infer; const UserSurveyBox = () => { const [openPolda, setOpenPolda] = useState(); const [showSurvey, setShowSurvey] = useState(true); const [isLoading, setIsLoading] = useState(false); const { control, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(surveySchema), mode: "all", defaultValues: { accessFrequency: "", uiExperienceDesign: "", uiExperienceNavigation: "", uiExperienceSpeed: "", infoAccuracy: "", infoCompleteness: "", usefulness: "", suggestion: "", }, }); const options = { accessFrequency: ["Setiap hari", "Beberapa kali seminggu", "Beberapa kali dalam sebulan", "Baru pertama kali"], uiExperienceDesign: ["Sangat baik", "Baik", "Cukup", "Kurang", "Buruk"], uiExperienceNavigation: ["Sangat mudah", "Mudah", "Cukup", "Sulit", "Sangat sulit"], uiExperienceSpeed: ["Sangat cepat", "Cepat", "Cukup", "Lambat", "Sangat lambat"], infoAccuracy: ["Sangat puas", "Puas", "Cukup", "Kurang puas", "Tidak puas"], infoCompleteness: ["Sangat lengkap", "Lengkap", "Cukup", "Kurang lengkap", "Tidak lengkap"], usefulness: ["Sangat membantu", "Membantu", "Cukup membantu", "Kurang membantu", "Tidak membantu"], }; const renderControllerGroup = (name: keyof SurveySchema, question: string, choices: string[]) => (

{question}

{choices.map((choice, i) => ( ( )} /> ))}
{errors[name] &&

{errors[name]?.message as string}

}
); const onSubmit = async (data: SurveySchema) => { setIsLoading(true); try { const response = await createSurveyData(data); console.log("API Response:", response); setShowSurvey(false); } catch (error) { console.error("Error submitting survey:", error); } finally { setIsLoading(false); } }; return (
{/* Garis menyerong */}
line
line
line
{/* Grid konten */}
{/* Kiri: Teks dan tombol */}

SURVEI KEPUASAN PENGGUNA MEDIAHUB POLRI

Kami menghargai pendapat Anda! Survei ini bertujuan untuk meningkatkan kualitas layanan MediaHub Polri. Mohon luangkan waktu beberapa menit untuk mengisi survei ini.

SURVEI KEPUASAN PENGGUNA MEDIAHUB POLRI Kami menghargai pendapat Anda! Survei ini bertujuan untuk meningkatkan kualitas layanan MediaHub Polri.
{renderControllerGroup("accessFrequency", "1. Seberapa sering Anda mengakses MediaHub Polri?", options.accessFrequency)}

2. Bagaimana pengalaman Anda dalam mengakses website ini?

{renderControllerGroup("uiExperienceDesign", "a) Tampilan dan desain website", options.uiExperienceDesign)} {renderControllerGroup("uiExperienceNavigation", "b) Kemudahan navigasi", options.uiExperienceNavigation)} {renderControllerGroup("uiExperienceSpeed", "c) Kecepatan akses website", options.uiExperienceSpeed)}

3. Seberapa puas Anda dengan informasi yang tersedia di MediaHub Polri?

{renderControllerGroup("infoAccuracy", "a) Akurat dan terpercaya", options.infoAccuracy)} {renderControllerGroup("infoCompleteness", "b) Kelengkapan berita dan informasi", options.infoCompleteness)}
{renderControllerGroup("usefulness", "4. Apakah Anda merasa website ini membantu dalam mendapatkan informasi terkait Polri?", options.usefulness)}

5. Apa saran atau masukan Anda?