update: revision for endpoint post submit validation in assessments
This commit is contained in:
parent
b1521fb563
commit
66f29aed8f
|
|
@ -35,7 +35,8 @@ export const optionFormSchema = z.object({
|
||||||
|
|
||||||
// validationFormSchema: untuk /submitValidation
|
// validationFormSchema: untuk /submitValidation
|
||||||
export const validationFormSchema = z.object({
|
export const validationFormSchema = z.object({
|
||||||
assessmentId: z.number(),
|
assessmentId: z.string().min(1),
|
||||||
|
questionId: z.string().min(1),
|
||||||
validationInformation: z.string().min(1, "Validation information is required"),
|
validationInformation: z.string().min(1, "Validation information is required"),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -644,23 +645,54 @@ const assessmentsRoute = new Hono<HonoEnv>()
|
||||||
// checkPermission("assessments.submitValidation"),
|
// checkPermission("assessments.submitValidation"),
|
||||||
requestValidator("json", validationFormSchema),
|
requestValidator("json", validationFormSchema),
|
||||||
async (c) => {
|
async (c) => {
|
||||||
const validationData = c.req.valid("json");
|
const validationData = c.req.valid("json");
|
||||||
|
|
||||||
const updatedAnswer = await db
|
// Cek apakah jawaban ada berdasarkan assessmentId dan questionId
|
||||||
.update(answers)
|
const existingAnswer = await db
|
||||||
.set({
|
.select()
|
||||||
validationInformation: validationData.validationInformation,
|
.from(answers)
|
||||||
})
|
.leftJoin(options, eq(answers.optionId, options.id))
|
||||||
.where(eq(answers.assessmentId, String(validationData.assessmentId)))
|
.leftJoin(questions, eq(options.questionId, questions.id))
|
||||||
.returning();
|
.where(
|
||||||
|
sql`answers."assessmentId" = ${validationData.assessmentId}
|
||||||
|
AND questions.id = ${validationData.questionId}`
|
||||||
|
)
|
||||||
|
.limit(1);
|
||||||
|
|
||||||
return c.json(
|
if (existingAnswer.length === 0) {
|
||||||
{
|
return c.json(
|
||||||
message: "Validation information updated successfully",
|
{
|
||||||
answer: updatedAnswer[0],
|
message: "No existing answer found for the given assessmentId and questionId.",
|
||||||
},
|
},
|
||||||
200
|
404
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dapatkan tanggal dan waktu saat ini
|
||||||
|
const currentDate = new Date();
|
||||||
|
|
||||||
|
// Update dengan melakukan JOIN yang sama
|
||||||
|
const updatedAnswer = await db
|
||||||
|
.update(answers)
|
||||||
|
.set({
|
||||||
|
validationInformation: validationData.validationInformation,
|
||||||
|
updatedAt: currentDate,
|
||||||
|
})
|
||||||
|
.where(
|
||||||
|
sql`answers."assessmentId" = ${validationData.assessmentId}
|
||||||
|
AND answers."optionId" IN (
|
||||||
|
SELECT id FROM options WHERE "questionId" = ${validationData.questionId}
|
||||||
|
)`
|
||||||
|
)
|
||||||
|
.returning();
|
||||||
|
|
||||||
|
return c.json(
|
||||||
|
{
|
||||||
|
message: "Validation information updated successfully",
|
||||||
|
answer: updatedAnswer[0],
|
||||||
|
},
|
||||||
|
200
|
||||||
|
);
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user