import React, { useEffect, useState } from 'react'; import { Modal, Input, Typography, Switch, Button, ConfigProvider, Divider, Select } from 'antd'; import { NotifOk } from '../../../../components/Global/ToastNotif'; import { createUnit, updateUnit } from '../../../../api/master-unit'; import { validateRun } from '../../../../Utils/validate'; const { Text } = Typography; const DetailUnit = (props) => { const [confirmLoading, setConfirmLoading] = useState(false); const defaultData = { unit_id: '', unit_code: '', unit_name: '', unit_description: '', is_active: true, }; const [formData, setFormData] = useState(defaultData); const handleCancel = () => { props.setSelectedData(null); props.setActionMode('list'); }; const handleSave = async () => { setConfirmLoading(true); const validationRules = [{ field: 'unit_name', label: 'Unit Name', required: true }]; if ( validateRun(formData, validationRules, (errorMessages) => { NotifOk({ icon: 'warning', title: 'Peringatan', message: errorMessages, }); setConfirmLoading(false); }) ) { return; } try { const payload = { unit_name: formData.unit_name, unit_description: formData.unit_description, is_active: formData.is_active, }; const response = props.actionMode === 'edit' ? await updateUnit(formData.unit_id, payload) : await createUnit(payload); if (response && (response.statusCode === 200 || response.statusCode === 201)) { const action = props.actionMode === 'edit' ? 'diubah' : 'ditambahkan'; NotifOk({ icon: 'success', title: 'Berhasil', message: `Data Unit berhasil ${action}.`, }); props.setActionMode('list'); } else { NotifOk({ icon: 'error', title: 'Gagal', message: response?.message || 'Terjadi kesalahan saat menyimpan data.', }); } } catch (error) { NotifOk({ icon: 'error', title: 'Error', message: error.message || 'Terjadi kesalahan pada server.', }); } finally { setConfirmLoading(false); } }; const handleInputChange = (e) => { const { name, value } = e.target; setFormData({ ...formData, [name]: value, }); }; const handleStatusToggle = (checked) => { setFormData({ ...formData, is_active: checked, }); }; useEffect(() => { if (props.selectedData) { setFormData(props.selectedData); } else { setFormData(defaultData); } }, [props.showModal, props.selectedData, props.actionMode]); return ( {!props.readOnly && ( )} , ]} > {formData && (
Status
{formData.is_active ? 'Active' : 'Inactive'}
Unit Code
Unit Name *
Description
)}
); }; export default DetailUnit;