update: revision for endpoint post submit option on asessments
This commit is contained in:
parent
e685c37edf
commit
08e60c6f2f
|
|
@ -585,44 +585,54 @@ 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}`
|
||||||
|
) // Asumsi optionId berkaitan dengan questionId
|
||||||
|
.limit(1);
|
||||||
|
|
||||||
let answer;
|
let answer;
|
||||||
if (existingAnswer.length > 0) {
|
if (existingAnswer.length > 0) {
|
||||||
// Update jika jawaban sudah ada
|
// Update jika jawaban sudah ada
|
||||||
answer = await db
|
answer = await db
|
||||||
.update(answers)
|
.update(answers)
|
||||||
.set({ optionId: optionData.optionId }) // Ubah ke pilihan baru
|
.set({
|
||||||
.where(eq(answers.assessmentId, optionData.assessmentId))
|
optionId: optionData.optionId, // Ubah ke pilihan baru
|
||||||
.returning();
|
isFlagged: optionData.isFlagged ?? existingAnswer[0].isFlagged, // Pertahankan flag jika tidak diubah
|
||||||
} else {
|
filename: optionData.filename ?? existingAnswer[0].filename // Pertahankan filename jika tidak diubah
|
||||||
// Insert jika belum ada jawaban
|
})
|
||||||
answer = await db
|
.where(
|
||||||
.insert(answers)
|
sql`answers.assessmentId = ${optionData.assessmentId}
|
||||||
.values({
|
AND answers.optionId = ${optionData.optionId}`
|
||||||
optionId: optionData.optionId,
|
) // Tambahkan kondisi untuk questionId
|
||||||
assessmentId: optionData.assessmentId,
|
.returning();
|
||||||
isFlagged: optionData.isFlagged ?? false,
|
} else {
|
||||||
filename: optionData.filename ?? null,
|
// Insert jika belum ada jawaban
|
||||||
validationInformation: "", // Placeholder untuk not-null constraint
|
answer = await db
|
||||||
})
|
.insert(answers)
|
||||||
.returning();
|
.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
|
201
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user