'use client'; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import { account } from '@/lib/appwrite'; import { Models } from '@/lib/appwrite'; import Header from '@/components/Header'; import { FileSpreadsheet, Plus } from 'lucide-react'; import FaturaForm from '@/components/FaturaForm'; import FaturaList from '@/components/FaturaList'; import { useFaturas, FaturaFormData } from '@/hooks/useFaturas'; import { RoleGuard } from '@/components/auth/RoleGuard'; import { UserRole } from '@/types/auth'; import { FaturaDocument } from '@/types/legacyEntities'; const GestaoFaturas = () => { const router = useRouter(); const [user, setUser] = useState | null>(null); const [editing, setEditing] = useState(null); const [activeTab, setActiveTab] = useState<'lista' | 'cadastro'>('lista'); const [searchTerm, setSearchTerm] = useState(''); const { faturas, loading, error, totalFaturas, currentPage, listarFaturas, buscarFaturas, cadastrarFatura, atualizarFatura, deletarFatura, } = useFaturas(); useEffect(() => { const initializeUser = async () => { try { const currentUser = await account.get(); setUser(currentUser); if (activeTab === 'lista') { await listarFaturas(); } } catch (error) { console.error('Usuário não autenticado:', error); router.push('/'); } }; initializeUser(); }, [activeTab, router, listarFaturas]); const handleFormSubmit = async (formData: FaturaFormData): Promise => { if (editing) { const success = await atualizarFatura(editing.$id, formData); if (success) { setEditing(null); setActiveTab('lista'); } return success; } const success = await cadastrarFatura(formData); if (success) { setTimeout(() => setActiveTab('lista'), 2000); } return success; }; const handleEdit = (fatura: FaturaDocument) => { setEditing(fatura); setActiveTab('cadastro'); }; const handleCancelEdit = () => { setEditing(null); setActiveTab('lista'); }; const handlePrevPage = async () => { if (currentPage <= 1) { return; } if (searchTerm.trim()) { await buscarFaturas(searchTerm, currentPage - 1); return; } await listarFaturas(currentPage - 1); }; const handleSearch = async (term: string) => { setSearchTerm(term); if (term.trim()) { await buscarFaturas(term, 1); return; } await listarFaturas(1); }; const handleNextPage = async () => { const totalPages = Math.ceil(totalFaturas / 10); if (currentPage >= totalPages) { return; } if (searchTerm.trim()) { await buscarFaturas(searchTerm, currentPage + 1); return; } await listarFaturas(currentPage + 1); }; if (!user) { return (

Verificando autenticação...

); } return (
{activeTab === 'lista' && ( searchTerm.trim() ? buscarFaturas(searchTerm, currentPage) : listarFaturas(currentPage) } onPrevPage={handlePrevPage} onNextPage={handleNextPage} onSearch={handleSearch} /> )} {activeTab === 'cadastro' && ( )}
); }; export default GestaoFaturas;