import { useEffect, useState } from 'react'; import { Modal, Input, Divider, Typography, Switch, Button, ConfigProvider, Select } from 'antd'; import { NotifAlert, NotifOk } from '../../../../components/Global/ToastNotif'; const { Text } = Typography; const DetailBrandDevice = (props) => { const [confirmLoading, setConfirmLoading] = useState(false); const defaultData = { brand_id: '', brandName: '', brandType: '', manufacturer: '', model: '', status: 'Active', }; const [FormData, setFormData] = useState(defaultData); const handleCancel = () => { props.setSelectedData(null); props.setActionMode('list'); }; const handleSave = async () => { setConfirmLoading(true); // Validasi required fields if (!FormData.brandName) { NotifOk({ icon: 'warning', title: 'Peringatan', message: 'Kolom Brand Name Tidak Boleh Kosong', }); setConfirmLoading(false); return; } if (!FormData.brandType) { NotifOk({ icon: 'warning', title: 'Peringatan', message: 'Kolom Type Tidak Boleh Kosong', }); setConfirmLoading(false); return; } if (!FormData.manufacturer) { NotifOk({ icon: 'warning', title: 'Peringatan', message: 'Kolom Manufacturer Tidak Boleh Kosong', }); setConfirmLoading(false); return; } if (!FormData.model) { NotifOk({ icon: 'warning', title: 'Peringatan', message: 'Kolom Model Tidak Boleh Kosong', }); setConfirmLoading(false); return; } if (!FormData.status) { NotifOk({ icon: 'warning', title: 'Peringatan', message: 'Kolom Status Tidak Boleh Kosong', }); setConfirmLoading(false); return; } const payload = { brandName: FormData.brandName, brandType: FormData.brandType, manufacturer: FormData.manufacturer, model: FormData.model, status: FormData.status, }; try { // Simulate API call await new Promise((resolve) => setTimeout(resolve, 500)); const response = { statusCode: FormData.brand_id ? 200 : 201, data: { brandName: FormData.brandName, }, }; console.log('Save Brand Device Response:', response); // Check if response is successful if (response && (response.statusCode === 200 || response.statusCode === 201)) { NotifOk({ icon: 'success', title: 'Berhasil', message: `Data Brand Device "${ response.data?.brandName || FormData.brandName }" berhasil ${FormData.brand_id ? 'diubah' : 'ditambahkan'}.`, }); props.setActionMode('list'); } else { NotifAlert({ icon: 'error', title: 'Gagal', message: response?.message || 'Terjadi kesalahan saat menyimpan data.', }); } } catch (error) { console.error('Save Brand Device Error:', error); NotifAlert({ icon: 'error', title: 'Error', message: error.message || 'Terjadi kesalahan pada server. Coba lagi nanti.', }); } setConfirmLoading(false); }; const handleInputChange = (e) => { const { name, value } = e.target; setFormData({ ...FormData, [name]: value, }); }; const handleSelectChange = (name, value) => { setFormData({ ...FormData, [name]: value, }); }; const handleStatusToggle = (event) => { const isChecked = event; setFormData({ ...FormData, status: isChecked ? true : false, }); }; useEffect(() => { const token = localStorage.getItem('token'); if (token) { if (props.selectedData != null) { setFormData(props.selectedData); } else { setFormData(defaultData); } } else { // navigate('/signin'); // Uncomment if useNavigate is imported } }, [props.showModal]); return ( {!props.readOnly && ( )} , ]} > {FormData && (
Status
{FormData.status === true ? 'Active' : 'Inactive'}
Brand Name *
Type *
Manufacturer *
Model *
)}
); }; export default DetailBrandDevice;