From 9d86cbb228c9a30aceb48ab1d1e9a2906cdce4d6 Mon Sep 17 00:00:00 2001 From: waruneeauy Date: Tue, 21 Oct 2025 11:47:06 +0700 Subject: [PATCH] fix bug permission --- src/controllers/PersonalController.ts | 204 +++++++++----------------- 1 file changed, 66 insertions(+), 138 deletions(-) diff --git a/src/controllers/PersonalController.ts b/src/controllers/PersonalController.ts index cf9357d..95b7b01 100644 --- a/src/controllers/PersonalController.ts +++ b/src/controllers/PersonalController.ts @@ -28,7 +28,7 @@ import CallAPI from "../interfaces/call-api"; @Security("bearerAuth") @Response( HttpStatusCode.INTERNAL_SERVER_ERROR, - "เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง" + "เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง", ) export class PersonalController extends Controller { private personalRepository = AppDataSource.getRepository(Personal); @@ -41,10 +41,7 @@ export class PersonalController extends Controller { * */ @Post("add") - async AddPersonal( - @Body() requestBody: PostPersonal, - @Request() request: RequestWithUser - ) { + async AddPersonal(@Body() requestBody: PostPersonal, @Request() request: RequestWithUser) { try { await new permission().PermissionCreate(request, "SYS_PROBATION"); @@ -54,31 +51,19 @@ export class PersonalController extends Controller { if (checkPersonal > 0) { throw new HttpError( HttpStatusCode.BAD_REQUEST, - "ผู้ทดลองปฏิบัติหน้าที่ราชการนี้มีอยู่แล้ว" + "ผู้ทดลองปฏิบัติหน้าที่ราชการนี้มีอยู่แล้ว", ); } - let organization = await (requestBody.orgChild4Name - ? requestBody.orgChild4Name + "\n" - : ""); - organization += await (requestBody.orgChild3Name - ? requestBody.orgChild3Name + "\n" - : ""); - organization += await (requestBody.orgChild2Name - ? requestBody.orgChild2Name + "\n" - : ""); - organization += await (requestBody.orgChild1Name - ? requestBody.orgChild1Name + "\n" - : ""); - organization += await (requestBody.orgRootName - ? requestBody.orgRootName - : ""); + let organization = await (requestBody.orgChild4Name ? requestBody.orgChild4Name + "\n" : ""); + organization += await (requestBody.orgChild3Name ? requestBody.orgChild3Name + "\n" : ""); + organization += await (requestBody.orgChild2Name ? requestBody.orgChild2Name + "\n" : ""); + organization += await (requestBody.orgChild1Name ? requestBody.orgChild1Name + "\n" : ""); + organization += await (requestBody.orgRootName ? requestBody.orgRootName : ""); const personalData = Object.assign(new Personal()); personalData.personal_id = requestBody.id; - personalData.order_number = requestBody.order_number - ? requestBody.order_number - : ""; + personalData.order_number = requestBody.order_number ? requestBody.order_number : ""; personalData.probation_status = 1; personalData.createdUserId = request.user.sub; personalData.createdFullName = request.user.name; @@ -90,12 +75,8 @@ export class PersonalController extends Controller { personalData.firstName = requestBody.firstName; personalData.lastName = requestBody.lastName; personalData.isProbation = requestBody.isProbation ? 1 : 0; - personalData.positionLevelName = requestBody.posLevelName - ? requestBody.posLevelName - : ""; - personalData.positionName = requestBody.position - ? requestBody.position - : ""; + personalData.positionLevelName = requestBody.posLevelName ? requestBody.posLevelName : ""; + personalData.positionName = requestBody.position ? requestBody.position : ""; personalData.positionLineName = requestBody.posLineName; personalData.positionTypeName = requestBody.posTypeName; personalData.posNo = requestBody.posNo ? requestBody.posNo : ""; @@ -114,8 +95,7 @@ export class PersonalController extends Controller { personalData.child3Dna = requestBody.orgChild3Dna; personalData.child4Dna = requestBody.orgChild4Dna; - const getFieldValue = (field: string | null | undefined): string => - field ?? ""; + const getFieldValue = (field: string | null | undefined): string => field ?? ""; personalData.orgChild1Name = getFieldValue(requestBody.orgChild1Name); personalData.orgChild2Name = getFieldValue(requestBody.orgChild2Name); personalData.orgChild3Name = getFieldValue(requestBody.orgChild3Name); @@ -131,11 +111,7 @@ export class PersonalController extends Controller { } catch (error: any) { if (error instanceof HttpError) { throw error; - } else - throw new HttpError( - HttpStatusCode.INTERNAL_SERVER_ERROR, - error.message - ); + } else throw new HttpError(HttpStatusCode.INTERNAL_SERVER_ERROR, error.message); } } @@ -147,22 +123,19 @@ export class PersonalController extends Controller { */ @Get("list") async ListPersonal( - @Request() request: RequestWithUser, + @Request() request: RequestWithUser, @Query() status: string = "", @Query() keyword: string = "", @Query("page") page: number = 1, @Query("pageSize") pageSize: number = 10, - @Query("sortBy") sortBy?: string, - @Query("descending") descending?: boolean + @Query("sortBy") sortBy?: string, + @Query("descending") descending?: boolean, ) { try { // await new permission().PermissionList(request, "SYS_PROBATION"); // const _data = await new permission().PermissionOrgList(request, "SYS_PROBATION"); - let _data = await new permission().PermissionOrgList( - request, - "SYS_DEV_PROJECT" - ); + let _data = await new permission().PermissionOrgList(request, "SYS_PROBATION"); await new CallAPI() .PostData(request, "/org/finddna", _data) .then((x) => { @@ -227,7 +200,7 @@ export class PersonalController extends Controller { : "1=1", { root: _data.root, - } + }, ) .andWhere( _data.child1 != undefined && _data.child1 != null @@ -237,7 +210,7 @@ export class PersonalController extends Controller { : "1=1", { child1: _data.child1, - } + }, ) .andWhere( _data.child2 != undefined && _data.child2 != null @@ -247,7 +220,7 @@ export class PersonalController extends Controller { : "1=1", { child2: _data.child2, - } + }, ) .andWhere( _data.child3 != undefined && _data.child3 != null @@ -257,7 +230,7 @@ export class PersonalController extends Controller { : "1=1", { child3: _data.child3, - } + }, ) .andWhere( _data.child4 != undefined && _data.child4 != null @@ -267,7 +240,7 @@ export class PersonalController extends Controller { : "1=1", { child4: _data.child4, - } + }, ) .andWhere( new Brackets((qb) => { @@ -277,76 +250,48 @@ export class PersonalController extends Controller { : "1=1", { keyword: `%${searchKeyword}%`, - } + }, ); - qb.orWhere( - searchKeyword ? `positionName like '%${keyword}%'` : "1=1", - { - keyword: `%${searchKeyword}%`, - } - ); - qb.orWhere( - searchKeyword ? `positionLevelName like '%${keyword}%'` : "1=1", - { - keyword: `%${searchKeyword}%`, - } - ); - qb.orWhere( - searchKeyword ? `organization like '%${keyword}%'` : "1=1", - { - keyword: `%${searchKeyword}%`, - } - ); - qb.orWhere( - searchKeyword ? `order_number like '%${keyword}%'` : "1=1", - { - keyword: `%${searchKeyword}%`, - } - ); - }) - ) - if (sortBy) { - if(sortBy === "position_line"){ - query = query.orderBy( - `personal.positionName`, - descending ? "DESC" : "ASC" - ); - }else if(sortBy === "position_level"){ - query = query.orderBy( - `personal.positionLevelName`, - descending ? "DESC" : "ASC" - ); - }else if(sortBy === "position_type"){ - query = query.orderBy( - `personal.positionTypeName`, - descending ? "DESC" : "ASC" - ); - }else if(sortBy === "name"){ - query = query - .orderBy(`personal.prefixName`,descending ? "DESC" : "ASC") - .addOrderBy(`personal.firstName`,descending ? "DESC" : "ASC") - .addOrderBy(`personal.lastName`,descending ? "DESC" : "ASC"); - }else{ - query = query.orderBy( - `personal.${sortBy}`, - descending ? "DESC" : "ASC" - ); - } - }else{ - query = query.orderBy("updatedAt", "DESC") - } - - const [lists, total] = await query - .skip((page - 1) * pageSize) - .take(pageSize) - .getManyAndCount(); + qb.orWhere(searchKeyword ? `positionName like '%${keyword}%'` : "1=1", { + keyword: `%${searchKeyword}%`, + }); + qb.orWhere(searchKeyword ? `positionLevelName like '%${keyword}%'` : "1=1", { + keyword: `%${searchKeyword}%`, + }); + qb.orWhere(searchKeyword ? `organization like '%${keyword}%'` : "1=1", { + keyword: `%${searchKeyword}%`, + }); + qb.orWhere(searchKeyword ? `order_number like '%${keyword}%'` : "1=1", { + keyword: `%${searchKeyword}%`, + }); + }), + ); + if (sortBy) { + if (sortBy === "position_line") { + query = query.orderBy(`personal.positionName`, descending ? "DESC" : "ASC"); + } else if (sortBy === "position_level") { + query = query.orderBy(`personal.positionLevelName`, descending ? "DESC" : "ASC"); + } else if (sortBy === "position_type") { + query = query.orderBy(`personal.positionTypeName`, descending ? "DESC" : "ASC"); + } else if (sortBy === "name") { + query = query + .orderBy(`personal.prefixName`, descending ? "DESC" : "ASC") + .addOrderBy(`personal.firstName`, descending ? "DESC" : "ASC") + .addOrderBy(`personal.lastName`, descending ? "DESC" : "ASC"); + } else { + query = query.orderBy(`personal.${sortBy}`, descending ? "DESC" : "ASC"); + } + } else { + query = query.orderBy("updatedAt", "DESC"); + } + const [lists, total] = await query + .skip((page - 1) * pageSize) + .take(pageSize) + .getManyAndCount(); if (!lists) { - throw new HttpError( - HttpStatusCode.INTERNAL_SERVER_ERROR, - "ไม่สามารถแสดงข้อมูลได้" - ); + throw new HttpError(HttpStatusCode.INTERNAL_SERVER_ERROR, "ไม่สามารถแสดงข้อมูลได้"); } let result: any = []; @@ -359,8 +304,7 @@ export class PersonalController extends Controller { await result.push({ personal_id: lists[i].personal_id, ordering: i + 1, - name: - lists[i].prefixName + lists[i].firstName + " " + lists[i].lastName, + name: lists[i].prefixName + lists[i].firstName + " " + lists[i].lastName, prefixName: lists[i].prefixName, firstName: lists[i].firstName, lastName: lists[i].lastName, @@ -405,11 +349,7 @@ export class PersonalController extends Controller { } catch (error: any) { if (error instanceof HttpError) { throw error; - } else - throw new HttpError( - HttpStatusCode.INTERNAL_SERVER_ERROR, - error.message - ); + } else throw new HttpError(HttpStatusCode.INTERNAL_SERVER_ERROR, error.message); } } @@ -420,18 +360,10 @@ export class PersonalController extends Controller { * */ @Get("") - async GetPersonal( - @Request() request: RequestWithUser, - @Query() personal_id: string - ) { + async GetPersonal(@Request() request: RequestWithUser, @Query() personal_id: string) { try { - let _workflow = await new permission().Workflow( - request, - personal_id, - "SYS_PROBATION" - ); - if (_workflow == false) - await new permission().PermissionGet(request, "SYS_PROBATION"); + let _workflow = await new permission().Workflow(request, personal_id, "SYS_PROBATION"); + if (_workflow == false) await new permission().PermissionGet(request, "SYS_PROBATION"); const person = await this.personalRepository.findOne({ where: { personal_id: personal_id }, }); @@ -460,11 +392,7 @@ export class PersonalController extends Controller { } catch (error: any) { if (error instanceof HttpError) { throw error; - } else - throw new HttpError( - HttpStatusCode.INTERNAL_SERVER_ERROR, - error.message - ); + } else throw new HttpError(HttpStatusCode.INTERNAL_SERVER_ERROR, error.message); } } }