import { useState } from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Search, Plus, Filter, Download, Upload } from 'lucide-react'; import { EquipamentosTable } from '@/components/equipamentos/EquipamentosTable'; import { EquipamentosFilters } from '@/components/equipamentos/EquipamentosFilters'; import { EquipamentosStats } from '@/components/equipamentos/EquipamentosStats'; import { EquipamentoModal } from '@/components/equipamentos/EquipamentoModal'; import { useEquipamentos } from '@/hooks/useEquipamentos'; import { useUserRole } from '@/hooks/useUserRole'; import { usePermissionControl } from '@/hooks/usePermissionControl'; import { EquipamentoLoanControl } from '@/components/equipamentos/EquipamentoLoanControl'; const Equipamentos = () => { const { canCreate } = usePermissionControl(); const { isAdmin } = useUserRole(); const [searchTerm, setSearchTerm] = useState(''); const [showFilters, setShowFilters] = useState(false); const [showModal, setShowModal] = useState(false); const [editingEquipamento, setEditingEquipamento] = useState(null); const { equipamentos, isLoading, loading, filters, updateFilters, clearFilters, createEquipamento, updateEquipamento, deleteEquipamento, stats } = useEquipamentos(); const filteredEquipamentos = equipamentos.filter(equip => equip.codigo.toLowerCase().includes(searchTerm.toLowerCase()) || equip.descricao.toLowerCase().includes(searchTerm.toLowerCase()) ); const handleEdit = (equipamento: any) => { setEditingEquipamento(equipamento); setShowModal(true); }; const handleCloseModal = () => { setShowModal(false); setEditingEquipamento(null); }; const handleSave = async (data: any) => { try { if (editingEquipamento) { await updateEquipamento.mutateAsync({ id: editingEquipamento.id, data }); } else { await createEquipamento.mutateAsync(data); } handleCloseModal(); } catch (error) { console.error('Erro ao salvar equipamento:', error); } }; const handleDelete = (id: string) => { deleteEquipamento.mutate(id); }; const [loanControlOpen, setLoanControlOpen] = useState(false); const [selectedEquipamento, setSelectedEquipamento] = useState(null); const handleLoanControl = (equipamento: any) => { setSelectedEquipamento(equipamento); setLoanControlOpen(true); }; if (isLoading || loading) { return (
); } return (

Equipamentos

Gerencie equipamentos e máquinas

{canCreate && ( )}
Lista de Equipamentos
setSearchTerm(e.target.value)} className="pl-10 w-full sm:w-64" />
{isAdmin && ( <> )}
{showFilters && ( updateFilters({ search: value })} onStatusChange={(value) => updateFilters({ status: value })} onPropriedadeChange={(value) => updateFilters({ propriedade: value })} onResetFilters={clearFilters} /> )}
{/* Modal de controle de empréstimo */} {selectedEquipamento && ( { setLoanControlOpen(false); setSelectedEquipamento(null); }} equipamento={selectedEquipamento} /> )}
); }; export default Equipamentos;