"use client"; import axios from "axios"; import { envConfig } from "@/app/lib/config"; import { useState } from "react"; import toast from "react-hot-toast"; interface Data { nombre_equipo: string; id_equipo: number; id_plataforma: number; id_area_ubicacion: number; ubicacion: string; ip: string; } interface Plataforma { id_plataforma: number; nombre: string; } interface Area { id_area_ubicacion: number; area: string; extra: string; } export default function Equipos() { const [id, setId] = useState(""); const [data, setData] = useState(null); const [plataforma, setPlataforma] = useState([]); const [area, setArea] = useState([]); const [ubicacion, setUbicacion] = useState(""); const [nombre, setNombre] = useState(""); const [idPlataforma, setIdPlataforma] = useState(""); const [idArea, setIdArea] = useState(""); const [isEditing, setIsEditing] = useState(false); const [isCreating, setIsCreating] = useState(false); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); const [equipoRes, plataformaRes, areaRes] = await Promise.all([ axios.get(`${envConfig.apiUrl}/equipo/${id}`), axios.get(`${envConfig.apiUrl}/alumno-inscrito/plataforma`), axios.get(`${envConfig.apiUrl}/area-ubicacion`), ]); const equipo = equipoRes.data as Data; setData(equipo); setNombre(equipo.nombre_equipo); setUbicacion(equipo.ubicacion); setIdPlataforma(equipo.id_plataforma); setIdArea(equipo.id_area_ubicacion); setPlataforma(plataformaRes.data); setArea(areaRes.data); }; const handleSave = async () => { if (!data) return; try { await axios.patch(`${envConfig.apiUrl}/equipo`, { id_equipo: data.id_equipo, nombre_equipo: nombre, ubicacion: ubicacion, id_plataforma: idPlataforma, id_area_ubicacion: idArea, ip: data.ip, }); // Actualiza el estado local setData({ ...data, nombre_equipo: nombre, ubicacion, id_plataforma: idPlataforma as number, id_area_ubicacion: idArea as number, }); setIsEditing(false); toast.success("Equipo actualizado correctamente"); } catch (error) { console.error(error); toast.error("Error al guardar el equipo"); } }; const handleNuevo = async () => { try { const [plataformaRes, areaRes] = await Promise.all([ axios.get(`${envConfig.apiUrl}/alumno-inscrito/plataforma`), axios.get(`${envConfig.apiUrl}/area-ubicacion`), ]); setPlataforma(plataformaRes.data); setArea(areaRes.data); setData({ id_equipo: 0, nombre_equipo: "", ubicacion: "", id_plataforma: 0, id_area_ubicacion: 0, ip: "", }); setNombre(""); setUbicacion(""); setIdPlataforma(""); setIdArea(""); setIsCreating(true); setIsEditing(true); } catch (error) { toast.error("Error al preparar formulario"); } }; const handleCreate = async () => { try { await axios.post(`${envConfig.apiUrl}/equipo`, { nombre_equipo: nombre, ubicacion, id_plataforma: idPlataforma, id_area_ubicacion: idArea, ip: "0.0.0.0", }); toast.success("Equipo creado correctamente"); setIsCreating(false); setIsEditing(false); setData(null); } catch (error: any) { const message = error?.response?.data?.message || "Error al crear el equipo"; toast.error(message); } }; return (
{!isCreating && (
setId(e.target.value)} />
)} {data && (
setUbicacion(e.target.value)} /> setNombre(e.target.value)} />
{isEditing ? ( <> ) : ( <> )}
)}
); }