update: revision for endpoint post submit option on asessments

This commit is contained in:
falendikategar 2024-10-17 11:14:49 +07:00
parent e685c37edf
commit 08e60c6f2f

View File

@ -585,44 +585,54 @@ const assessmentsRoute = new Hono<HonoEnv>()
// checkPermission("assessments.submitAnswer"),
requestValidator("json", optionFormSchema),
async (c) => {
const optionData = c.req.valid("json");
const optionData = c.req.valid("json");
// Cek apakah jawaban sudah ada berdasarkan assessmentId
const existingAnswer = await db
.select()
.from(answers)
.where(eq(answers.assessmentId, optionData.assessmentId))
.limit(1);
// Cek apakah jawaban sudah ada berdasarkan assessmentId dan optionId
const existingAnswer = await db
.select()
.from(answers)
.where(
sql`answers.assessmentId = ${optionData.assessmentId}
AND answers.optionId = ${optionData.optionId}`
) // Asumsi optionId berkaitan dengan 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(eq(answers.assessmentId, optionData.assessmentId))
.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();
}
let answer;
if (existingAnswer.length > 0) {
// Update jika jawaban sudah ada
answer = await db
.update(answers)
.set({
optionId: optionData.optionId, // Ubah ke pilihan baru
isFlagged: optionData.isFlagged ?? existingAnswer[0].isFlagged, // Pertahankan flag jika tidak diubah
filename: optionData.filename ?? existingAnswer[0].filename // Pertahankan filename jika tidak diubah
})
.where(
sql`answers.assessmentId = ${optionData.assessmentId}
AND answers.optionId = ${optionData.optionId}`
) // Tambahkan kondisi untuk 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
);
return c.json(
{
message: "Option submitted successfully",
answer: answer[0],
},
201
);
}
)