import type { Metadata } from "next";
import { db } from "@/lib/db";
import { readJobApiSourcesConfig, readJobSlidesConfig } from "@/lib/jobs-admin-config";
import AdminJobsClient from "./AdminJobsClient";

export const metadata: Metadata = { title: "Admin: Jobs" };

export default async function AdminJobsPage() {
  const [jobs, applications, seekers, slides, apiSources] = await Promise.all([
    db.job.findMany({
      orderBy: [{ postedAt: "desc" }, { createdAt: "desc" }],
      include: { _count: { select: { applications: true } } },
    }),
    db.jobApplication.findMany({
      orderBy: { createdAt: "desc" },
      include: {
        job: { select: { id: true, title: true, company: true } },
        user: {
          select: {
            id: true,
            name: true,
            email: true,
            isActive: true,
            jobSeekerProfile: { select: { resumeUrl: true } },
          },
        },
      },
    }),
    db.user.findMany({
      where: {
        OR: [{ jobSeekerProfile: { isNot: null } }, { jobApplications: { some: {} } }],
      },
      orderBy: { createdAt: "desc" },
      select: {
        id: true,
        name: true,
        email: true,
        isActive: true,
        createdAt: true,
        jobSeekerProfile: {
          select: {
            phone: true,
            skills: true,
            experience: true,
            resumeUrl: true,
          },
        },
        _count: { select: { jobApplications: true } },
      },
    }),
    readJobSlidesConfig(),
    readJobApiSourcesConfig(),
  ]);

  return (
    <AdminJobsClient
      jobs={jobs as never}
      applications={applications as never}
      seekers={seekers as never}
      slides={slides}
      apiSources={apiSources}
    />
  );
}
