"use client"

import { useState, useEffect } from "react"

export interface CatalogoItem {
    id: number
    nombre: string
    tipo?: string
    jurisdiccion_tipo?: string
}

export interface CatalogosData {
    formas_juridicas: CatalogoItem[]
    jurisdicciones: CatalogoItem[]
    organismos: CatalogoItem[]
}

export function useCatalogos() {
    const [catalogos, setCatalogos] = useState<CatalogosData>({
        formas_juridicas: [],
        jurisdicciones: [],
        organismos: [],
    })
    const [isLoading, setIsLoading] = useState(true)
    const [error, setError] = useState<string | null>(null)

    useEffect(() => {
        const fetchCatalogos = async () => {
            try {
                const token = localStorage.getItem("token")
                if (!token) return

                const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/catalogos`, {
                    headers: {
                        Authorization: `Bearer ${token}`,
                        Accept: "application/json",
                    },
                })

                if (!response.ok) {
                    const text = await response.text()
                    console.error("Error fetching catalogos:", response.status, text)
                    throw new Error(`Error al cargar catálogos: ${response.status}`)
                }

                const data = await response.json()
                setCatalogos(data)
            } catch (err) {
                console.error(err)
                setError("No se pudieron cargar los datos necesarios")
            } finally {
                setIsLoading(false)
            }
        }

        fetchCatalogos()
    }, [])

    return { catalogos, isLoading, error }
}
