Pull Request branch dev-clone to main #1

Merged
gitea merged 429 commits from dev-clone into main 2024-12-23 09:31:34 +00:00
Showing only changes of commit 08e60c6f2f - Show all commits

View File

@ -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
); );
} }
) )