import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import Select from "react-select"; import { useState, useEffect } from "react"; import { useForm } from "@inertiajs/react"; import { useToast } from "@/hooks/use-toast"; import { HukumType } from "@/types/perusahaan"; interface AddPenaatanModalProps { open: boolean; onClose: () => void; onSuccess: () => void; editingData: HukumType | null; penaatan: { PenaatanId: number; NamaPenaatan: string }[]; } export function AddPenaatanModal({ open, onClose, onSuccess, editingData, penaatan, }: AddPenaatanModalProps) { const { toast } = useToast(); const [loading, setLoading] = useState(false); const { data, setData, post, reset } = useForm<{ PenaatanId: string; PenaatanNumber: string; PenaatanDate: string; PenaatanFile: File | null; currentPenaatanFile?: string; }>({ PenaatanId: "", PenaatanNumber: "", PenaatanDate: "", PenaatanFile: null, currentPenaatanFile: editingData?.PenaatanFile, }); const [isPenaatanModalOpen, setIsPenaatanModalOpen] = useState(false); const [selectedHukum, setSelectedHukum] = useState(null); // Handle Open Modal for Penaatan const handleOpenPenaatanModal = (hukum: HukumType) => { setSelectedHukum(hukum); setIsPenaatanModalOpen(true); }; useEffect(() => { if (editingData) { setData({ PenaatanId: editingData.PenaatanId?.toString() || "", PenaatanNumber: editingData.PenaatanNumber || "", PenaatanDate: editingData.PenaatanDate || "", PenaatanFile: null, currentPenaatanFile: "", }); } else { reset(); } }, [editingData, open]); const penaatanOptions = penaatan.map((p) => ({ value: p.PenaatanId.toString(), label: p.NamaPenaatan, })); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); setLoading(true); const formData = new FormData(); formData.append("PenaatanId", data.PenaatanId); formData.append("PenaatanNumber", data.PenaatanNumber); formData.append("PenaatanDate", data.PenaatanDate); if (data.PenaatanFile) formData.append("PenaatanFile", data.PenaatanFile); if (!editingData) return; post(`/admin/hukum/${editingData.HukumId}/penaatan`, { data: formData, forceFormData: true, onSuccess: () => { toast({ title: "Berhasil", description: "Data Penaatan berhasil diperbarui", variant: "default", }); reset(); setLoading(false); onSuccess(); onClose(); }, onError: () => { toast({ title: "Gagal", description: "Terjadi kesalahan saat memperbarui data", variant: "destructive", }); setLoading(false); }, }); }; return ( Perbarui Data Penaatan
setData("PenaatanNumber", e.target.value) } /> setData("PenaatanDate", e.target.value) } />
setData( "PenaatanFile", e.target.files ? e.target.files[0] : null ) } /> {editingData?.PenaatanFile && (
File saat ini:{" "} {editingData.PenaatanFile}
)}
); }