update: adjustments to the submitOption endpoint with the new concept of assessments
This commit is contained in:
parent
8610f4f233
commit
8788310621
|
|
@ -608,6 +608,64 @@ const assessmentsRoute = new Hono<HonoEnv>()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// .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(
|
.post(
|
||||||
"/submitOption",
|
"/submitOption",
|
||||||
checkPermission("assessments.submitOption"),
|
checkPermission("assessments.submitOption"),
|
||||||
|
|
@ -615,53 +673,26 @@ const assessmentsRoute = new Hono<HonoEnv>()
|
||||||
async (c) => {
|
async (c) => {
|
||||||
const optionData = c.req.valid("json");
|
const optionData = c.req.valid("json");
|
||||||
|
|
||||||
// Cek apakah jawaban sudah ada berdasarkan assessmentId dan questionId
|
// Update jawaban yang ada berdasarkan assessmentId dan questionId
|
||||||
const existingAnswer = await db
|
const answer = 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)
|
.update(answers)
|
||||||
.set({
|
.set({
|
||||||
optionId: optionData.optionId, // Ubah ke pilihan baru
|
optionId: optionData.optionId, // Ubah ke pilihan baru
|
||||||
})
|
})
|
||||||
.where(
|
.where(
|
||||||
sql`answers."assessmentId" = ${optionData.assessmentId}
|
and(
|
||||||
AND answers."optionId" IN (
|
eq(answers.assessmentId, optionData.assessmentId),
|
||||||
SELECT id FROM options WHERE "questionId" = ${optionData.questionId}
|
eq(answers.questionId, optionData.questionId)
|
||||||
)` // Mendapatkan optionId berdasarkan questionId
|
)
|
||||||
)
|
)
|
||||||
.returning();
|
.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(
|
return c.json(
|
||||||
{
|
{
|
||||||
message: "Option submitted successfully",
|
message: "Option submitted successfully",
|
||||||
answer: answer[0],
|
answer: answer[0],
|
||||||
},
|
},
|
||||||
201
|
200
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user