"use client"; import { useCallback, useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { useTranslation } from "react-i18next"; import { Button, Card, CardContent, FormControl, InputLabel, MenuItem, Select, TextField, Typography, Stack, Grid, } from "@mui/material"; import { Check, Close } from "@mui/icons-material"; import axiosInstance from "@/app/(main)/axios/axiosInstance"; import { NEXT_PUBLIC_API_URL } from "@/config/api"; type Props = { id: number; }; type EquipmentDetailData = { id: number; code: string; name: string; equipmentCode?: string; repairAndMaintenanceStatus?: boolean | null; repairAndMaintenanceRemarks?: string | null; }; const UpdateMaintenanceForm: React.FC = ({ id }) => { const { t } = useTranslation("common"); const router = useRouter(); const [loading, setLoading] = useState(false); const [fetching, setFetching] = useState(true); const [equipmentData, setEquipmentData] = useState(null); const [status, setStatus] = useState(null); const [remarks, setRemarks] = useState(""); useEffect(() => { const fetchEquipmentDetail = async () => { try { setFetching(true); const response = await axiosInstance.get( `${NEXT_PUBLIC_API_URL}/EquipmentDetail/details/${id}` ); if (response.data) { setEquipmentData(response.data); setStatus(response.data.repairAndMaintenanceStatus ?? null); setRemarks(response.data.repairAndMaintenanceRemarks ?? ""); } } catch (error) { console.error("Error fetching equipment detail:", error); } finally { setFetching(false); } }; fetchEquipmentDetail(); }, [id]); const handleSave = useCallback(async () => { if (!equipmentData) return; try { setLoading(true); const updateData = { repairAndMaintenanceStatus: status, repairAndMaintenanceRemarks: remarks, }; await axiosInstance.put( `${NEXT_PUBLIC_API_URL}/EquipmentDetail/update/${id}`, updateData, { headers: { "Content-Type": "application/json" }, } ); router.push("/settings/equipment?tab=1"); } catch (error) { console.error("Error updating maintenance:", error); alert(t("Error saving data") || "Error saving data"); } finally { setLoading(false); } }, [equipmentData, status, remarks, id, router, t]); const handleCancel = useCallback(() => { router.push("/settings/equipment?tab=1"); }, [router]); if (fetching) { return ( {t("Loading") || "Loading..."} ); } if (!equipmentData) { return ( {t("Equipment not found") || "Equipment not found"} ); } return ( {t("Equipment Information")} {t("Repair and Maintenance Status")} setRemarks(e.target.value)} fullWidth multiline rows={4} variant="filled" InputLabelProps={{ shrink: true, sx: { fontSize: "0.9375rem" }, }} InputProps={{ sx: { paddingTop: "8px", alignItems: "flex-start", paddingBottom: "8px", }, }} sx={{ "& .MuiInputBase-input": { paddingTop: "16px", }, }} /> ); }; export default UpdateMaintenanceForm;