import React, { useCallback, useEffect, useRef, useState } from 'react'; import { useManageMunicipiosContext } from '../hooks/useManageMunicipiosContext'; import { Dialog, DialogBody, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Alert, KeenIcon, useDataGrid } from '@/components'; import { Input } from '@/components/ui/input'; import { Button } from '@/components/ui/button'; import axios from 'axios'; import { apiConfig } from '@/config/api.config'; import { toast } from 'sonner'; import { getAuth, useAuthContext } from '@/auth'; import { useCallApi } from '@/hooks'; import { doSaveLogActivity } from '@/actions/GlobalActions'; const API_URL = apiConfig.service_master_data; const AddDialog = () => { const parentRef = useRef(null); const { reload } = useDataGrid(); const { PostData } = useCallApi(); const parsedUser = getAuth()?.user; const { showAddDialog, handleAddDialog, selectedMunicipios } = useManageMunicipiosContext(); const [alert, setAlert] = useState({ show: false, message: '' }); const initialState = { name: '', created_by: '', created_at: '' }; const [formField, setFormField] = useState(initialState); const created_time = new Date(); const formattedTime = created_time.toISOString().slice(0, 19).replace('T', ' '); const resetForm = () => { setFormField(initialState); setAlert({ show: false, message: '' }); }; const doCreateMunicipio = useCallback( async (e: React.FormEvent) => { e.preventDefault(); const response = await PostData(`${API_URL}/municipios/create`, formField); if (response?.status) { handleAddDialog(false); resetForm(); reload(); toast.success('Municipio created successfully!'); const createActivity = { module: 'Manage Municipio', description: `Create Municipio => ${formField.name}`, action: 'C' }; doSaveLogActivity(createActivity); } else { toast.error('Failed to create municipio.'); setAlert({ show: true, message: 'Failed to create municipio. Please try again.' }); } }, [formField] ); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (formField.name.trim() === '') { setAlert({ show: true, message: 'Please fill name field.' }); return; } doCreateMunicipio(e); console.log(parsedUser.email); console.log(formField); setAlert({ show: false, message: '' }); }; const handleReset = () => { resetForm(); setAlert({ show: false, message: '' }); }; useEffect(() => { if (showAddDialog) { setFormField({ name: formField.name, created_by: parsedUser?.username, created_at: formattedTime }); } }, [formattedTime]); useEffect(() => { if (showAddDialog === false) { resetForm(); } }, [showAddDialog]); return ( handleAddDialog(open)}> Municipio - Create
{alert.show && (

{alert.message}

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