'use client' import { useState, useEffect } from 'react' import { EmpresaService } from '../services/EmpresaService' import type { Empresa, Inserts, Updates } from '@pedrohccs/shared-libs' export function useEmpresas() { const [empresas, setEmpresas] = useState([]) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const listar = async () => { try { setLoading(true) setError(null) const data = await EmpresaService.listar() setEmpresas(data) } catch (err) { setError(err instanceof Error ? err.message : 'Erro ao carregar empresas') } finally { setLoading(false) } } const criar = async (empresa: Inserts<'empresas'>) => { try { setError(null) const novaEmpresa = await EmpresaService.criar(empresa) setEmpresas(prev => [...prev, novaEmpresa]) return novaEmpresa } catch (err) { const message = err instanceof Error ? err.message : 'Erro ao criar empresa' setError(message) throw new Error(message) } } const atualizar = async (id: string, empresa: Updates<'empresas'>) => { try { setError(null) const empresaAtualizada = await EmpresaService.atualizar(id, empresa) setEmpresas(prev => prev.map(emp => emp.id === id ? empresaAtualizada : emp) ) return empresaAtualizada } catch (err) { const message = err instanceof Error ? err.message : 'Erro ao atualizar empresa' setError(message) throw new Error(message) } } const desativar = async (id: string) => { try { setError(null) await EmpresaService.desativar(id) setEmpresas(prev => prev.filter(emp => emp.id !== id)) } catch (err) { const message = err instanceof Error ? err.message : 'Erro ao desativar empresa' setError(message) throw new Error(message) } } useEffect(() => { listar() }, []) return { empresas, loading, error, listar, criar, atualizar, desativar, clearError: () => setError(null) } } export function useEmpresa(id?: string) { const [empresa, setEmpresa] = useState(null) const [loading, setLoading] = useState(!!id) const [error, setError] = useState(null) const buscar = async (empresaId: string) => { try { setLoading(true) setError(null) const data = await EmpresaService.buscarPorId(empresaId) setEmpresa(data) } catch (err) { setError(err instanceof Error ? err.message : 'Erro ao carregar empresa') } finally { setLoading(false) } } useEffect(() => { if (id) { buscar(id) } }, [id]) return { empresa, loading, error, buscar, clearError: () => setError(null) } }