"use client"; "use client"; import React, { useEffect, useState } from "react"; import { useForm, Controller } from "react-hook-form"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; import { Label } from "@/components/ui/label"; import { Card } from "@/components/ui/card"; import { zodResolver } from "@hookform/resolvers/zod"; import * as z from "zod"; import Swal from "sweetalert2"; import withReactContent from "sweetalert2-react-content"; import { useParams } from "next/navigation"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Avatar, AvatarImage } from "@/components/ui/avatar"; import { getEscalationDiscussion, getQuestionTicket, getTicketingDetail, getTicketingInternalDetail, getTicketingInternalDiscussion, saveTicketInternalReply, saveTicketsQuestion, } from "@/service/communication/communication"; import { Textarea } from "@/components/ui/textarea"; import { Icon } from "@iconify/react/dist/iconify.js"; import { Link } from "@/i18n/routing"; import { loading } from "@/lib/swal"; import { id } from "date-fns/locale"; import { DetailTicket } from "../ticketing/info-lainnya-types"; import { Description } from "@radix-ui/react-toast"; const taskSchema = z.object({ title: z.string().min(1, { message: "Judul diperlukan" }), description: z.string().min(2, { message: "Narasi Penugasan harus lebih dari 2 karakter.", }), }); export type replyDetail = { id: number; message: string; createdAt: string; messageFrom: { id: number; fullname: string; }; messageTo: { id: number; fullname: string; }; }; export default function FormQuestionsForward() { const MySwal = withReactContent(Swal); const { id } = useParams() as { id: string }; const [detail, setDetail] = useState(); const [ticketReply, setTicketReply] = useState([]); const [replyVisible, setReplyVisible] = useState(false); const [listDiscussion, setListDiscussion] = useState(); const [message, setMessage] = useState(""); const [detailTickets, setDetailTickets] = useState(null); const [selectedPriority, setSelectedPriority] = useState(""); const [replyMessage, setReplyMessage] = useState(""); const [selectedStatus, setSelectedStatus] = useState(""); const [replies, setReplies] = useState([ { id: 1, name: "Mabes Polri - Approver", message: "test", timestamp: "2024-12-20 00:56:10", }, { id: 2, name: "Mabes Polri - Approver", message: "balas", timestamp: "2025-01-18 17:42:48", }, ]); const { control, handleSubmit, reset, formState: { errors }, } = useForm({ resolver: zodResolver(taskSchema), }); // useEffect(() => { // async function initState() { // const response = await getQuestionTicket(id); // setDetail(response?.data?.data); // if (response?.data !== null) { // setDetailTickets(response?.data?.data); // } // if (detailTickets?.emergencyIssue) { // reset({ // title: detailTickets.emergencyIssue.title || "", // description: detailTickets.emergencyIssue.description || "", // }); // // setSelectedPriority(String(detailTickets.emergencyIssue.urgencyId)); // // setSelectedStatus(String(detailTickets.statusId)); // jika ada // } // } // initState(); // getTicketReply(); // }, [id, reset]); useEffect(() => { async function initState() { if (id) { const response = await getTicketingDetail(id); setDetail(response?.data?.data); } } initState(); getTicketReply(); }, [id]); async function getTicketReply() { const res = await getTicketingInternalDiscussion(id); if (res?.data !== null) { setTicketReply(res?.data?.data); } } const onSubmit = async (data: any) => { try { const payload = { id, title: data.title, description: data.description, priorityId: selectedPriority, statusId: selectedStatus, typeId: detailTickets?.typeId, parentCommentId: detailTickets?.feedId, }; const response = await saveTicketsQuestion(payload); MySwal.fire({ title: "Sukses", text: "Data berhasil diperbarui.", icon: "success", }); // Refresh data jika perlu getTicketReply(); } catch (error) { console.error("Gagal update:", error); MySwal.fire({ title: "Error", text: "Terjadi kesalahan saat memperbarui.", icon: "error", }); } }; const handleSendReply = () => { if (replyMessage.trim() === "") return; const newReply = { id: replies.length + 1, name: "Mabes Polri - Approver", // Sesuaikan dengan data dinamis jika ada message: replyMessage, timestamp: new Date().toISOString().slice(0, 19).replace("T", " "), }; setReplies([...replies, newReply]); setReplyMessage(""); }; return (
{detail !== undefined && (

Ticket #{detail.id}

{detail?.commentFromUserName} {` `} mengirimkan pesan untuk{` `} {detail?.message}

{`${new Date(detail?.createdAt).getDate()}-${ new Date(detail?.createdAt).getMonth() + 1 }-${new Date(detail?.createdAt).getFullYear()} ${new Date( detail?.createdAt ).getHours()}:${new Date(detail?.createdAt).getMinutes()}`}

{detail.message}

)}
{detail !== undefined && (
( )} /> {/* {errors.title?.message && (

{errors.title.message}

)} */}
(