import { useEffect, useState } from 'react'; import { Modal, Select, Divider, Typography, Button, ConfigProvider } from 'antd'; import { NotifAlert, NotifOk } from '../../../components/Global/ToastNotif'; import { createJadwalShift, updateJadwalShift } from '../../../api/jadwal-shift'; import { getAllShift } from '../../../api/master-shift'; import { getAllUser } from '../../../api/user'; const { Text } = Typography; const { Option } = Select; const DetailJadwalShift = (props) => { const [confirmLoading, setConfirmLoading] = useState(false); const [shifts, setShifts] = useState([]); const [users, setUsers] = useState([]); const defaultData = { id: '', id_shift: null, id_user: null, }; const [FormData, setFormData] = useState(defaultData); const fetchShifts = async () => { const response = await getAllShift(new URLSearchParams()); setShifts(response.data.data); }; const fetchUsers = async () => { const response = await getAllUser(new URLSearchParams("limit=1000")); // Fetch all users setUsers(response.data.data); }; useEffect(() => { fetchShifts(); fetchUsers(); }, []); const handleCancel = () => { props.setSelectedData(null); props.setActionMode('list'); }; const handleSave = async () => { setConfirmLoading(true); if (!FormData.id_shift) { NotifOk({ icon: 'warning', title: 'Peringatan', message: 'Kolom Shift Tidak Boleh Kosong', }); setConfirmLoading(false); return; } if (!FormData.id_user) { NotifOk({ icon: 'warning', title: 'Peringatan', message: 'Kolom User Tidak Boleh Kosong', }); setConfirmLoading(false); return; } const payload = { id_shift: FormData.id_shift, id_user: FormData.id_user, }; try { const response = FormData.id ? await updateJadwalShift(FormData.id, payload) : await createJadwalShift(payload); if (response && (response.statusCode === 200 || response.statusCode === 201)) { NotifOk({ icon: 'success', title: 'Berhasil', message: `Data Jadwal Shift berhasil ${FormData.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 Jadwal Shift Error:', error); NotifAlert({ icon: 'error', title: 'Error', message: error.message || 'Terjadi kesalahan pada server. Coba lagi nanti.', }); } setConfirmLoading(false); }; const handleSelectChange = (name, value) => { setFormData({ ...FormData, [name]: value, }); }; useEffect(() => { if (props.selectedData) { setFormData(props.selectedData); } else { setFormData(defaultData); } }, [props.actionMode, props.selectedData]); return ( , ]} > {FormData && (
Shift *
User *
)}
); }; export default DetailJadwalShift;