"use client"; import { useEffect, useState } from "react"; import { useParams, useRouter } from "next/navigation"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Button } from "@/components/ui/button"; import { Label } from "@/components/ui/label"; import { Switch } from "@/components/ui/switch"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import Swal from "sweetalert2"; import withReactContent from "sweetalert2-react-content"; import { getScheduleById, updateSchedule } from "@/service/landing/landing"; const MySwal = withReactContent(Swal); export default function EditSchedulePage() { const router = useRouter(); const { id } = useParams(); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [formData, setFormData] = useState({ description: "", endDate: "", endTime: "", isLiveStreaming: false, liveStreamingUrl: "", location: "", posterImagePath: "", speakers: "", startDate: "", startTime: "", statusId: 1, title: "", typeId: 1, }); // Fetch existing schedule data useEffect(() => { const fetchData = async () => { setLoading(true); try { const res = await getScheduleById(id as string); if (!res.error && res.data) { const data = res.data.data || res.data; setFormData({ description: data.description || "", endDate: data.endDate ? new Date(data.endDate).toISOString().slice(0, 10) : "", endTime: data.endDate ? new Date(data.endDate).toISOString().slice(11, 16) : "", isLiveStreaming: data.isLiveStreaming || false, liveStreamingUrl: data.liveStreamingUrl || "", location: data.location || "", posterImagePath: data.posterImagePath || "", speakers: data.speakers || "", startDate: data.startDate ? new Date(data.startDate).toISOString().slice(0, 10) : "", startTime: data.startDate ? new Date(data.startDate).toISOString().slice(11, 16) : "", statusId: data.statusId || 1, title: data.title || "", typeId: data.typeId || 1, }); } else { MySwal.fire({ icon: "error", title: "Gagal", text: res.message || "Data tidak ditemukan.", }); } } catch (error) { MySwal.fire({ icon: "error", title: "Error", text: "Terjadi kesalahan saat memuat data.", }); console.error(error); } finally { setLoading(false); } }; fetchData(); }, [id]); const handleChange = ( e: React.ChangeEvent ) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value })); }; const handleToggle = (checked: boolean) => { setFormData((prev) => ({ ...prev, isLiveStreaming: checked })); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setSaving(true); try { const payload = { ...formData, startDate: `${formData.startDate}T${formData.startTime}:00Z`, endDate: `${formData.endDate}T${formData.endTime}:00Z`, }; const res = await updateSchedule(id as string, payload); if (!res?.error) { MySwal.fire({ icon: "success", title: "Berhasil!", text: "Jadwal berhasil diperbarui.", timer: 2000, showConfirmButton: false, }); setTimeout(() => router.push("/admin/schedules"), 2000); } else { MySwal.fire({ icon: "error", title: "Gagal!", text: res.message || "Gagal memperbarui jadwal.", }); } } catch (error) { MySwal.fire({ icon: "error", title: "Error", text: "Terjadi kesalahan pada sistem.", }); console.error(error); } finally { setSaving(false); } }; if (loading) { return (
Memuat data jadwal...
); } return (
Edit Jadwal