update: revision for endpoint post submit option in assessments
This commit is contained in:
parent
08e60c6f2f
commit
49b6fac174
|
|
@ -28,6 +28,7 @@ export const answerFormSchema = z.object({
|
|||
export const optionFormSchema = z.object({
|
||||
optionId: z.string().min(1),
|
||||
assessmentId: z.string().min(1),
|
||||
questionId: z.string().min(1),
|
||||
isFlagged: z.boolean().optional().default(false),
|
||||
filename: z.string().optional(),
|
||||
});
|
||||
|
|
@ -582,19 +583,21 @@ const assessmentsRoute = new Hono<HonoEnv>()
|
|||
|
||||
.post(
|
||||
"/submitOption",
|
||||
// checkPermission("assessments.submitAnswer"),
|
||||
// checkPermission("assessments.submitOption"),
|
||||
requestValidator("json", optionFormSchema),
|
||||
async (c) => {
|
||||
const optionData = c.req.valid("json");
|
||||
|
||||
// Cek apakah jawaban sudah ada berdasarkan assessmentId dan optionId
|
||||
// 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 answers.optionId = ${optionData.optionId}`
|
||||
) // Asumsi optionId berkaitan dengan questionId
|
||||
sql`answers."assessmentId" = ${optionData.assessmentId}
|
||||
AND questions.id = ${optionData.questionId}`
|
||||
)
|
||||
.limit(1);
|
||||
|
||||
let answer;
|
||||
|
|
@ -604,13 +607,13 @@ const assessmentsRoute = new Hono<HonoEnv>()
|
|||
.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
|
||||
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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user