import React, { useState, useEffect } from "react"; import { Head, router } from "@inertiajs/react"; import AuthenticatedLayout from "@/layouts/authenticated-layout"; import { Card, CardHeader, CardContent } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Checkbox } from "@/components/ui/checkbox"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { ChevronLeft, Printer, FileDown, ArrowUpRight, Save, } from "lucide-react"; import axios from "axios"; // Import components import ALTable from "@/components/AL/ALTable"; import LampiranModal from "@/components/AL/LampiranModal"; import SplModal from "@/components/AL/SplModal"; interface PelaporanALProps { idmcpelaporan: number; nama_perusahaan: string; tahun: number; periode: string; editable: boolean; ipal_komunal: string; lampiran_sk: number; verifikasi_sk: string | null; ket_sk: string | null; catatan: string; // Table data props data_table: Record; nilai_komponen: Record; nilai_syarat_teknis: Record; nilai_A6: number; nilai_A7: number; idrefpelaporan: number; rowspan_1: number; spl: number; spl_2: number; } const ALForm: React.FC = (props) => { const [ipalKomunal, setIpalKomunal] = useState(props.ipal_komunal); const [lampiranSK, setLampiranSK] = useState(props.lampiran_sk); const [catatan, setCatatan] = useState(props.catatan); const [showSkFields, setShowSkFields] = useState( props.ipal_komunal === "Iya" ); const [agreement, setAgreement] = useState(false); // Modals state const [lampiranModalOpen, setLampiranModalOpen] = useState(false); const [selectedKomponen, setSelectedKomponen] = useState(""); const [selectedIdRefKomponen, setSelectedIdRefKomponen] = useState(0); const [splModalOpen, setSplModalOpen] = useState(false); // Table related states const [dataTable, setDataTable] = useState(props.data_table); const [nilaiKomponen, setNilaiKomponen] = useState(props.nilai_komponen); useEffect(() => { // Check for lampiran SK on component mount if (ipalKomunal === "Iya") { checkLampiranSK(); } }, []); const checkLampiranSK = async () => { try { const response = await axios.get( `/pelaporan/al/cek-surat-kerjasama/${props.idmcpelaporan}` ); if (response.data.lampiran && ipalKomunal === "Iya") { setLampiranSK(1); // If connected to communal IPAL and attachment exists, disable all fields disableLampiran(); changeNilai(); } else { setLampiranSK(0); } } catch (error) { console.error("Error checking SK:", error); } }; const handleIpalKomunalChange = (value: string) => { setIpalKomunal(value); setShowSkFields(value === "Iya"); if (value === "Tidak") { // Enable all inputs if not connected to communal IPAL enableLampiran(); } else { if (lampiranSK) { // If connected to communal IPAL and attachment exists, disable all fields disableLampiran(); changeNilai(); } } }; const disableLampiran = () => { // This function would disable all lampiran links in UI // In React we handle this through state/props rather than direct DOM manipulation }; const enableLampiran = () => { // This function would enable all lampiran links in UI // In React we handle this through state/props rather than direct DOM manipulation }; const changeNilai = () => { // If SK is verified and not rejected, set all values to 100 // If rejected, set all to 0 const newNilaiKomponen = { ...nilaiKomponen }; const nilai = props.verifikasi_sk === "Not Approved" ? 0 : 100; // Update all nilai komponen Object.keys(newNilaiKomponen).forEach((key) => { if (newNilaiKomponen[key]) { newNilaiKomponen[key].nilai = nilai; } }); setNilaiKomponen(newNilaiKomponen); }; const handleUpdateNilai = (kode: string, nilai: number) => { const newNilaiKomponen = { ...nilaiKomponen }; if (newNilaiKomponen[kode]) { newNilaiKomponen[kode].nilai = nilai; } else { newNilaiKomponen[kode] = { nilai }; } setNilaiKomponen(newNilaiKomponen); }; const handleOpenLampiranModal = (kode: string, idrefkomponen: number) => { setSelectedKomponen(kode); setSelectedIdRefKomponen(idrefkomponen); setLampiranModalOpen(true); }; const handleOpenSplModal = () => { setSplModalOpen(true); }; const handleSubmit = () => { // Handle form submission - save and send report if (ipalKomunal === "Iya" && lampiranSK === 0) { alert("Silahkan Upload Lampiran Surat Kerjasama terlebih dahulu"); return; } // Prepare data const formData = { ipal_komunal: ipalKomunal, catatan: catatan, nilai_komponen: nilaiKomponen, send: true, }; // Submit data router.post(`/pelaporan/al/simpan/${props.idmcpelaporan}`, formData); }; const handleSaveDraft = () => { // Save form as draft if (ipalKomunal === "Iya" && lampiranSK === 0) { alert("Silahkan Upload Lampiran Surat Kerjasama terlebih dahulu"); return; } // Prepare data const formData = { ipal_komunal: ipalKomunal, catatan: catatan, nilai_komponen: nilaiKomponen, send: false, }; // Submit data router.post(`/pelaporan/al/simpan/${props.idmcpelaporan}`, formData); }; const handlePrint = () => { window.print(); }; const handleExport = () => { window.location.href = `/pelaporan/al/export-pdf/${props.idmcpelaporan}`; }; return (

Laporan Pengelolaan Air Limbah

{props.nama_perusahaan}

Tahun {props.tahun} - Periode{" "} {props.periode}

{/* IPAL Komunal Section */}
{showSkFields && ( <>
{props.verifikasi_sk && ( <>
{props.verifikasi_sk}

{props.ket_sk}

)} )}
{/* Main Table */}
{/* Notes Section */}