import Link from "next/link"; import { requireExpert } from "../../lib/auth"; import { listAccountNames } from "../../lib/platform-db"; import { listBeoordelingen, listProjectenVoorExpert } from "../../lib/experts"; import { BONUS_MALUS_OPTIONS, EXPERT_CRITERIA } from "../../lib/rikxCalculatie"; import { logout } from "../tenants/logout"; import { saveBeoordeling, stopImpersonation } from "./actions"; import { ProjectPlanView } from "./ProjectPlanView"; // De enige pagina voor experts: projecten in waardebepaling uit hun rondes, het project plan om te lezen // en hun eigen beoordeling. Experts zien niet wat andere experts hebben ingevuld. export default async function ExpertPage({ searchParams, }: { searchParams: Promise<{ project?: string; opgeslagen?: string; error?: string }>; }) { const expert = await requireExpert(); const { project: projectParam, opgeslagen, error } = await searchParams; const projecten = listProjectenVoorExpert(expert.id); const eigen = listBeoordelingen(projecten.map((p) => p.id)).filter((b) => b.expert_id === expert.id); const impactmakers = new Map(listAccountNames().map((a) => [a.id, a.name])); const gekozen = projecten.find((p) => String(p.id) === projectParam) ?? projecten[0] ?? null; const beoordeling = gekozen ? eigen.find((b) => b.project_id === gekozen.id) ?? null : null; const inputClass = "w-full h-10 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 px-3 text-sm text-zinc-900 dark:text-zinc-100 focus:outline-none focus:ring-2 focus:ring-rikx-orange"; return (
Rikx Expertteam
{expert.name} {!expert.impersonator && (
)}
{expert.impersonator && (
Je bekijkt deze pagina als {expert.name}. Alleen lezen: beoordelingen kun je hier niet opslaan.
)}
{projecten.length === 0 ? (
Er staan op dit moment geen projecten voor je klaar om te beoordelen.
) : (
{gekozen && (

{gekozen.name}

{gekozen.ronde_label} {gekozen.impactmaker_account_id && impactmakers.get(gekozen.impactmaker_account_id) ? ` · Impactmaker: ${impactmakers.get(gekozen.impactmaker_account_id)}` : ""}

Project plan

{/* Bij meekijken door een admin: alles zichtbaar maar niet te wijzigen */}

Jouw waardebepaling

Geef per criterium een rapportcijfer van 1 tot 10. Andere experts zien jouw beoordeling niet.

{opgeslagen &&

Je beoordeling is opgeslagen.

} {error === "meekijken" && (

Niet opgeslagen: je kijkt mee als admin.

)} {error === "score" && (

Niet opgeslagen: cijfers moeten tussen 1 en 10 liggen.

)}
{EXPERT_CRITERIA.map((c) => ( ))}