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