import { redirect } from "next/navigation";
import { getCurrentUser } from "@/lib/auth/user";
import { listAllUsers, listAgenciesForSelection } from "@/lib/services/admin.service";
import { UserManager } from "@/components/admin/user-manager";
import { Users, Crown, ShieldCheck } from "lucide-react";
import Link from "next/link";
import { Button } from "@/components/ui/button";

export default async function AdminUsersPage() {
  const user = await getCurrentUser();
  if (!user) return null;

  // Restricted to Super Admins or authorized staff managers
  if (!user.roles.includes("SUPER_ADMIN") && !user.permissions.includes("employee:manage")) {
    redirect("/admin/properties");
  }

  const [{ users }, agencies] = await Promise.all([
    listAllUsers(user),
    listAgenciesForSelection(user),
  ]);

  return (
    <div className="space-y-6">
      {/* Header with Navigation Link */}
      <div className="flex flex-col sm:flex-row sm:items-center justify-between gap-4 pb-4 border-b border-border">
        <div>
          <h1 className="text-xl sm:text-2xl font-bold tracking-tight text-foreground">
            User Directory
          </h1>
        </div>

        <div className="flex items-center gap-2 self-start sm:self-auto">
          <Link href="/admin/employees">
            <Button variant="outline" size="sm" className="text-xs gap-1.5 cursor-pointer rounded-md h-8 px-3 border-border bg-card shadow-2xs hover:bg-muted">
              <ShieldCheck className="w-3.5 h-3.5 text-muted-foreground" />
              Staff Permissions Desk
            </Button>
          </Link>
        </div>
      </div>

      <UserManager initialUsers={users} agencies={agencies} />
    </div>
  );
}
