import { apiConfig } from '@/config/api.config'; import { useManageAldeiasContext } from '../hooks/useManageAldeiasContext'; 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'; import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'; import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '@/components/ui/command'; import { doSaveLogActivity } from '@/actions/GlobalActions'; interface SucosProps { sucos_id: number; sucos_name: string; } const API_URL = apiConfig.service_master_data; const EditDialog = () => { const { showEditDialog, handleEditDialog, selectedAldeias, aldeias } = useManageAldeiasContext(); const { reload } = useDataGrid(); const { PutData, GetData } = useCallApi(); const parsedUser = getAuth()?.user; const [sucos, setSucos] = useState([]); const [open, setOpen] = useState(false); const [alert, setAlert] = useState({ show: false, message: '' }); const initialState = { name: '', sucosId: 0, updated_by: '', updated_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 doUpdateAldeias = useCallback( async (e: React.FormEvent) => { e.preventDefault(); const response = await PutData(`${API_URL}/aldeias/update/${selectedAldeias}`, formField); if (response?.status) { resetForm(); handleEditDialog(false, null); toast.success('Success Update Aldeia'); reload(); const createActivity = { module: 'Manage Aldeia', description: `Edit Aldeia => ${selectedAldeias}`, action: 'U' }; doSaveLogActivity(createActivity); } else { toast.error('Error Update Aldeia'); setAlert({ show: true, message: 'Error Update Aldeia' }); } }, [selectedAldeias, formField] ); const doFetchSucos = async (sorting: any) => { try { sorting = sorting.length == 0 ? [{ id: 'name', desc: false }] : sorting; const response = await GetData(`${API_URL}/sucos/list`, { limit: 1000, page: 1, with_deleted: false, order_field: sorting[0].id, order_direction: sorting[0].desc == false ? 'ASC' : 'DESC' }); // console.log('SUCOS', response?.data); setSucos(response?.data.list); } catch (error) { console.error('Error fetching Sucos', error); setAlert({ show: true, message: 'Failed to get Sucos. Please try again.' }); } }; const doFetchData = useCallback(async (id: string) => { const response = await GetData(`${API_URL}/aldeias/getdata/${id}`, { id }); if (response?.status) { setFormField((prev) => ({ ...prev, name: response.data.name, sucosId: response.data.sucos.id })); } else { setFormField((prev) => ({ ...prev, name: '', sucosId: 0 })); } }, []); const handleUpdate = (e: React.FormEvent) => { e.preventDefault(); if (formField.name === '' || formField.sucosId === 0) { setAlert({ show: true, message: 'Please fill in all required fields.' }); return; } doUpdateAldeias(e); console.log(formField); setAlert({ show: false, message: '' }); }; useEffect(() => { if (selectedAldeias) { doFetchData(selectedAldeias); } }, [selectedAldeias]); useEffect(() => { if (showEditDialog === false) { resetForm(); } }, [showEditDialog]); useEffect(() => { if (showEditDialog) { setFormField({ ...formField, updated_by: parsedUser?.username, updated_at: formattedTime }); } }, [formattedTime]); useEffect(() => { doFetchSucos([{ id: 'name', desc: false }]); }, []); return ( handleEditDialog(open, null)}> Aldeia - Update
{alert.show && (

{alert.message}

)}
setFormField({ ...formField, name: e.target.value })} />
No Sucos found. {sucos.map((suco) => ( { setFormField({ ...formField, sucosId: suco.sucos_id }); setOpen(false); }} > {suco.sucos_name} ))}
); }; export default EditDialog;