"use client"; import { useState, useEffect } from "react"; import { envConfig } from "@/app/lib/config"; import styleprograms from "./programas.module.css"; import axios from "axios"; import Swal from "sweetalert2"; import Cookies from "js-cookie"; interface Programa { id_programa: number; programa: string; } export default function Page() { const [modo, setModo] = useState("ver"); const [programaSeleccionado, setProgramaSeleccionado] = useState(""); const [programas, setProgramas] = useState([]); const [nombrePrograma, setNombrePrograma] = useState(""); const token = Cookies.get("token"); const headers = { Authorization: `Bearer ${token}` }; const cargarProgramas = async () => { try { const response = await axios.get(`${envConfig.apiUrl}/programa/`, { headers } ); setProgramas(response.data); } catch (error: any) { console.error("Error al cargar programas:", error); Swal.fire({ title: "Error al cargar programas", text: error.response?.data?.message || error.message, icon: "error", }); } }; useEffect(() => { cargarProgramas(); }, []); const handleInsertar = async () => { if (!nombrePrograma) return; try { await axios.post(`${envConfig.apiUrl}/programa`, { programa: nombrePrograma, }, { headers } ); await cargarProgramas(); setNombrePrograma(""); setModo("ver"); Swal.fire({ title: "Programa creado correctamente", icon: "success", }); } catch (error: any) { Swal.fire({ title: "Error al insertar", text: error.response?.data?.message || error.message, icon: "error", }); } }; const handleGuardar = async () => { if (!programaSeleccionado) return; try { await axios.patch( `${envConfig.apiUrl}/programa/${programaSeleccionado}`, { programa: nombrePrograma, }, { headers }, ); await cargarProgramas(); setModo("ver"); Swal.fire({ title: "Programa actualizado correctamente", icon: "success", }); } catch (error: any) { Swal.fire({ title: "Error al actualizar", text: error.response?.data?.message || error.message, icon: "error", }); } }; const handleNuevo = () => setModo("nuevo"); const handleCancelar = () => setModo("ver"); const handleEditar = () => { const programa = programas.find( (p) => p.id_programa === Number(programaSeleccionado) ); if (programa) { setNombrePrograma(programa.programa); setModo("editar"); } }; const handleDelete = async () => { if (!programaSeleccionado) return; try { await axios.delete( `${envConfig.apiUrl}/programa/${programaSeleccionado}`, { headers }, ); await cargarProgramas(); setProgramaSeleccionado(""); Swal.fire({ title: "Programa eliminado exitosamente", icon: "success", }); } catch (error: any) { Swal.fire({ title: "Error al eliminar", text: error.response?.data?.message || error.message, icon: "error", }); } }; return (
{modo === "ver" && (

PROGRAMAS

)} {modo === "editar" && (

Editar Programa

setNombrePrograma(e.target.value)} placeholder="Nombre del programa" />
)} {modo === "nuevo" && (

Nuevo Programa

setNombrePrograma(e.target.value)} placeholder="Coloca el programa" />
)}
); } //IO