import { apiConfig } from '@/config/api.config'; import { useManageProfessionContext } from '../hooks/useManageProfessionContext'; import { Alert, useDataGrid } from '@/components'; import { useCallApi } from '@/hooks'; import { getAuth } from '@/auth'; import React, { useCallback, useEffect, useState } from 'react'; import { toast } from 'sonner'; import { Dialog, DialogBody, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Input } from '@/components/ui/input'; import { Button } from '@/components/ui/button'; const API_URL = apiConfig.service_master_data; const EditDialog = () => { const { showEditDialog, handleEditDialog, selectedProfession } = useManageProfessionContext(); const { reload } = useDataGrid(); const { PutData, GetData } = useCallApi(); const parsedUser = getAuth()?.user; const created_time = new Date(); const formattedTime = created_time.toISOString().slice(0, 19).replace('T', ' '); const [alert, setAlert] = useState({ show: false, message: '' }); const initialState = { name: '', updated_by: '', updated_at: '' }; const [formField, setFormField] = useState(initialState); const resetForm = () => { setFormField(initialState); setAlert({ show: false, message: '' }); }; const doUpdateProfession = useCallback( async (e: React.FormEvent) => { e.preventDefault(); const response = await PutData( `${API_URL}/profession/update/${selectedProfession}`, formField ); if (response?.status) { resetForm(); handleEditDialog(false, null); toast.success('Success Update Profession'); reload(); } else { toast.error('Failed Update Profession'); setAlert({ show: true, message: 'Failed Update Profession' }); } }, [selectedProfession, formField] ); const doFetchData = useCallback(async (id: string) => { const response = await GetData(`${API_URL}/profession/getdata/${id}`, { id }); if (response?.status) { setFormField((prev) => ({ ...prev, name: response.data.name })); } else { setFormField(initialState); } }, []); const handleUpdate = (e: React.FormEvent) => { e.preventDefault(); if (formField.name.trim() === '') { setAlert({ show: true, message: 'Please fill name field.' }); return; } doUpdateProfession(e); console.log(formField); setAlert({ show: false, message: '' }); }; useEffect(() => { if (selectedProfession) { doFetchData(selectedProfession); } }, [selectedProfession]); useEffect(() => { if (showEditDialog) { setFormField({ ...formField, updated_by: parsedUser.username, updated_at: formattedTime }); } }, [formattedTime]); useEffect(() => { if (showEditDialog === false) { resetForm(); } }, [showEditDialog]); return ( handleEditDialog(open, null)}> Profession - Update
{alert.show && (

{alert.message}

)}
setFormField({ ...formField, name: e.target.value })} />
); }; export default EditDialog;