import { NextResponse } from "next/server";

import { requireSuperAdmin } from "@/lib/authorization";
import {
  listAuthUsers,
  listPermissionCategories,
  listPermissionContractTypes,
  listPermissionEstablishments,
  listPermissionSectors,
} from "@/services/auth-users.service";

export async function GET(request: Request) {
  const auth = await requireSuperAdmin(request);

  if (!auth.ok) {
    return auth.response;
  }

  const url = new URL(request.url);
  const search = url.searchParams.get("search") ?? "";
  const [users, sectors, establishments, categories, contractTypes] =
    await Promise.all([
      listAuthUsers(search),
      listPermissionSectors(),
      listPermissionEstablishments(),
      listPermissionCategories(),
      listPermissionContractTypes(),
    ]);

  return NextResponse.json({
    message: "Users retrieved successfully",
    actor: auth.principal,
    items: users,
    sectors: sectors.map((sector) => ({
      id: sector.id,
      name: sector.secteurs,
    })),
    establishments: establishments.map((establishment) => ({
      id: establishment.id,
      name: establishment.etb,
      company: establishment.entreprise,
    })),
    categories,
    contractTypes: contractTypes.map((contractType) => ({
      id: contractType.id,
      name: contractType.tcs,
    })),
  });
}
