Pull Request branch dev-clone to main #1
|
|
@ -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 { Hono } from "hono";
|
||||||
import checkPermission from "../../middlewares/checkPermission";
|
import checkPermission from "../../middlewares/checkPermission";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
|
|
@ -49,6 +49,13 @@ const assessmentsRequestManagementRoutes = new Hono<HonoEnv>()
|
||||||
async (c) => {
|
async (c) => {
|
||||||
const { page, limit, q } = c.req.valid("query");
|
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)
|
// Query untuk menghitung total jumlah item (totalCountQuery)
|
||||||
const assessmentCountQuery = await db
|
const assessmentCountQuery = await db
|
||||||
.select({
|
.select({
|
||||||
|
|
@ -58,6 +65,8 @@ const assessmentsRequestManagementRoutes = new Hono<HonoEnv>()
|
||||||
.leftJoin(respondents, eq(assessments.respondentId, respondents.id))
|
.leftJoin(respondents, eq(assessments.respondentId, respondents.id))
|
||||||
.leftJoin(users, eq(respondents.userId, users.id))
|
.leftJoin(users, eq(respondents.userId, users.id))
|
||||||
.where(
|
.where(
|
||||||
|
and(
|
||||||
|
inArray(assessments.status, validStatuses),
|
||||||
q
|
q
|
||||||
? or(
|
? or(
|
||||||
ilike(users.name, `%${q}%`),
|
ilike(users.name, `%${q}%`),
|
||||||
|
|
@ -66,6 +75,7 @@ const assessmentsRequestManagementRoutes = new Hono<HonoEnv>()
|
||||||
eq(assessments.id, q)
|
eq(assessments.id, q)
|
||||||
)
|
)
|
||||||
: undefined
|
: undefined
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
const totalItems = Number(assessmentCountQuery[0]?.count) || 0;
|
const totalItems = Number(assessmentCountQuery[0]?.count) || 0;
|
||||||
|
|
@ -83,6 +93,8 @@ const assessmentsRequestManagementRoutes = new Hono<HonoEnv>()
|
||||||
.leftJoin(respondents, eq(assessments.respondentId, respondents.id))
|
.leftJoin(respondents, eq(assessments.respondentId, respondents.id))
|
||||||
.leftJoin(users, eq(respondents.userId, users.id))
|
.leftJoin(users, eq(respondents.userId, users.id))
|
||||||
.where(
|
.where(
|
||||||
|
and(
|
||||||
|
inArray(assessments.status, validStatuses),
|
||||||
q
|
q
|
||||||
? or(
|
? or(
|
||||||
ilike(users.name, `%${q}%`),
|
ilike(users.name, `%${q}%`),
|
||||||
|
|
@ -92,16 +104,15 @@ const assessmentsRequestManagementRoutes = new Hono<HonoEnv>()
|
||||||
)
|
)
|
||||||
: undefined
|
: undefined
|
||||||
)
|
)
|
||||||
|
)
|
||||||
.orderBy(
|
.orderBy(
|
||||||
sql`
|
sql`
|
||||||
CASE
|
CASE
|
||||||
WHEN ${assessments.status} = 'menunggu konfirmasi' THEN 1
|
WHEN ${assessments.status} = 'menunggu konfirmasi' THEN 1
|
||||||
WHEN ${assessments.status} = 'diterima' THEN 2
|
WHEN ${assessments.status} = 'dalam pengerjaan' THEN 2
|
||||||
WHEN ${assessments.status} = 'ditolak' THEN 3
|
WHEN ${assessments.status} = 'diterima' THEN 3
|
||||||
WHEN ${assessments.status} = 'dalam pengerjaan' THEN 4
|
WHEN ${assessments.status} = 'ditolak' THEN 4
|
||||||
WHEN ${assessments.status} = 'belum diverifikasi' THEN 5
|
ELSE 5
|
||||||
WHEN ${assessments.status} = 'selesai' THEN 6
|
|
||||||
ELSE 8
|
|
||||||
END
|
END
|
||||||
`,
|
`,
|
||||||
asc(assessments.createdAt)
|
asc(assessments.createdAt)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user