diff --git a/src/app/judging/[id]/ProjectScoringPage.tsx b/src/app/judging/[id]/ProjectScoringPage.tsx index 23f83b2..389226b 100644 --- a/src/app/judging/[id]/ProjectScoringPage.tsx +++ b/src/app/judging/[id]/ProjectScoringPage.tsx @@ -17,10 +17,12 @@ export default function ProjectScoringPage({ project, questions, existingScores, + existingFeedback, }: { project: Project; questions: JudgingQuestion[]; existingScores: JudgingScore[]; + existingFeedback: string | null; }) { const router = useRouter(); @@ -28,8 +30,11 @@ export default function ProjectScoringPage({ const [scores, setScores] = useState>( Object.fromEntries(existingScores.map((s) => [s.questionId, s.score])), ); + const [feedback, setFeedback] = useState( + existingFeedback === null ? "" : existingFeedback, + ); + const [completing, setCompleting] = useState(false); - const [feedback, setFeedback] = useState(""); // All questions must have a defined score before the judge can mark complete. const allScored = diff --git a/src/app/judging/[id]/page.tsx b/src/app/judging/[id]/page.tsx index db8ea0e..aa69e88 100644 --- a/src/app/judging/[id]/page.tsx +++ b/src/app/judging/[id]/page.tsx @@ -4,6 +4,7 @@ import { getProject, getJudgingQuestions, getScoresForProject, + getFeedback, } from "@/src/util/db/judge"; import ProjectScoringPage from "./ProjectScoringPage"; import { ensureJudgePermission } from "@/src/util/judge"; @@ -28,11 +29,14 @@ export default async function Page({ getScoresForProject(session.user!.id, projectId), ]); + const existingFeedback = await getFeedback(projectId, session.user!.id); + return ( ); } diff --git a/src/util/db/judge.ts b/src/util/db/judge.ts index 267f923..1f81e78 100644 --- a/src/util/db/judge.ts +++ b/src/util/db/judge.ts @@ -161,6 +161,29 @@ export async function getTrack(trackId: number): Promise { }; } +/** + * This function returns the feedback that a specific judge left on a specific project + * + * @param projectId This is the id of the project + * @param judgeId This is the id of the judge + * @returns String that is the feedback + */ +export async function getFeedback( + projectId: number, + judgeId: number, +): Promise { + const data = + await sql`SELECT feedback FROM judge_assignments WHERE project_id = ${projectId} and judge_id = ${judgeId}`; + + if (data.length === 0) { + return null; + } + + const row = data[0]; + + return row.feedback; +} + /** * Returns all tracks. */