This commit is contained in:
hanif salafi 2025-08-11 11:08:23 +07:00
commit 15697a30f7
2 changed files with 67 additions and 14 deletions

View File

@ -36,12 +36,11 @@ import { list, parse } from "postcss";
import { htmlToString } from "@/utils/globals"; import { htmlToString } from "@/utils/globals";
import { Textarea } from "@/components/ui/textarea"; import { Textarea } from "@/components/ui/textarea";
import { error } from "@/lib/swal"; import { error } from "@/lib/swal";
import { useRouter } from "next/navigation";
import { useMediaQuery } from "react-responsive"; import { useMediaQuery } from "react-responsive";
import { DetailTicket } from "../ticketing/info-lainnya-types"; import { DetailTicket } from "../ticketing/info-lainnya-types";
import InfoLainnyaModal from "../ticketing/info-lainnya"; import InfoLainnyaModal from "../ticketing/info-lainnya";
import { Description } from "@radix-ui/react-toast"; import { Description } from "@radix-ui/react-toast";
import { Link } from "@/i18n/routing"; import { Link, useRouter } from "@/i18n/routing";
import { import {
Popover, Popover,
PopoverContent, PopoverContent,
@ -140,6 +139,7 @@ export default function FormQuestionsReply() {
control, control,
handleSubmit, handleSubmit,
reset, reset,
setValue,
formState: { errors }, formState: { errors },
} = useForm({ } = useForm({
resolver: zodResolver(taskSchema), resolver: zodResolver(taskSchema),
@ -149,9 +149,11 @@ export default function FormQuestionsReply() {
async function initState() { async function initState() {
setReplyValue(0); setReplyValue(0);
const response = await getQuestionTicket(id); const response = await getQuestionTicket(id);
setDetailTicketsQuestions(response?.data?.data || null); setDetailTicketsQuestions(response?.data?.data || null);
setTicketInternal(response?.data?.data || null); setTicketInternal(response?.data?.data || null);
setDetail(response?.data?.data); setDetail(response?.data?.data);
setValue('title', response?.data?.data?.message)
if (response?.data !== null) { if (response?.data !== null) {
setDetailTickets(response?.data?.data); setDetailTickets(response?.data?.data);
@ -268,8 +270,49 @@ export default function FormQuestionsReply() {
} }
}; };
// const onSubmit = async (data: any) => {
// try {
// const payload = {
// id,
// title: data.title,
// description: data.description,
// priorityId: selectedPriority,
// statusId: 1,
// typeId: detailTickets?.typeId,
// parentCommentId: detailTickets?.feedId,
// operatorTeam: selectedOperator.join(","),
// };
// const response = await saveTicketsQuestion(payload);
// MySwal.fire({
// title: "Sukses",
// text: "Data berhasil diperbarui.",
// icon: "success",
// });
// getTicketReply();
// } catch (error) {
// console.error("Gagal update:", error);
// MySwal.fire({
// title: "Error",
// text: "Terjadi kesalahan saat memperbarui.",
// icon: "error",
// });
// }
// };
const onSubmit = async (data: any) => { const onSubmit = async (data: any) => {
try { try {
MySwal.fire({
title: "Menyimpan...",
text: "Mohon tunggu sebentar",
allowOutsideClick: false,
didOpen: () => {
MySwal.showLoading();
},
});
const payload = { const payload = {
id, id,
title: data.title, title: data.title,
@ -281,17 +324,17 @@ export default function FormQuestionsReply() {
operatorTeam: selectedOperator.join(","), operatorTeam: selectedOperator.join(","),
}; };
const response = await saveTicketsQuestion(payload); await saveTicketsQuestion(payload);
MySwal.fire({ MySwal.fire({
title: "Sukses", title: "Sukses",
text: "Data berhasil diperbarui.", text: "Data berhasil diperbarui.",
icon: "success", icon: "success",
confirmButtonText: "OK",
}).then(() => {
router.push("/supervisor/ticketing");
}); });
getTicketReply();
} catch (error) { } catch (error) {
console.error("Gagal update:", error);
MySwal.fire({ MySwal.fire({
title: "Error", title: "Error",
text: "Terjadi kesalahan saat memperbarui.", text: "Terjadi kesalahan saat memperbarui.",
@ -512,8 +555,10 @@ export default function FormQuestionsReply() {
<Input <Input
size="md" size="md"
type="text" type="text"
defaultValue={detailTickets?.message} // defaultValue={detailTickets?.message}
{...field} value={field.value}
// {...field}
onChange={field.onChange}
placeholder="Masukkan judul" placeholder="Masukkan judul"
/> />
)} )}

View File

@ -63,6 +63,7 @@ import { useTranslations } from "next-intl";
import SuggestionModal from "@/components/modal/suggestions-modal"; import SuggestionModal from "@/components/modal/suggestions-modal";
import { formatDateToIndonesian } from "@/utils/globals"; import { formatDateToIndonesian } from "@/utils/globals";
import ApprovalHistoryModal from "@/components/modal/approval-history-modal"; import ApprovalHistoryModal from "@/components/modal/approval-history-modal";
import VideoPlayer from "@/utils/video-player";
const imageSchema = z.object({ const imageSchema = z.object({
title: z.string().min(1, { message: "Judul diperlukan" }), title: z.string().min(1, { message: "Judul diperlukan" }),
@ -513,12 +514,19 @@ export default function FormVideoDetail() {
> >
{files?.map((data: any) => ( {files?.map((data: any) => (
<SwiperSlide key={data.id}> <SwiperSlide key={data.id}>
<div className="relative max-h-screen overflow-hidden">
<div className="w-full max-h-screen aspect-video">
<div className="w-full h-full object-contain">
<video <video
className="object-fill h-full w-full" className="object-contain h-full w-full"
src={data.secondaryUrl} src={data.secondaryUrl}
controls controls
title={`Video ${data.id}`} title={`Video ${data.id}`}
/> />
</div>
</div>
<div className="absolute top-4 left-4"></div>
</div>
</SwiperSlide> </SwiperSlide>
))} ))}
</Swiper> </Swiper>