update: Adding data filters to match the status to be displayed in assessment request management
This commit is contained in:
parent
03478b25bc
commit
054fe2b7af
|
|
@ -1,4 +1,4 @@
|
|||
import { and, eq, ilike, or, sql, asc } from "drizzle-orm";
|
||||
import { and, eq, ilike, or, sql, asc, inArray } from "drizzle-orm";
|
||||
import { Hono } from "hono";
|
||||
import checkPermission from "../../middlewares/checkPermission";
|
||||
import { z } from "zod";
|
||||
|
|
@ -49,6 +49,13 @@ const assessmentsRequestManagementRoutes = new Hono<HonoEnv>()
|
|||
async (c) => {
|
||||
const { page, limit, q } = c.req.valid("query");
|
||||
|
||||
const validStatuses = [
|
||||
"dalam pengerjaan",
|
||||
"menunggu konfirmasi",
|
||||
"diterima",
|
||||
"ditolak",
|
||||
] as ("menunggu konfirmasi" | "diterima" | "ditolak" | "dalam pengerjaan")[];
|
||||
|
||||
// Query untuk menghitung total jumlah item (totalCountQuery)
|
||||
const assessmentCountQuery = await db
|
||||
.select({
|
||||
|
|
@ -58,6 +65,8 @@ const assessmentsRequestManagementRoutes = new Hono<HonoEnv>()
|
|||
.leftJoin(respondents, eq(assessments.respondentId, respondents.id))
|
||||
.leftJoin(users, eq(respondents.userId, users.id))
|
||||
.where(
|
||||
and(
|
||||
inArray(assessments.status, validStatuses),
|
||||
q
|
||||
? or(
|
||||
ilike(users.name, `%${q}%`),
|
||||
|
|
@ -66,6 +75,7 @@ const assessmentsRequestManagementRoutes = new Hono<HonoEnv>()
|
|||
eq(assessments.id, q)
|
||||
)
|
||||
: undefined
|
||||
)
|
||||
);
|
||||
|
||||
const totalItems = Number(assessmentCountQuery[0]?.count) || 0;
|
||||
|
|
@ -83,6 +93,8 @@ const assessmentsRequestManagementRoutes = new Hono<HonoEnv>()
|
|||
.leftJoin(respondents, eq(assessments.respondentId, respondents.id))
|
||||
.leftJoin(users, eq(respondents.userId, users.id))
|
||||
.where(
|
||||
and(
|
||||
inArray(assessments.status, validStatuses),
|
||||
q
|
||||
? or(
|
||||
ilike(users.name, `%${q}%`),
|
||||
|
|
@ -92,16 +104,15 @@ const assessmentsRequestManagementRoutes = new Hono<HonoEnv>()
|
|||
)
|
||||
: undefined
|
||||
)
|
||||
)
|
||||
.orderBy(
|
||||
sql`
|
||||
CASE
|
||||
WHEN ${assessments.status} = 'menunggu konfirmasi' THEN 1
|
||||
WHEN ${assessments.status} = 'diterima' THEN 2
|
||||
WHEN ${assessments.status} = 'ditolak' THEN 3
|
||||
WHEN ${assessments.status} = 'dalam pengerjaan' THEN 4
|
||||
WHEN ${assessments.status} = 'belum diverifikasi' THEN 5
|
||||
WHEN ${assessments.status} = 'selesai' THEN 6
|
||||
ELSE 8
|
||||
WHEN ${assessments.status} = 'dalam pengerjaan' THEN 2
|
||||
WHEN ${assessments.status} = 'diterima' THEN 3
|
||||
WHEN ${assessments.status} = 'ditolak' THEN 4
|
||||
ELSE 5
|
||||
END
|
||||
`,
|
||||
asc(assessments.createdAt)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user