"use client"; import { useEffect, useState } from "react"; import { Search, Building2, RefreshCw, Users } from "lucide-react"; import { AdminLayout } from "@/components/admin/admin-layout"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { useLanguage } from "@/components/language-provider"; interface Org { id: string; name: string; slug: string; description: string; is_active: boolean; created_at: string; member_count: number; user_role: string; } export default function AdminOrganizationsPage() { const { lang, dir } = useLanguage(); const [orgs, setOrgs] = useState([]); const [loading, setLoading] = useState(true); const [search, setSearch] = useState(""); useEffect(() => { const token = localStorage.getItem("access_token"); if (!token) { window.location.href = "/login?redirect=/admin/organizations"; return; } const fetchData = async () => { const baseURL = process.env.NEXT_PUBLIC_API_URL; const qs = new URLSearchParams(); if (search) qs.set("search", search); try { const res = await fetch(`${baseURL}/organizations/?${qs.toString()}`, { headers: { Authorization: `Bearer ${token}` }, }); const data = await res.json(); setOrgs(data.results || []); } catch (e) { console.error(e); } finally { setLoading(false); } }; const timer = setTimeout(fetchData, search ? 500 : 0); return () => clearTimeout(timer); }, [search]); const t = (fa: string, en: string) => (lang === "fa" ? fa : en); if (loading) { return (
); } return (

{t("سازمان\u200cها", "Organizations")}

setSearch(e.target.value)} className="w-full pl-12 pr-4 py-2.5 rounded-lg border border-white/10 bg-white/5 text-white focus:outline-none focus:ring-2 focus:ring-brand-500/50" dir={dir} />
{orgs.map((org) => ( ))}
{t("سازمان", "Organization")} {t("وضعیت", "Status")} {t("اعضا", "Members")} {t("نقش شما", "Your Role")} {t("ساخته شده", "Created")}
{org.name}
{org.slug}
{org.is_active ? t("فعال", "Active") : t("غیرفعال", "Inactive")} {org.member_count} {t(org.user_role, org.user_role)} {new Date(org.created_at).toLocaleDateString(lang === "fa" ? "fa-IR" : "en-US")}
{orgs.length === 0 && !loading && (
{t("سازمانی یافت نشد", "No organizations found")}
)}
); }