diff --git a/apps/backend/src/routes/assessments/route.ts b/apps/backend/src/routes/assessments/route.ts index 05ed66c..ca016ff 100644 --- a/apps/backend/src/routes/assessments/route.ts +++ b/apps/backend/src/routes/assessments/route.ts @@ -608,6 +608,64 @@ const assessmentsRoute = new Hono() } ) + // .post( + // "/submitOption", + // checkPermission("assessments.submitOption"), + // requestValidator("json", optionFormSchema), + // async (c) => { + // const optionData = c.req.valid("json"); + + // // Cek apakah jawaban sudah ada berdasarkan assessmentId dan questionId + // const existingAnswer = await db + // .select() + // .from(answers) + // .leftJoin(options, eq(answers.optionId, options.id)) + // .leftJoin(questions, eq(options.questionId, questions.id)) + // .where( + // sql`answers."assessmentId" = ${optionData.assessmentId} + // AND questions.id = ${optionData.questionId}` + // ) + // .limit(1); + + // let answer; + // if (existingAnswer.length > 0) { + // // Update jika jawaban sudah ada + // answer = await db + // .update(answers) + // .set({ + // optionId: optionData.optionId, // Ubah ke pilihan baru + // }) + // .where( + // sql`answers."assessmentId" = ${optionData.assessmentId} + // AND answers."optionId" IN ( + // SELECT id FROM options WHERE "questionId" = ${optionData.questionId} + // )` // Mendapatkan optionId berdasarkan questionId + // ) + // .returning(); + // } else { + // // Insert jika belum ada jawaban + // answer = await db + // .insert(answers) + // .values({ + // optionId: optionData.optionId, + // assessmentId: optionData.assessmentId, + // isFlagged: optionData.isFlagged ?? false, + // filename: optionData.filename ?? null, + // validationInformation: "", // Placeholder untuk not-null constraint + // }) + // .returning(); + // } + + // return c.json( + // { + // message: "Option submitted successfully", + // answer: answer[0], + // }, + // 201 + // ); + // } + // ) + .post( "/submitOption", checkPermission("assessments.submitOption"), @@ -615,53 +673,26 @@ const assessmentsRoute = new Hono() async (c) => { const optionData = c.req.valid("json"); - // Cek apakah jawaban sudah ada berdasarkan assessmentId dan questionId - const existingAnswer = await db - .select() - .from(answers) - .leftJoin(options, eq(answers.optionId, options.id)) - .leftJoin(questions, eq(options.questionId, questions.id)) - .where( - sql`answers."assessmentId" = ${optionData.assessmentId} - AND questions.id = ${optionData.questionId}` - ) - .limit(1); - - let answer; - if (existingAnswer.length > 0) { - // Update jika jawaban sudah ada - answer = await db + // Update jawaban yang ada berdasarkan assessmentId dan questionId + const answer = await db .update(answers) - .set({ + .set({ optionId: optionData.optionId, // Ubah ke pilihan baru }) .where( - sql`answers."assessmentId" = ${optionData.assessmentId} - AND answers."optionId" IN ( - SELECT id FROM options WHERE "questionId" = ${optionData.questionId} - )` // Mendapatkan optionId berdasarkan questionId + and( + eq(answers.assessmentId, optionData.assessmentId), + eq(answers.questionId, optionData.questionId) + ) ) .returning(); - } else { - // Insert jika belum ada jawaban - answer = await db - .insert(answers) - .values({ - optionId: optionData.optionId, - assessmentId: optionData.assessmentId, - isFlagged: optionData.isFlagged ?? false, - filename: optionData.filename ?? null, - validationInformation: "", // Placeholder untuk not-null constraint - }) - .returning(); - } return c.json( { message: "Option submitted successfully", answer: answer[0], }, - 201 + 200 ); } )