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 054fe2b7af - Show all commits

View File

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