import React, { useState } from "react"; import AuthenticatedLayout from "@/layouts/authenticated-layout"; import { Head } from "@inertiajs/react"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import FilterPerizinanLingkungan from "@/components/PerizinanLingkungan/FilterPencarian"; import { Perusahaan, JenisDokIL, JenisKegiatan } from "@/types/perusahaan"; import { FileText } from "lucide-react"; import { ModalIzinLingkungan } from "@/components/PerizinanLingkungan/ModalIzinLingkungan"; type PerizinanLingkunganIndexProps = { perusahaan: Perusahaan[]; jenisDokIL: JenisDokIL[]; jenisKegiatan: JenisKegiatan[]; }; export default function PerizinanLingkunganIndex({ perusahaan, jenisDokIL, jenisKegiatan, }: PerizinanLingkunganIndexProps) { const [selectedPerusahaan, setSelectedPerusahaan] = useState(null); const [showModal, setShowModal] = useState(false); // Handler ketika klik kolom "Jenis Izin" const handleJenisIzinClick = (p: Perusahaan) => { setSelectedPerusahaan(p); setShowModal(true); }; const handleModalClose = () => { setShowModal(false); setSelectedPerusahaan(null); }; // Callback jika upload dokumen sukses, maka reload atau refresh data const handleUploadSuccess = () => { setShowModal(false); setSelectedPerusahaan(null); // contoh reload: // window.location.reload(); // atau bisa panggil inertia visit: // router.reload(); }; // State untuk data yang ditampilkan pada tabel const [filteredPerusahaan, setFilteredPerusahaan] = useState(perusahaan); // Callback dari FilterPerizinanLingkungan const handleSearch = (filters: { selectedPerusahaan: { value: string; label: string } | null; selectedJenisKegiatan: { value: string; label: string } | null; Alamat: string; TeleponFax: string; Email: string; selectedJenisIzin: { value: string; label: string } | null; ILNomor: string; ILTanggal: string | null; }) => { let result = [...perusahaan]; if (filters.selectedPerusahaan) { result = result.filter( (p) => p.PerusahaanId.toString() === filters.selectedPerusahaan?.value ); } if (filters.selectedJenisKegiatan) { result = result.filter( (p) => p.JenisKegiatanId?.toString() === filters.selectedJenisKegiatan?.value ); } if (filters.Alamat.trim() !== "") { result = result.filter((p) => p.Alamat?.toLowerCase().includes(filters.Alamat.toLowerCase()) ); } if (filters.TeleponFax.trim() !== "") { result = result.filter((p) => { const telMatch = p.Telepon?.toLowerCase().includes( filters.TeleponFax.toLowerCase() ); const faxMatch = p.Fax?.toLowerCase().includes( filters.TeleponFax.toLowerCase() ); return telMatch || faxMatch; }); } if (filters.Email.trim() !== "") { result = result.filter((p) => p.Email?.toLowerCase().includes(filters.Email.toLowerCase()) ); } if (filters.selectedJenisIzin) { result = result.filter( (p) => p.JenisDokILId?.toString() === filters.selectedJenisIzin?.value ); } if (filters.ILNomor.trim() !== "") { result = result.filter((p) => p.ILNomor?.toLowerCase().includes(filters.ILNomor.toLowerCase()) ); } if (filters.ILTanggal) { // Asumsikan format filter "yyyy-MM-dd" atau "yyyy-MM-dd - yyyy-MM-dd" if (filters.ILTanggal.includes(" - ")) { const [from, to] = filters.ILTanggal.split(" - "); result = result.filter((p) => { if (!p.ILTanggal) return false; const itemDate = format( new Date(p.ILTanggal), "yyyy-MM-dd" ); return itemDate >= from && itemDate <= to; }); } else { result = result.filter((p) => { if (!p.ILTanggal) return false; const itemDate = format( new Date(p.ILTanggal), "yyyy-MM-dd" ); return itemDate === filters.ILTanggal; }); } } setFilteredPerusahaan(result); }; return ( {/* Komponen Filter */} {/* Tabel Data */}
No. Nama Perusahaan Jenis Kegiatan Alamat Telepon / Fax Email Jenis Izin Nomor Izin Tanggal Izin Dok {filteredPerusahaan.length === 0 ? ( Tidak ada data ) : ( filteredPerusahaan.map((p, index) => ( {index + 1} {p.NamaPerusahaan || "N/A"} {p.jenis_kegiatan?.NamaJenisKegiatan || "N/A"} {p.Alamat || "N/A"} {p.Telepon || "N/A"} / {p.Fax || "N/A"} {p.Email || "N/A"} {/* {p.jenis_dok_i_l?.NamaJenisDokIL || "N/A"} */} {p.ILNomor || "-"} {p.ILTanggal ? new Date( p.ILTanggal ).toLocaleDateString("en-GB") : "-"} {p.ILDokumen ? ( ) : ( "-" )} )) )}
); }