'use client'; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import { account } from '@/lib/appwrite'; import { Models } from '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'; 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, setCurrentPage } = useFaturas(); // šŸ” Verificar autenticação 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; } else { const success = await cadastrarFatura(formData); if (success) { setTimeout(() => setActiveTab('lista'), 2000); } return success; } }; const handleEdit = (fatura: Models.Document) => { setEditing(fatura); setActiveTab('cadastro'); }; const handleCancelEdit = () => { setEditing(null); setActiveTab('lista'); }; const handlePrevPage = async () => { if (currentPage > 1) { if (searchTerm.trim()) { await buscarFaturas(searchTerm, currentPage - 1); } else { await listarFaturas(currentPage - 1); } } }; const handleSearch = async (term: string) => { setSearchTerm(term); if (term.trim()) { await buscarFaturas(term, 1); } else { await listarFaturas(1); } }; const handleNextPage = async () => { const totalPages = Math.ceil(totalFaturas / 10); if (currentPage < totalPages) { if (searchTerm.trim()) { await buscarFaturas(searchTerm, currentPage + 1); } else { await listarFaturas(currentPage + 1); } } }; if (!user) { return (

Verificando autenticação...

); } return (
{/* Navegação por Tabs */}
{/* ConteĆŗdo das Tabs */} {activeTab === 'lista' && ( searchTerm.trim() ? buscarFaturas(searchTerm, currentPage) : listarFaturas(currentPage) } onPrevPage={handlePrevPage} onNextPage={handleNextPage} onSearch={handleSearch} /> )} {activeTab === 'cadastro' && ( )}
); }; export default GestaoFaturas;