"use client"; import { z } from "zod"; import { useForm, Controller } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "../ui/dialog"; import { Checkbox } from "../ui/checkbox"; import { Button } from "../ui/button"; import { Textarea } from "../ui/textarea"; import { useState } from "react"; import { createTaskTa } from "@/service/task"; 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; export default function FormSurvey() { 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 ( 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?

(