diff --git a/pages/SuperAdmin.tsx b/pages/SuperAdmin.tsx index 8c94b6d..9dab432 100644 --- a/pages/SuperAdmin.tsx +++ b/pages/SuperAdmin.tsx @@ -3,7 +3,7 @@ import { Building2, Users, MessageSquare, Plus, Search, Edit, Trash2, ChevronDown, ChevronUp, ChevronsUpDown, X } from 'lucide-react'; -import { TENANTS } from '../constants'; +import { getTenants, createTenant } from '../services/dataService'; import { Tenant } from '../types'; import { DateRangePicker } from '../components/DateRangePicker'; import { KPICard } from '../components/KPICard'; @@ -15,7 +15,8 @@ export const SuperAdmin: React.FC = () => { }); const [selectedTenantId, setSelectedTenantId] = useState('all'); const [searchQuery, setSearchQuery] = useState(''); - const [tenants, setTenants] = useState(TENANTS); + const [tenants, setTenants] = useState([]); + const [loading, setLoading] = useState(true); const [isModalOpen, setIsModalOpen] = useState(false); const [editingTenant, setEditingTenant] = useState(null); @@ -23,6 +24,18 @@ export const SuperAdmin: React.FC = () => { const [sortKey, setSortKey] = useState('created_at'); const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('desc'); + // Load Tenants from API + const loadTenants = async () => { + setLoading(true); + const data = await getTenants(); + setTenants(data); + setLoading(false); + }; + + React.useEffect(() => { + loadTenants(); + }, []); + // --- Metrics --- const totalTenants = tenants.length; const totalUsersGlobal = tenants.reduce((acc, t) => acc + (t.user_count || 0), 0); @@ -82,12 +95,25 @@ export const SuperAdmin: React.FC = () => { } }; - const handleSaveTenant = (e: React.FormEvent) => { + const handleSaveTenant = async (e: React.FormEvent) => { e.preventDefault(); - // Logic to save (mock) - setIsModalOpen(false); - setEditingTenant(null); - alert('Organização salva com sucesso (Mock)'); + const form = e.target as HTMLFormElement; + + const name = (form.elements.namedItem('name') as HTMLInputElement).value; + const slug = (form.elements.namedItem('slug') as HTMLInputElement).value; + const admin_email = (form.elements.namedItem('admin_email') as HTMLInputElement).value; + const status = (form.elements.namedItem('status') as HTMLSelectElement).value; + + const success = await createTenant({ name, slug, admin_email, status }); + + if (success) { + setIsModalOpen(false); + setEditingTenant(null); + loadTenants(); // Reload list + alert('Organização salva com sucesso!'); + } else { + alert('Erro ao salvar organização. Verifique o console.'); + } }; // --- Helper Components --- @@ -293,6 +319,7 @@ export const SuperAdmin: React.FC = () => { { {