import { Metadata } from "next";
import { notFound } from "next/navigation";
import { getTranslations } from "next-intl/server";
import { JobEditor } from "@/components/dashboard/job/job-editor";
import { DashboardLayout, DashboardBreadcrump } from "@/components/layout/dashboard";
import { createHelpers } from "@/lib/trpc/server";
import { Routes } from "@/config/routes";

type Props = {
    params: Promise<{ id: string; }>;
};

export async function generateMetadata({ params }: Props): Promise<Metadata> {
    const { id } = await params;
    const helpers = await createHelpers();
    const t = await getTranslations("dashboard.job");

    const job = await helpers.job.get.fetch({
        access: "dashboard",
        id
    });

    if(!job) {
        return {
            title: t("notFound.title"),
            description: t("notFound.description")
        };
    }

    return {
        title: `${t("editor.update.title")}: ${job.title || 'Untitled Job'}`,
        description: `${t("editor.update.description")}: ${job.title || 'this job'}`
    };
}

export default async function Page({ params }: Props) {
    const { id } = await params;
    const helpers = await createHelpers();
    const t = await getTranslations("dashboard.job");

    const job = await helpers.job.get.fetch({
        access: "dashboard",
        id
    });

    if(!job) {
        notFound();
    }

    return (
        <DashboardLayout
          title={t("editor.update.title")}
          description={t("editor.update.description")}
          back={Routes.DASHBOARD.JOB_LIST}>
            <DashboardBreadcrump>
                <DashboardBreadcrump.Item href={Routes.DASHBOARD.JOB_LIST}>
                    {t("list.title")}
                </DashboardBreadcrump.Item>

                <DashboardBreadcrump.Item active>
                    {t("editor.update.title")}
                </DashboardBreadcrump.Item>
            </DashboardBreadcrump>

            <JobEditor
              mode="edit"
              id={job.id}
              job={job} />
        </DashboardLayout>
    );
}
