Merge branch 'develop'

This commit is contained in:
Warunee Tamkoo 2024-10-07 16:22:51 +07:00
commit c408f3533d
22 changed files with 1949 additions and 2080 deletions

View file

@ -4,11 +4,10 @@ import cors from "cors";
import express from "express";
import swaggerUi from "swagger-ui-express";
import swaggerDocument from "./swagger.json";
import * as cron from "node-cron";
import error from "./middlewares/error";
import { AppDataSource } from "./database/data-source";
import { RegisterRoutes } from "./routes";
// import logMiddleware from "./middlewares/logs";
import logMiddleware from "./middlewares/logs";
async function main() {
await AppDataSource.initialize();
@ -18,11 +17,11 @@ async function main() {
app.use(
cors({
origin: "*",
})
}),
);
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// app.use(logMiddleware);
app.use(logMiddleware);
app.use("/", express.static("static"));
app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerDocument));
@ -36,11 +35,9 @@ async function main() {
APP_PORT,
APP_HOST,
() => (
console.log(
`[APP] Application is running on: http://localhost:${APP_PORT}`
),
console.log(`[APP] Application is running on: http://localhost:${APP_PORT}`),
console.log(`[APP] Swagger on: http://localhost:${APP_PORT}/api-docs`)
)
),
);
}

View file

@ -21,21 +21,12 @@ import { findEndDate, setLogDataDiff } from "../interfaces/utils";
import { Personal } from "../entities/Personal";
import permission from "../interfaces/permission";
import { Assign, CreateAssign } from "../entities/Assign";
import {
AssignDirector,
CreateAssignDirector,
} from "../entities/AssignDirector";
import { AssignDirector, CreateAssignDirector } from "../entities/AssignDirector";
import { AssignJob, CreateAssignJob } from "../entities/AssignJob";
import {
AssignKnowledge,
CreateAssignKnowledge,
} from "../entities/AssignKnowledge";
import { AssignKnowledge, CreateAssignKnowledge } from "../entities/AssignKnowledge";
import { AssignLaw, CreateAssignLaw } from "../entities/AssignLaw";
import { AssignSkill, CreateAssignSkill } from "../entities/AssignSkill";
import {
AssignCompetency,
CreateAssignCompetency,
} from "../entities/AssignCompetency";
import { AssignCompetency, CreateAssignCompetency } from "../entities/AssignCompetency";
import {
AssignCompetencyGroup,
CreateAssignCompetencyGroup,
@ -44,29 +35,24 @@ import { AssignOutput, CreateAssignOutput } from "../entities/AssignOutput";
import { Law } from "../entities/Law";
import CallAPI from "../interfaces/call-api";
@Route("api/v1/assign")
@Route("api/v1/probation/assign")
@Tags("ฟอร์มมอบหมายงาน")
@Security("bearerAuth")
@Response(
HttpStatusCode.INTERNAL_SERVER_ERROR,
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง"
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง",
)
@SuccessResponse(HttpStatusCode.OK, "สำเร็จ")
export class AssignController extends Controller {
private assignRepository = AppDataSource.getRepository(Assign);
private personalRepository = AppDataSource.getRepository(Personal);
private assignDirectorRepository =
AppDataSource.getRepository(AssignDirector);
private assignDirectorRepository = AppDataSource.getRepository(AssignDirector);
private assignJobRepository = AppDataSource.getRepository(AssignJob);
private assignKnowledgeRepository =
AppDataSource.getRepository(AssignKnowledge);
private assignKnowledgeRepository = AppDataSource.getRepository(AssignKnowledge);
private assignLawRepository = AppDataSource.getRepository(AssignLaw);
private assignSkillRepository = AppDataSource.getRepository(AssignSkill);
private assignCompetencyRepository =
AppDataSource.getRepository(AssignCompetency);
private assignCompetencyGroupRepository = AppDataSource.getRepository(
AssignCompetencyGroup
);
private assignCompetencyRepository = AppDataSource.getRepository(AssignCompetency);
private assignCompetencyGroupRepository = AppDataSource.getRepository(AssignCompetencyGroup);
private assignOutputRepository = AppDataSource.getRepository(AssignOutput);
private lawsRepository = AppDataSource.getRepository(Law);
@ -77,32 +63,29 @@ export class AssignController extends Controller {
*
*/
@Post("")
async AddAssign(
@Request() request: RequestWithUser,
@Body() requestBody: CreateAssign
) {
async AddAssign(@Request() request: RequestWithUser, @Body() requestBody: CreateAssign) {
await new permission().PermissionUpdate(request, "SYS_PROBATION");
const person = await this.personalRepository.findOne({
where: {
personal_id: requestBody.personal_id,
personal_id: requestBody.personalId,
},
});
if (!person) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
}
const roundNo = await this.assignRepository.count({
where: {
active: 1,
personal_id: requestBody.personal_id,
personal_id: requestBody.personalId,
},
});
const data: any = {
...requestBody,
round_no: roundNo + 1,
personal_id: requestBody.personal_id,
personal_id: requestBody.personalId,
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
@ -112,17 +95,15 @@ export class AssignController extends Controller {
const assign = await this.assignRepository.save(data, { data: request });
setLogDataDiff(request, { before, after: data });
const jobs = await requestBody.assign_jobs.map(
(x: CreateAssignJob, index: number) => ({
...x,
id: index + 1,
assign_id: assign.id,
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
);
const jobs = await requestBody.assign_jobs.map((x: CreateAssignJob, index: number) => ({
...x,
id: index + 1,
assign_id: assign.id,
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
}));
await this.assignJobRepository.save(jobs, { data: request });
setLogDataDiff(request, { before, after: jobs });
@ -135,36 +116,32 @@ export class AssignController extends Controller {
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
}),
);
await this.assignKnowledgeRepository.save(knowledges, { data: request });
setLogDataDiff(request, { before, after: knowledges });
const laws = await requestBody.assign_law.map(
(x: CreateAssignLaw, index: number) => ({
ordering: index + 1,
law_id: x.id,
assign_id: assign.id,
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
);
const laws = await requestBody.assign_law.map((x: CreateAssignLaw, index: number) => ({
ordering: index + 1,
law_id: x.id,
assign_id: assign.id,
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
}));
await this.assignLawRepository.save(laws, { data: request });
setLogDataDiff(request, { before, after: laws });
const skills = await requestBody.assign_skill.map(
(x: CreateAssignSkill, index: number) => ({
skill_id: index + 1,
skill_level: x.level,
assign_id: assign.id,
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
);
const skills = await requestBody.assign_skill.map((x: CreateAssignSkill, index: number) => ({
skill_id: index + 1,
skill_level: x.level,
assign_id: assign.id,
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
}));
await this.assignSkillRepository.save(skills, { data: request });
setLogDataDiff(request, { before, after: skills });
@ -179,7 +156,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
}),
);
await this.assignCompetencyRepository.save(competencise, { data: request });
setLogDataDiff(request, { before, after: competencise });
@ -195,7 +172,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
}),
);
await this.assignCompetencyGroupRepository.save(competencyGroups, {
data: request,
@ -211,7 +188,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
}),
);
await this.assignOutputRepository.save(outputs, { data: request });
setLogDataDiff(request, { before, after: outputs });
@ -226,7 +203,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
}),
);
await this.assignDirectorRepository.save(directors, { data: request });
setLogDataDiff(request, { before, after: directors });
@ -244,7 +221,7 @@ export class AssignController extends Controller {
async EditAssign(
@Query() assign_id: string,
@Request() request: RequestWithUser,
@Body() requestBody: CreateAssign
@Body() requestBody: CreateAssign,
) {
await new permission().PermissionUpdate(request, "SYS_PROBATION");
@ -254,20 +231,17 @@ export class AssignController extends Controller {
let before = assign;
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const person = await this.personalRepository.findOne({
where: {
personal_id: requestBody.personal_id,
personal_id: requestBody.personalId,
},
});
if (!person) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
}
const data: any = {
@ -278,17 +252,15 @@ export class AssignController extends Controller {
};
await this.assignJobRepository.delete({ assign_id });
const jobs = await requestBody.assign_jobs.map(
(x: CreateAssignJob, index: number) => ({
...x,
id: index + 1,
assign_id: assign.id,
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
);
const jobs = await requestBody.assign_jobs.map((x: CreateAssignJob, index: number) => ({
...x,
id: index + 1,
assign_id: assign.id,
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
}));
await this.assignJobRepository.save(jobs);
await this.assignKnowledgeRepository.delete({ assign_id });
@ -301,36 +273,32 @@ export class AssignController extends Controller {
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
}),
);
await this.assignKnowledgeRepository.save(knowledges);
await this.assignLawRepository.delete({ assign_id });
const laws = await requestBody.assign_law.map(
(x: CreateAssignLaw, index: number) => ({
ordering: index + 1,
law_id: x.id,
assign_id: assign.id,
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
);
const laws = await requestBody.assign_law.map((x: CreateAssignLaw, index: number) => ({
ordering: index + 1,
law_id: x.id,
assign_id: assign.id,
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
}));
await this.assignLawRepository.save(laws);
await this.assignSkillRepository.delete({ assign_id });
const skills = await requestBody.assign_skill.map(
(x: CreateAssignSkill, index: number) => ({
skill_id: index + 1,
skill_level: x.level,
assign_id: assign.id,
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
);
const skills = await requestBody.assign_skill.map((x: CreateAssignSkill, index: number) => ({
skill_id: index + 1,
skill_level: x.level,
assign_id: assign.id,
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
}));
await this.assignSkillRepository.save(skills);
await this.assignCompetencyRepository.delete({ assign_id });
@ -345,7 +313,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
}),
);
await this.assignCompetencyRepository.save(competencise);
@ -361,7 +329,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
}),
);
await this.assignCompetencyGroupRepository.save(competencyGroups);
@ -375,7 +343,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
}),
);
await this.assignOutputRepository.save(outputs);
@ -390,7 +358,7 @@ export class AssignController extends Controller {
createdFullName: request.user.name,
updateUserId: request.user.sub,
updateFullName: request.user.name,
})
}),
);
await this.assignDirectorRepository.save(directors);
@ -469,10 +437,7 @@ export class AssignController extends Controller {
*
*/
@Get("assign-list")
async ListPersonal(
@Request() request: RequestWithUser,
@Query() personal_id: string
) {
async ListPersonal(@Request() request: RequestWithUser, @Query() personal_id: string) {
await new permission().PermissionGet(request, "SYS_PROBATION");
const lists = await this.assignRepository.find({
select: ["id", "round_no", "date_start", "date_finish"],
@ -486,6 +451,7 @@ export class AssignController extends Controller {
lists.map(async (item) => {
const director = await this.assignDirectorRepository.find({
where: { assign_id: item.id },
order: { ordering: "ASC" },
});
let mentors = "";
@ -500,14 +466,10 @@ export class AssignController extends Controller {
}
}
const commanderData = await (director.find(
(x) => x.role == "commander"
) ?? null);
const commanderData = await (director.find((x) => x.role == "commander") ?? null);
const commander = commanderData ? commanderData.fullname : null;
const chairmanData = await (director.find(
(x) => x.role == "chairman"
) ?? null);
const chairmanData = await (director.find((x) => x.role == "chairman") ?? null);
const chairman = chairmanData ? chairmanData.fullname : null;
await result.push({
@ -516,7 +478,7 @@ export class AssignController extends Controller {
commander: commander,
chairman: chairman,
});
})
}),
);
return new HttpSuccess(result);
@ -529,11 +491,8 @@ export class AssignController extends Controller {
*
*/
@Get("")
async GetAssign(
@Query() assign_id: string,
@Request() request: RequestWithUser
) {
await new permission().PermissionUpdate(request, "SYS_PROBATION");
async GetAssign(@Query() assign_id: string, @Request() request: RequestWithUser) {
await new permission().PermissionGet(request, "SYS_PROBATION");
const assign = await this.assignRepository.findOne({
select: [
@ -542,6 +501,7 @@ export class AssignController extends Controller {
"round_no",
"date_start",
"date_finish",
"other_desc",
"other4_desc",
"other5_no1_desc",
"experimenter_dated",
@ -553,10 +513,7 @@ export class AssignController extends Controller {
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const profileData = await this.personalRepository.findOne({
@ -577,7 +534,7 @@ export class AssignController extends Controller {
});
if (!profileData) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
}
const profile = {
@ -620,12 +577,21 @@ export class AssignController extends Controller {
where: { active: 1 },
});
const laws = await lawData.map((x) => ({
id: x.id,
selected: x.assignLaw ? 1 : 0,
description: x.description,
status_select: x.status_select,
}));
const laws = await Promise.all(
lawData.map(async (x) => {
const assignLaw = await this.assignLawRepository.countBy({
assign_id: assign_id,
law_id: x.id,
});
return {
id: x.id,
selected: assignLaw > 0 ? 1 : 0,
description: x.description,
status_select: x.status_select,
};
}),
);
const skillsData = await this.assignSkillRepository.find({
relations: ["skill"],
@ -651,12 +617,7 @@ export class AssignController extends Controller {
}));
const competencyData = await this.assignCompetencyRepository.find({
select: [
"competency_id",
"competency_level",
"competency_name",
"competency_description",
],
select: ["competency_id", "competency_level", "competency_name", "competency_description"],
where: { assign_id },
});
@ -667,17 +628,15 @@ export class AssignController extends Controller {
description: x.competency_description,
}));
const competencyGroupData = await this.assignCompetencyGroupRepository.find(
{
select: [
"competency_group_id",
"competency_group_level",
"competency_group_name",
"competency_group_description",
],
where: { assign_id },
}
);
const competencyGroupData = await this.assignCompetencyGroupRepository.find({
select: [
"competency_group_id",
"competency_group_level",
"competency_group_name",
"competency_group_description",
],
where: { assign_id },
});
const competency_groups = await competencyGroupData.map((x) => ({
id: x.competency_group_id,
level: x.competency_group_level,
@ -692,6 +651,7 @@ export class AssignController extends Controller {
const director = await this.assignDirectorRepository.find({
where: { assign_id },
order: { ordering: "ASC" },
});
let mentors = [];
@ -703,16 +663,13 @@ export class AssignController extends Controller {
...e,
name: e.fullname,
label:
e.fullname +
" " +
(e.position ? `(${e.position}, ${e.posType}: ${e.posLevel})` : ""),
e.fullname + " " + (e.position ? `(${e.position}, ${e.posType}: ${e.posLevel})` : ""),
Position: e.position, // report
});
}
}
const commanderData = await (director.find((x) => x.role == "commander") ??
null);
const commanderData = await (director.find((x) => x.role == "commander") ?? null);
const commander = await (commanderData
? {
...commanderData,
@ -727,8 +684,7 @@ export class AssignController extends Controller {
}
: null);
const chairmanData = await (director.find((x) => x.role == "chairman") ??
null);
const chairmanData = await (director.find((x) => x.role == "chairman") ?? null);
const chairman = await (chairmanData
? {
...chairmanData,

View file

@ -15,12 +15,12 @@ import HttpStatusCode from "../interfaces/http-status";
import { RequestWithUser } from "../middlewares/user";
import { findEndDate } from "../interfaces/utils";
@Route("api/v1/calculate")
@Route("api/v1/probation/calculate")
@Tags("ฟอร์มมอบหมายงาน")
@Security("bearerAuth")
@Response(
HttpStatusCode.INTERNAL_SERVER_ERROR,
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง"
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง",
)
@SuccessResponse(HttpStatusCode.OK, "สำเร็จ")
export class CalculateController extends Controller {
@ -37,7 +37,7 @@ export class CalculateController extends Controller {
month: number;
start_date: Date;
},
@Request() request: RequestWithUser
@Request() request: RequestWithUser,
) {
const { month, start_date } = requestBody;
const finish_date = findEndDate(month, start_date);

View file

@ -3,7 +3,6 @@ import {
Route,
Security,
Tags,
Path,
Request,
SuccessResponse,
Response,
@ -21,20 +20,20 @@ import { MapKnowledgeSkill } from "../entities/MapKnowledgeSkill";
import { Personal } from "../entities/Personal";
import { Law } from "../entities/Law";
import { Assign } from "../entities/Assign";
import permission from "../interfaces/permission";
@Route("api/v1/data-options")
@Route("api/v1/probation/data-options")
@Tags("Data Options")
@Security("bearerAuth")
@Response(
HttpStatusCode.INTERNAL_SERVER_ERROR,
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง"
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง",
)
@SuccessResponse(HttpStatusCode.OK, "สำเร็จ")
export class DataOptionController extends Controller {
private personalRepository = AppDataSource.getRepository(Personal);
private knowledgeRepository = AppDataSource.getRepository(Knowledge);
private mapKnowledgeSkillRepository =
AppDataSource.getRepository(MapKnowledgeSkill);
private mapKnowledgeSkillRepository = AppDataSource.getRepository(MapKnowledgeSkill);
private skillRepository = AppDataSource.getRepository(Skill);
private lawRepository = AppDataSource.getRepository(Law);
private assignRepository = AppDataSource.getRepository(Assign);
@ -46,21 +45,16 @@ export class DataOptionController extends Controller {
*
*/
@Get("knowledge")
async GetKnowledge(
@Query() personal_id: string,
@Request() request: RequestWithUser
) {
async GetKnowledge(@Query() personal_id: string) {
const person = await this.personalRepository.findOne({
where: { personal_id },
});
console.log(person);
if (!person) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
}
const result = await this.mapKnowledgeSkillRepository.findOne({
let result = await this.mapKnowledgeSkillRepository.findOne({
where: {
positionName: person.positionName,
positionLevelName: person.positionLevelName,
@ -69,7 +63,17 @@ export class DataOptionController extends Controller {
});
if (!result) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
// ถ้าตำแหน่งไม่ตรงหาจากระดับตำแหน่งแทนเพื่อให้ฟอร์มสามารถกรอกต่อได้
result = await this.mapKnowledgeSkillRepository.findOne({
where: {
positionLevelName: person.positionLevelName,
active: 1,
},
});
}
if (!result) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลความรู้ที่ตรงกับตำแหน่ง");
}
const knowledges = await this.knowledgeRepository.find({
@ -102,19 +106,16 @@ export class DataOptionController extends Controller {
*
*/
@Get("skill")
async GetSkill(
@Query() personal_id: string,
@Request() request: RequestWithUser
) {
async GetSkill(@Query() personal_id: string) {
const person = await this.personalRepository.findOne({
where: { personal_id },
});
if (!person) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
}
const result = await this.mapKnowledgeSkillRepository.findOne({
let result = await this.mapKnowledgeSkillRepository.findOne({
select: [
"skill_computer_level",
"skill_english_level",
@ -129,90 +130,124 @@ export class DataOptionController extends Controller {
});
if (!result) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
// ถ้าตำแหน่งไม่ตรงหาจากระดับตำแหน่งแทนเพื่อให้ฟอร์มสามารถกรอกต่อได้
result = await this.mapKnowledgeSkillRepository.findOne({
select: [
"skill_computer_level",
"skill_english_level",
"skill_information_level",
"skill_resourse_level",
],
where: {
positionLevelName: person.positionLevelName,
active: 1,
},
});
}
const skills = await this.skillRepository.find({
if (!result) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลทักษะที่ตรงกับตำแหน่ง");
}
const computerData = await this.skillRepository.findOne({
where: { type: TypeSkill.COMPUTER, active: 1 },
});
const skill = await skills.map((v) => ({
id: v.id,
title: v.title,
level_description:
result.skill_english_level == 1
? v.level1
: result.skill_english_level == 2
? v.level2
: result.skill_english_level == 3
? v.level3
: result.skill_english_level == 4
? v.level4
: v.level5,
level: result.skill_english_level,
}));
const englishs = await this.skillRepository.find({
if (!computerData) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลทักษะคอมพิวเตอร์");
}
const computer = await {
id: computerData.id,
title: computerData.title,
level_description:
result.skill_computer_level == 1
? computerData.level1
: result.skill_computer_level == 2
? computerData.level2
: result.skill_computer_level == 3
? computerData.level3
: result.skill_computer_level == 4
? computerData.level4
: computerData.level5,
level: result.skill_computer_level,
};
const englishData = await this.skillRepository.findOne({
where: { type: TypeSkill.ENG, active: 1 },
});
const english = await englishs.map((v) => ({
id: v.id,
title: v.title,
if (!englishData) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลทักษะภาษาอังกฤษ");
}
const english = await {
id: englishData.id,
title: englishData.title,
level_description:
result.skill_english_level == 1
? v.level1
? englishData.level1
: result.skill_english_level == 2
? v.level2
? englishData.level2
: result.skill_english_level == 3
? v.level3
? englishData.level3
: result.skill_english_level == 4
? v.level4
: v.level5,
? englishData.level4
: englishData.level5,
level: result.skill_english_level,
}));
};
const informations = await this.skillRepository.find({
const informationData = await this.skillRepository.findOne({
where: { type: TypeSkill.INFORMATION, active: 1 },
});
const information = await informations.map((v) => ({
id: v.id,
title: v.title,
if (!informationData) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
}
const information = await {
id: informationData.id,
title: informationData.title,
level_description:
result.skill_information_level == 1
? v.level1
? informationData.level1
: result.skill_information_level == 2
? v.level2
? informationData.level2
: result.skill_information_level == 3
? v.level3
? informationData.level3
: result.skill_information_level == 4
? v.level4
: v.level5,
? informationData.level4
: informationData.level5,
level: result.skill_information_level,
}));
};
const resourses = await this.skillRepository.find({
const resourseData = await this.skillRepository.findOne({
where: { type: TypeSkill.RESOURSE, active: 1 },
});
const resourse = await resourses.map((v) => ({
id: v.id,
title: v.title,
if (!resourseData) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
}
const resourse = await {
id: resourseData.id,
title: resourseData.title,
level_description:
result.skill_resourse_level == 1
? v.level1
? resourseData.level1
: result.skill_resourse_level == 2
? v.level2
? resourseData.level2
: result.skill_resourse_level == 3
? v.level3
? resourseData.level3
: result.skill_resourse_level == 4
? v.level4
: v.level5,
? resourseData.level4
: resourseData.level5,
level: result.skill_resourse_level,
}));
};
return new HttpSuccess({
computer: skill,
english: english,
information: information,
resourse: resourse,
computer,
english,
information,
resourse,
});
}
@ -223,10 +258,7 @@ export class DataOptionController extends Controller {
*
*/
@Get("law")
async GetLaw(
@Query() personal_id: string,
@Request() request: RequestWithUser
) {
async GetLaw(@Query() personal_id: string) {
const results = await this.lawRepository.find({
select: ["id", "parent_id", "description", "status_select"],
where: {
@ -235,7 +267,7 @@ export class DataOptionController extends Controller {
});
if (!results) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
}
const result = await results.map((v) => ({
@ -253,10 +285,9 @@ export class DataOptionController extends Controller {
*
*/
@Get("new-assign")
async NewAssign(
@Query() personal_id: string,
@Request() request: RequestWithUser
) {
async NewAssign(@Query() personal_id: string, @Request() request: RequestWithUser) {
await new permission().PermissionGet(request, "SYS_PROBATION");
const person = await this.personalRepository.findOne({
select: [
"personal_id",
@ -277,7 +308,7 @@ export class DataOptionController extends Controller {
});
if (!person) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
}
const assign = await this.assignRepository.count({
@ -291,12 +322,10 @@ export class DataOptionController extends Controller {
...person,
};
const data = await {
return new HttpSuccess({
person: responsePerson,
assign_no: assign + 1,
assign_month: 6,
};
return new HttpSuccess({ data: data });
});
}
}

View file

@ -22,25 +22,20 @@ import HttpError from "../interfaces/http-error";
import { Assign } from "../entities/Assign";
import { Personal } from "../entities/Personal";
import CallAPI from "../interfaces/call-api";
import {
CreateEvaluateChairman,
EvaluateChairman,
} from "../entities/EvaluateChairman";
@Route("api/v1/evaluate-chairman")
import { CreateEvaluateChairman, EvaluateChairman } from "../entities/EvaluateChairman";
import permission from "../interfaces/permission";
@Route("api/v1/probation/evaluate-chairman")
@Tags("แบบประเมินผล (คณะกรรมการ)")
@Security("bearerAuth")
@Response(
HttpStatusCode.INTERNAL_SERVER_ERROR,
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง"
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง",
)
@SuccessResponse(HttpStatusCode.OK, "สำเร็จ")
export class EvaluateChairmanController extends Controller {
private assignDirectorRepository =
AppDataSource.getRepository(AssignDirector);
private assignDirectorRepository = AppDataSource.getRepository(AssignDirector);
private assignRepository = AppDataSource.getRepository(Assign);
private evaluateChairmanRepository =
AppDataSource.getRepository(EvaluateChairman);
private evaluateChairmanRepository = AppDataSource.getRepository(EvaluateChairman);
private personalRepository = AppDataSource.getRepository(Personal);
/**
@ -50,10 +45,9 @@ export class EvaluateChairmanController extends Controller {
*
*/
@Get("create")
async CreateEvaluate(
@Query() assign_id: string,
@Request() request: RequestWithUser
) {
async CreateEvaluate(@Query() assign_id: string, @Request() request: RequestWithUser) {
await new permission().PermissionGet(request, "SYS_PROBATION");
const director = await this.assignDirectorRepository.findOne({
select: ["personal_id"],
where: {
@ -62,7 +56,7 @@ export class EvaluateChairmanController extends Controller {
},
});
if (!director) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
}
const director_id = director.personal_id;
@ -71,10 +65,7 @@ export class EvaluateChairmanController extends Controller {
where: { id: assign_id },
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const profile = await (assign.profile
@ -82,10 +73,7 @@ export class EvaluateChairmanController extends Controller {
...assign.profile,
id: assign.profile.personal_id,
name:
assign.profile.prefixName +
assign.profile.firstName +
" " +
assign.profile.lastName,
assign.profile.prefixName + assign.profile.firstName + " " + assign.profile.lastName,
Oc: assign.profile.organization,
}
: null);
@ -104,36 +92,70 @@ export class EvaluateChairmanController extends Controller {
const directorData = await this.assignDirectorRepository.find({
where: { assign_id },
order: { ordering: "ASC" },
});
if (!directorData) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลผู้ดูแล ผู้บังคับบัญชาและประธาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล ผู้บังคับบัญชาและประธาน");
}
let mentors = "";
let mentors = [];
const mentorList = await directorData.filter((x) => x.role == "mentor");
if (mentorList.length > 0) {
for (let index = 0; index < mentorList.length; index++) {
const e = await mentorList[index];
mentors += e.fullname;
if (index < mentorList.length - 1) {
mentors += ", ";
}
mentors.push({
personal_id: e.personal_id,
dated: e.dated,
name: e.fullname,
label:
e.fullname + " " + (e.position ? `(${e.position}, ${e.posType}: ${e.posLevel})` : ""),
position: e.position,
posType: e.posType,
posLevel: e.posLevel,
});
}
}
const commanderData = await (directorData.find(
(x) => x.role == "commander"
) ?? null);
const commander = commanderData ? commanderData.fullname : null;
const commanderData = await (directorData.find((x) => x.role == "commander") ?? null);
const chairmanData = await (directorData.find(
(x) => x.role == "chairman"
) ?? null);
const chairman = chairmanData ? chairmanData.fullname : null;
const commander =
commanderData != null
? {
personal_id: commanderData.personal_id,
dated: commanderData.dated,
name: commanderData.fullname,
label:
commanderData.fullname +
" " +
(commanderData.position
? `(${commanderData.position}, ${commanderData.posType}: ${commanderData.posLevel})`
: ""),
position: commanderData.position,
posType: commanderData.posType,
posLevel: commanderData.posLevel,
}
: null;
const chairmanData = await (directorData.find((x) => x.role == "chairman") ?? null);
const chairman =
chairmanData != null
? {
personal_id: chairmanData.personal_id,
dated: chairmanData.dated,
name: chairmanData.fullname,
label:
chairmanData.fullname +
" " +
(chairmanData.position
? `(${chairmanData.position}, ${chairmanData.posType}: ${chairmanData.posLevel})`
: ""),
position: chairmanData.position,
posType: chairmanData.posType,
posLevel: chairmanData.posLevel,
}
: null;
return new HttpSuccess({
person: profile ? profile : null,
@ -154,7 +176,12 @@ export class EvaluateChairmanController extends Controller {
*
*/
@Get("")
async GetEvaluate(@Query() assign_id: string, @Query() evaluate_no?: string) {
async GetEvaluate(
@Request() request: RequestWithUser,
@Query() assign_id: string,
@Query() evaluate_no?: string,
) {
await new permission().PermissionGet(request, "SYS_PROBATION");
// ต้องปรับเป็น id ของคนที่ access เข้ามา
const director = await this.assignDirectorRepository.findOne({
select: ["personal_id"],
@ -164,7 +191,7 @@ export class EvaluateChairmanController extends Controller {
},
});
if (!director) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
}
const director_id = director.personal_id;
let evaluate: any = null;
@ -177,26 +204,29 @@ export class EvaluateChairmanController extends Controller {
},
});
} else {
evaluate = await this.evaluateChairmanRepository.findOne({
evaluate = await this.evaluateChairmanRepository.find({
where: {
director_id,
assign_id,
},
});
if (evaluate)
evaluate = await evaluate.map((element: EvaluateChairman) => ({
...element,
no: Number(element.no),
}));
}
if (!evaluate) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบประเมิน");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบประเมิน");
}
const assign = await this.assignRepository.findOne({
where: { id: assign_id },
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const experimenteeData = await this.personalRepository.find({
@ -220,36 +250,70 @@ export class EvaluateChairmanController extends Controller {
const directorData = await this.assignDirectorRepository.find({
where: { assign_id },
order: { ordering: "ASC" },
});
if (!directorData) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลผู้ดูแล ผู้บังคับบัญชาและประธาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล ผู้บังคับบัญชาและประธาน");
}
let mentors = "";
let mentors = [];
const mentorList = await directorData.filter((x) => x.role == "mentor");
if (mentorList.length > 0) {
for (let index = 0; index < mentorList.length; index++) {
const e = await mentorList[index];
mentors += e.fullname;
if (index < mentorList.length - 1) {
mentors += ", ";
}
mentors.push({
personal_id: e.personal_id,
dated: e.dated,
name: e.fullname,
label:
e.fullname + " " + (e.position ? `(${e.position}, ${e.posType}: ${e.posLevel})` : ""),
position: e.position,
posType: e.posType,
posLevel: e.posLevel,
});
}
}
const commanderData = await (directorData.find(
(x) => x.role == "commander"
) ?? null);
const commander = commanderData ? commanderData.fullname : null;
const commanderData = await (directorData.find((x) => x.role == "commander") ?? null);
const chairmanData = await (directorData.find(
(x) => x.role == "chairman"
) ?? null);
const chairman = chairmanData ? chairmanData.fullname : null;
const commander =
commanderData != null
? {
personal_id: commanderData.personal_id,
dated: commanderData.dated,
name: commanderData.fullname,
label:
commanderData.fullname +
" " +
(commanderData.position
? `(${commanderData.position}, ${commanderData.posType}: ${commanderData.posLevel})`
: ""),
position: commanderData.position,
posType: commanderData.posType,
posLevel: commanderData.posLevel,
}
: null;
const chairmanData = await (directorData.find((x) => x.role == "chairman") ?? null);
const chairman =
chairmanData != null
? {
personal_id: chairmanData.personal_id,
dated: chairmanData.dated,
name: chairmanData.fullname,
label:
chairmanData.fullname +
" " +
(chairmanData.position
? `(${chairmanData.position}, ${chairmanData.posType}: ${chairmanData.posLevel})`
: ""),
position: chairmanData.position,
posType: chairmanData.posType,
posLevel: chairmanData.posLevel,
}
: null;
return new HttpSuccess({
experimentee: experimentee,
@ -271,8 +335,10 @@ export class EvaluateChairmanController extends Controller {
async PostData(
@Query() assign_id: string,
@Body() requestBody: CreateEvaluateChairman,
@Request() request: RequestWithUser
@Request() request: RequestWithUser,
) {
await new permission().PermissionUpdate(request, "SYS_PROBATION");
const director = await this.assignDirectorRepository.findOne({
select: ["personal_id"],
where: {
@ -281,7 +347,7 @@ export class EvaluateChairmanController extends Controller {
},
});
if (!director) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
}
const director_id = director.personal_id;
@ -291,10 +357,7 @@ export class EvaluateChairmanController extends Controller {
where: { id: assign_id },
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const postData: any = await {
@ -313,9 +376,7 @@ export class EvaluateChairmanController extends Controller {
: 0,
behavior_other_desc: requestBody.behavior_orther.text,
behavior_other_level:
requestBody.behavior_orther.text != ""
? Number(requestBody.behavior_orther.level)
: 0,
requestBody.behavior_orther.text != "" ? Number(requestBody.behavior_orther.level) : 0,
createdUserId: request.user.sub,
createdFullName: request.user.name,
@ -359,11 +420,13 @@ export class EvaluateChairmanController extends Controller {
*/
@Put("")
async UpdateData(
@Query() assign_id: string,
// @Query() assign_id: string,
@Query() evaluate_id: string,
@Body() requestBody: CreateEvaluateChairman,
@Request() request: RequestWithUser
@Request() request: RequestWithUser,
) {
await new permission().PermissionUpdate(request, "SYS_PROBATION");
let evaluate = await this.evaluateChairmanRepository.findOne({
where: { id: evaluate_id },
});
@ -371,7 +434,7 @@ export class EvaluateChairmanController extends Controller {
const before = evaluate;
if (!evaluate) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการประเมิน");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการประเมิน");
}
evaluate.chairman_dated = requestBody.chairman_dated;
@ -384,9 +447,7 @@ export class EvaluateChairmanController extends Controller {
? requestBody.achievement_other.text
: "";
evaluate.achievement_other_level =
requestBody.achievement_other.text != ""
? Number(requestBody.achievement_other.level)
: 0;
requestBody.achievement_other.text != "" ? Number(requestBody.achievement_other.level) : 0;
evaluate.conduct1_level = requestBody.conduct1_level;
evaluate.conduct2_level = requestBody.conduct2_level;
@ -402,24 +463,15 @@ export class EvaluateChairmanController extends Controller {
evaluate.discipline5_level = requestBody.discipline5_level;
evaluate.behavior_other_desc = requestBody.behavior_orther.text;
evaluate.behavior_other_level =
requestBody.behavior_orther.text != ""
? Number(requestBody.behavior_orther.level)
: 0;
requestBody.behavior_orther.text != "" ? Number(requestBody.behavior_orther.level) : 0;
evaluate.develop_orientation_score = requestBody.develop_orientation_score;
evaluate.develop_self_learning_score =
requestBody.develop_self_learning_score;
evaluate.develop_training_seminar_score =
requestBody.develop_training_seminar_score;
evaluate.develop_other_training_score =
requestBody.develop_other_training_score;
evaluate.develop_orientation_percent =
requestBody.develop_orientation_percent;
evaluate.develop_self_learning_percent =
requestBody.develop_self_learning_percent;
evaluate.develop_training_seminar_percent =
requestBody.develop_training_seminar_percent;
evaluate.develop_other_training_percent =
requestBody.develop_other_training_percent;
evaluate.develop_self_learning_score = requestBody.develop_self_learning_score;
evaluate.develop_training_seminar_score = requestBody.develop_training_seminar_score;
evaluate.develop_other_training_score = requestBody.develop_other_training_score;
evaluate.develop_orientation_percent = requestBody.develop_orientation_percent;
evaluate.develop_self_learning_percent = requestBody.develop_self_learning_percent;
evaluate.develop_training_seminar_percent = requestBody.develop_training_seminar_percent;
evaluate.develop_other_training_percent = requestBody.develop_other_training_percent;
evaluate.develop_result = requestBody.develop_result;
evaluate.achievement_score = requestBody.achievement_score;
evaluate.achievement_score_total = requestBody.achievement_score_total;

View file

@ -20,27 +20,22 @@ import { AppDataSource } from "../database/data-source";
import { AssignDirector } from "../entities/AssignDirector";
import HttpError from "../interfaces/http-error";
import { Assign } from "../entities/Assign";
import {
CreateEvaluateCommander,
EvaluateCommander,
} from "../entities/EvaluateCommander";
import { CreateEvaluateCommander, EvaluateCommander } from "../entities/EvaluateCommander";
import { Personal } from "../entities/Personal";
import CallAPI from "../interfaces/call-api";
@Route("api/v1/evaluate")
import permission from "../interfaces/permission";
@Route("api/v1/probation/evaluate")
@Tags("แบบประเมินผล (ผู้บังคับบัญชา)")
@Security("bearerAuth")
@Response(
HttpStatusCode.INTERNAL_SERVER_ERROR,
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง"
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง",
)
@SuccessResponse(HttpStatusCode.OK, "สำเร็จ")
export class EvaluateController extends Controller {
private assignDirectorRepository =
AppDataSource.getRepository(AssignDirector);
private assignDirectorRepository = AppDataSource.getRepository(AssignDirector);
private assignRepository = AppDataSource.getRepository(Assign);
private evaluateCommanderRepository =
AppDataSource.getRepository(EvaluateCommander);
private evaluateCommanderRepository = AppDataSource.getRepository(EvaluateCommander);
private personalRepository = AppDataSource.getRepository(Personal);
/**
@ -50,10 +45,9 @@ export class EvaluateController extends Controller {
*
*/
@Get("create")
async CreateEvaluate(
@Query() assign_id: string,
@Request() request: RequestWithUser
) {
async CreateEvaluate(@Query() assign_id: string, @Request() request: RequestWithUser) {
await new permission().PermissionGet(request, "SYS_PROBATION");
const director = await this.assignDirectorRepository.findOne({
select: ["personal_id"],
where: {
@ -62,7 +56,7 @@ export class EvaluateController extends Controller {
},
});
if (!director) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
}
const director_id = director.personal_id;
@ -71,10 +65,7 @@ export class EvaluateController extends Controller {
where: { id: assign_id },
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const profile = await (assign.profile
@ -82,10 +73,7 @@ export class EvaluateController extends Controller {
...assign.profile,
id: assign.profile.personal_id,
name:
assign.profile.prefixName +
assign.profile.firstName +
" " +
assign.profile.lastName,
assign.profile.prefixName + assign.profile.firstName + " " + assign.profile.lastName,
Oc: assign.profile.organization,
}
: null);
@ -102,23 +90,18 @@ export class EvaluateController extends Controller {
? assign.date_start
: findEndDate(evaluate_amount * 3, assign.date_start);
const commanderData = await this.assignDirectorRepository.find({
select: [
"personal_id",
"dated",
"fullname",
"position",
"posType",
"posLevel",
],
const commanderData = await this.assignDirectorRepository.findOne({
select: ["personal_id", "dated", "fullname", "position", "posType", "posLevel"],
where: { personal_id: director_id },
});
const commander = await commanderData.map((element) => ({
...element,
name: element.fullname,
label: `${element.fullname} (${element.position}, ${element.posType}: ${element.posLevel})`,
}));
if (!commanderData) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้บังคับบัญชา");
}
const commander = await {
...commanderData,
name: commanderData.fullname,
label: `${commanderData.fullname} (${commanderData.position}, ${commanderData.posType}: ${commanderData.posLevel})`,
};
return new HttpSuccess({
person: profile,
@ -137,7 +120,13 @@ export class EvaluateController extends Controller {
*
*/
@Get("")
async GetEvaluate(@Query() assign_id: string, @Query() evaluate_no?: string) {
async GetEvaluate(
@Request() request: RequestWithUser,
@Query() assign_id: string,
@Query() evaluate_no?: string,
) {
await new permission().PermissionGet(request, "SYS_PROBATION");
// ต้องปรับเป็น id ของคนที่ access เข้ามา
const director = await this.assignDirectorRepository.findOne({
select: ["personal_id"],
@ -147,7 +136,7 @@ export class EvaluateController extends Controller {
},
});
if (!director) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
}
const director_id = director.personal_id;
let evaluate: any = null;
@ -160,26 +149,29 @@ export class EvaluateController extends Controller {
},
});
} else {
evaluate = await this.evaluateCommanderRepository.findOne({
evaluate = await this.evaluateCommanderRepository.find({
where: {
director_id,
assign_id,
},
});
if (evaluate)
evaluate = await evaluate.map((element: EvaluateCommander) => ({
...element,
no: Number(element.no),
}));
}
if (!evaluate) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบประเมิน");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบประเมิน");
}
const assign = await this.assignRepository.findOne({
where: { id: assign_id },
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
// const profile = await (assign.profile
@ -208,14 +200,7 @@ export class EvaluateController extends Controller {
// : findEndDate(evaluate_amount * 3, assign.date_start);
const directorData = await this.assignDirectorRepository.find({
select: [
"personal_id",
"dated",
"fullname",
"position",
"posType",
"posLevel",
],
select: ["personal_id", "dated", "fullname", "position", "posType", "posLevel"],
where: { personal_id: director_id },
});
@ -262,8 +247,10 @@ export class EvaluateController extends Controller {
async PostData(
@Query() assign_id: string,
@Body() requestBody: CreateEvaluateCommander,
@Request() request: RequestWithUser
@Request() request: RequestWithUser,
) {
await new permission().PermissionUpdate(request, "SYS_PROBATION");
const director = await this.assignDirectorRepository.findOne({
select: ["personal_id"],
where: {
@ -272,7 +259,7 @@ export class EvaluateController extends Controller {
},
});
if (!director) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
}
const director_id = director.personal_id;
@ -282,10 +269,7 @@ export class EvaluateController extends Controller {
where: { id: assign_id },
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const postData: any = await {
@ -304,9 +288,7 @@ export class EvaluateController extends Controller {
: 0,
behavior_other_desc: requestBody.behavior_orther.text,
behavior_other_level:
requestBody.behavior_orther.text != ""
? Number(requestBody.behavior_orther.level)
: 0,
requestBody.behavior_orther.text != "" ? Number(requestBody.behavior_orther.level) : 0,
createdUserId: request.user.sub,
createdFullName: request.user.name,
@ -350,11 +332,13 @@ export class EvaluateController extends Controller {
*/
@Put("")
async UpdateData(
@Query() assign_id: string,
// @Query() assign_id: string,
@Query() evaluate_id: string,
@Body() requestBody: CreateEvaluateCommander,
@Request() request: RequestWithUser
@Request() request: RequestWithUser,
) {
await new permission().PermissionUpdate(request, "SYS_PROBATION");
let evaluate = await this.evaluateCommanderRepository.findOne({
where: { id: evaluate_id },
});
@ -362,7 +346,7 @@ export class EvaluateController extends Controller {
const before = evaluate;
if (!evaluate) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการประเมิน");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการประเมิน");
}
evaluate.commander_dated = requestBody.commander_dated;
@ -376,9 +360,7 @@ export class EvaluateController extends Controller {
? requestBody.achievement_other.text
: "";
evaluate.achievement_other_level =
requestBody.achievement_other.text != ""
? Number(requestBody.achievement_other.level)
: 0;
requestBody.achievement_other.text != "" ? Number(requestBody.achievement_other.level) : 0;
evaluate.conduct1_level = requestBody.conduct1_level;
evaluate.conduct2_level = requestBody.conduct2_level;
@ -394,9 +376,7 @@ export class EvaluateController extends Controller {
evaluate.discipline5_level = requestBody.discipline5_level;
evaluate.behavior_other_desc = requestBody.behavior_orther.text;
evaluate.behavior_other_level =
requestBody.behavior_orther.text != ""
? Number(requestBody.behavior_orther.level)
: 0;
requestBody.behavior_orther.text != "" ? Number(requestBody.behavior_orther.level) : 0;
evaluate.behavior_strength_desc = requestBody.behavior_strength_desc;
evaluate.behavior_improve_desc = requestBody.behavior_improve_desc;
evaluate.orientation = requestBody.orientation;

View file

@ -22,34 +22,25 @@ import HttpError from "../interfaces/http-error";
import { Assign } from "../entities/Assign";
import { Personal } from "../entities/Personal";
import { AssignOutput } from "../entities/AssignOutput";
import {
CreateEvaluateAssessor,
EvaluateAssessor,
} from "../entities/EvaluateAssessor";
import {
CreateEvaluateAchievement,
EvaluateAchievement,
} from "../entities/EvaluateAchievement";
import { CreateEvaluateAssessor, EvaluateAssessor } from "../entities/EvaluateAssessor";
import { CreateEvaluateAchievement, EvaluateAchievement } from "../entities/EvaluateAchievement";
import CallAPI from "../interfaces/call-api";
@Route("api/v1/evaluate-record")
import permission from "../interfaces/permission";
@Route("api/v1/probation/evaluate-record")
@Tags("แบบบันทึกผล")
@Security("bearerAuth")
@Response(
HttpStatusCode.INTERNAL_SERVER_ERROR,
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง"
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง",
)
@SuccessResponse(HttpStatusCode.OK, "สำเร็จ")
export class EvaluateRecordController extends Controller {
private assignDirectorRepository =
AppDataSource.getRepository(AssignDirector);
private assignDirectorRepository = AppDataSource.getRepository(AssignDirector);
private assignRepository = AppDataSource.getRepository(Assign);
private personalRepository = AppDataSource.getRepository(Personal);
private assignOutputRepository = AppDataSource.getRepository(AssignOutput);
private evaluateAssessorRepository =
AppDataSource.getRepository(EvaluateAssessor);
private evaluateAchievementRepository =
AppDataSource.getRepository(EvaluateAchievement);
private evaluateAssessorRepository = AppDataSource.getRepository(EvaluateAssessor);
private evaluateAchievementRepository = AppDataSource.getRepository(EvaluateAchievement);
/**
* API
@ -58,19 +49,11 @@ export class EvaluateRecordController extends Controller {
*
*/
@Get("create")
async GetCreate(
@Query() assign_id: string,
@Request() request: RequestWithUser
) {
async GetCreate(@Query() assign_id: string, @Request() request: RequestWithUser) {
await new permission().PermissionGet(request, "SYS_PROBATION");
const directorData = await this.assignDirectorRepository.findOne({
select: [
"personal_id",
"dated",
"fullname",
"position",
"posType",
"posLevel",
],
select: ["personal_id", "dated", "fullname", "position", "posType", "posLevel"],
where: {
assign_id,
role: "mentor",
@ -78,7 +61,7 @@ export class EvaluateRecordController extends Controller {
});
if (!directorData) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
}
const director = await {
@ -96,10 +79,7 @@ export class EvaluateRecordController extends Controller {
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const profileData = await this.personalRepository.findOne({
@ -117,16 +97,12 @@ export class EvaluateRecordController extends Controller {
},
});
if (!profileData) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
}
const profile = await {
id: profileData.personal_id,
name:
profileData.prefixName +
profileData.firstName +
" " +
profileData.lastName,
name: profileData.prefixName + profileData.firstName + " " + profileData.lastName,
positionName: profileData.positionName,
positionLevelName: profileData.positionLevelName,
Oc: profileData.organization,
@ -153,22 +129,12 @@ export class EvaluateRecordController extends Controller {
: findEndDate(evaluate_amount * 2, assign.date_start));
var commanderData = await this.assignDirectorRepository.findOne({
select: [
"personal_id",
"dated",
"fullname",
"position",
"posType",
"posLevel",
],
select: ["personal_id", "dated", "fullname", "position", "posType", "posLevel"],
where: { personal_id: director_id },
});
if (!commanderData) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลผู้บังคับบัญชา"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้บังคับบัญชา");
}
const commander = await {
@ -195,7 +161,13 @@ export class EvaluateRecordController extends Controller {
*
*/
@Get("")
async GetData(@Query() assign_id: string, @Query() evaluate_no?: string) {
async GetData(
@Request() request: RequestWithUser,
@Query() assign_id: string,
@Query() evaluate_no?: string,
) {
await new permission().PermissionGet(request, "SYS_PROBATION");
const director = await this.assignDirectorRepository.findOne({
select: ["personal_id"],
where: {
@ -204,7 +176,7 @@ export class EvaluateRecordController extends Controller {
},
});
if (!director) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
}
const director_id = director.personal_id;
@ -221,23 +193,18 @@ export class EvaluateRecordController extends Controller {
});
if (!evaluate) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบประเมิน");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบประเมิน");
}
const achievementData = await this.evaluateAchievementRepository.find({
select: [
"output_desc",
"evaluate_expect_level",
"output_desc",
"evaluate_output_level",
],
select: ["output_desc", "evaluate_expect_level", "output_desc", "evaluate_output_level"],
where: {
evaluate_id: evaluate.id,
},
order: { output_id: "ASC" },
});
if (!achievementData) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
}
const achievements = await achievementData.map((achievement) => {
@ -252,7 +219,7 @@ export class EvaluateRecordController extends Controller {
id: evaluate.id,
director_id: evaluate.director_id,
assign_id,
no: evaluate.no,
no: Number(evaluate.no),
date_start: evaluate.date_start,
date_finish: evaluate.date_finish,
assessor_dated: evaluate.assessor_dated,
@ -299,25 +266,23 @@ export class EvaluateRecordController extends Controller {
});
if (!evaluate) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
}
await Promise.all(
evaluate.map(async (element: any, index: number) => {
const achievementData = await this.evaluateAchievementRepository.find(
{
select: [
"output_desc",
"evaluate_expect_level",
"output_desc",
"evaluate_output_level",
],
where: {
evaluate_id: element.id,
},
order: { output_id: "ASC" },
}
);
const achievementData = await this.evaluateAchievementRepository.find({
select: [
"output_desc",
"evaluate_expect_level",
"output_desc",
"evaluate_output_level",
],
where: {
evaluate_id: element.id,
},
order: { output_id: "ASC" },
});
const achievements = await achievementData.map((achievement) => {
return {
@ -331,7 +296,7 @@ export class EvaluateRecordController extends Controller {
id: element.id,
director_id: element.director_id,
assign_id,
no: element.no,
no: Number(element.no),
date_start: element.date_start,
date_finish: element.date_finish,
assessor_dated: element.assessor_dated,
@ -368,7 +333,7 @@ export class EvaluateRecordController extends Controller {
updatedAt: element.updatedAt,
achievements: achievements,
};
})
}),
);
}
@ -379,10 +344,7 @@ export class EvaluateRecordController extends Controller {
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const experimenteeData = await this.personalRepository.find({
@ -405,14 +367,7 @@ export class EvaluateRecordController extends Controller {
}));
const directorData = await this.assignDirectorRepository.find({
select: [
"personal_id",
"dated",
"fullname",
"position",
"posType",
"posLevel",
],
select: ["personal_id", "dated", "fullname", "position", "posType", "posLevel"],
where: { personal_id: director_id },
});
@ -440,8 +395,10 @@ export class EvaluateRecordController extends Controller {
async PostData(
@Query() assign_id: string,
@Body() requestBody: CreateEvaluateAssessor,
@Request() request: RequestWithUser
@Request() request: RequestWithUser,
) {
await new permission().PermissionUpdate(request, "SYS_PROBATION");
const director = await this.assignDirectorRepository.findOne({
select: ["personal_id"],
where: {
@ -450,7 +407,7 @@ export class EvaluateRecordController extends Controller {
},
});
if (!director) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
}
const director_id = director.personal_id;
@ -460,10 +417,7 @@ export class EvaluateRecordController extends Controller {
where: { id: assign_id },
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const postData: any = await {
@ -482,9 +436,7 @@ export class EvaluateRecordController extends Controller {
: 0,
behavior_other_desc: requestBody.behavio_orther.text,
behavior_other_level:
requestBody.behavio_orther.text != ""
? Number(requestBody.behavio_orther.level)
: 0,
requestBody.behavio_orther.text != "" ? Number(requestBody.behavio_orther.level) : 0,
behavior_strength_desc: requestBody.behavior_strength_desc,
behavior_improve_desc: requestBody.behavior_improve_desc,
orientation: requestBody.orientation,
@ -497,10 +449,9 @@ export class EvaluateRecordController extends Controller {
updateFullName: request.user.name,
};
const evaluateAssessor = await this.evaluateAssessorRepository.save(
postData,
{ data: request }
);
const evaluateAssessor = await this.evaluateAssessorRepository.save(postData, {
data: request,
});
if (evaluateAssessor) {
await Promise.all(
@ -513,9 +464,7 @@ export class EvaluateRecordController extends Controller {
assessor_id: director_id,
evaluate_expect_level: Number(expenct.level),
output_desc: requestBody.evaluate_ouptut[index].text,
evaluate_output_level: Number(
requestBody.evaluate_ouptut[index].level
),
evaluate_output_level: Number(requestBody.evaluate_ouptut[index].level),
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
@ -524,7 +473,7 @@ export class EvaluateRecordController extends Controller {
await this.evaluateAchievementRepository.save(evaluateAchievement, {
data: request,
});
})
}),
);
}
@ -564,8 +513,10 @@ export class EvaluateRecordController extends Controller {
@Query() assign_id: string,
@Query() evaluate_id: string,
@Body() requestBody: CreateEvaluateAssessor,
@Request() request: RequestWithUser
@Request() request: RequestWithUser,
) {
await new permission().PermissionUpdate(request, "SYS_PROBATION");
const director = await this.assignDirectorRepository.findOne({
select: ["personal_id"],
where: {
@ -574,7 +525,7 @@ export class EvaluateRecordController extends Controller {
},
});
if (!director) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
}
const director_id = director.personal_id;
@ -586,7 +537,7 @@ export class EvaluateRecordController extends Controller {
const before = evaluate;
if (!evaluate) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการประเมิน");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการประเมิน");
}
evaluate.assessor_dated = requestBody.assessor_dated;
@ -599,9 +550,7 @@ export class EvaluateRecordController extends Controller {
? requestBody.achievement_other.text
: "";
evaluate.achievement_other_level =
requestBody.achievement_other.text != ""
? Number(requestBody.achievement_other.level)
: 0;
requestBody.achievement_other.text != "" ? Number(requestBody.achievement_other.level) : 0;
evaluate.achievement_strength_desc = requestBody.achievement_strength_desc;
evaluate.achievement_improve_desc = requestBody.achievement_improve_desc;
@ -619,9 +568,7 @@ export class EvaluateRecordController extends Controller {
evaluate.discipline5_level = requestBody.discipline5_level;
evaluate.behavior_other_desc = requestBody.behavio_orther.text;
evaluate.behavior_other_level =
requestBody.behavio_orther.text != ""
? Number(requestBody.behavio_orther.level)
: 0;
requestBody.behavio_orther.text != "" ? Number(requestBody.behavio_orther.level) : 0;
evaluate.behavior_strength_desc = requestBody.behavior_strength_desc;
evaluate.behavior_improve_desc = requestBody.behavior_improve_desc;
evaluate.orientation = requestBody.orientation;
@ -631,10 +578,9 @@ export class EvaluateRecordController extends Controller {
evaluate.updateUserId = request.user.sub;
evaluate.updateFullName = request.user.name;
const evaluateAssessor = await this.evaluateAssessorRepository.save(
evaluate,
{ data: request }
);
const evaluateAssessor = await this.evaluateAssessorRepository.save(evaluate, {
data: request,
});
if (evaluateAssessor) {
await this.evaluateAchievementRepository.delete({
@ -649,9 +595,7 @@ export class EvaluateRecordController extends Controller {
assessor_id: director_id,
evaluate_expect_level: Number(expenct.level),
output_desc: requestBody.evaluate_ouptut[index].text,
evaluate_output_level: Number(
requestBody.evaluate_ouptut[index].level
),
evaluate_output_level: Number(requestBody.evaluate_ouptut[index].level),
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
@ -660,7 +604,7 @@ export class EvaluateRecordController extends Controller {
await this.evaluateAchievementRepository.save(evaluateAchievement, {
data: request,
});
})
}),
);
}
@ -676,19 +620,11 @@ export class EvaluateRecordController extends Controller {
*
*/
@Get("create/commander")
async GetCreateCommander(
@Query() assign_id: string,
@Request() request: RequestWithUser
) {
async GetCreateCommander(@Query() assign_id: string, @Request() request: RequestWithUser) {
await new permission().PermissionGet(request, "SYS_PROBATION");
const directorData = await this.assignDirectorRepository.findOne({
select: [
"personal_id",
"dated",
"fullname",
"position",
"posType",
"posLevel",
],
select: ["personal_id", "dated", "fullname", "position", "posType", "posLevel"],
where: {
assign_id,
role: "commander",
@ -696,7 +632,7 @@ export class EvaluateRecordController extends Controller {
});
if (!directorData) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
}
const director = await {
@ -714,10 +650,7 @@ export class EvaluateRecordController extends Controller {
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const profileData = await this.personalRepository.findOne({
@ -735,16 +668,12 @@ export class EvaluateRecordController extends Controller {
},
});
if (!profileData) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
}
const profile = await {
id: profileData.personal_id,
name:
profileData.prefixName +
profileData.firstName +
" " +
profileData.lastName,
name: profileData.prefixName + profileData.firstName + " " + profileData.lastName,
positionName: profileData.positionName,
positionLevelName: profileData.positionLevelName,
Oc: profileData.organization,
@ -789,9 +718,12 @@ export class EvaluateRecordController extends Controller {
*/
@Get("commander")
async GetDataCommander(
@Request() request: RequestWithUser,
@Query() assign_id: string,
@Query() evaluate_no?: string
@Query() evaluate_no?: string,
) {
await new permission().PermissionGet(request, "SYS_PROBATION");
const director = await this.assignDirectorRepository.findOne({
select: ["personal_id"],
where: {
@ -800,7 +732,7 @@ export class EvaluateRecordController extends Controller {
},
});
if (!director) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
}
const director_id = director.personal_id;
@ -817,23 +749,18 @@ export class EvaluateRecordController extends Controller {
});
if (!evaluate) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบประเมิน");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบประเมิน");
}
const achievementData = await this.evaluateAchievementRepository.find({
select: [
"output_desc",
"evaluate_expect_level",
"output_desc",
"evaluate_output_level",
],
select: ["output_desc", "evaluate_expect_level", "output_desc", "evaluate_output_level"],
where: {
evaluate_id: evaluate.id,
},
order: { output_id: "ASC" },
});
if (!achievementData) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
}
const achievements = await achievementData.map((achievement) => {
@ -848,7 +775,7 @@ export class EvaluateRecordController extends Controller {
id: evaluate.id,
director_id: evaluate.director_id,
assign_id,
no: evaluate.no,
no: Number(evaluate.no),
date_start: evaluate.date_start,
date_finish: evaluate.date_finish,
assessor_dated: evaluate.assessor_dated,
@ -895,25 +822,23 @@ export class EvaluateRecordController extends Controller {
});
if (!evaluate) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
}
await Promise.all(
evaluate.map(async (element: any, index: number) => {
const achievementData = await this.evaluateAchievementRepository.find(
{
select: [
"output_desc",
"evaluate_expect_level",
"output_desc",
"evaluate_output_level",
],
where: {
evaluate_id: element.id,
},
order: { output_id: "ASC" },
}
);
const achievementData = await this.evaluateAchievementRepository.find({
select: [
"output_desc",
"evaluate_expect_level",
"output_desc",
"evaluate_output_level",
],
where: {
evaluate_id: element.id,
},
order: { output_id: "ASC" },
});
const achievements = await achievementData.map((achievement) => {
return {
@ -927,7 +852,7 @@ export class EvaluateRecordController extends Controller {
id: element.id,
director_id: element.director_id,
assign_id,
no: element.no,
no: Number(element.no),
date_start: element.date_start,
date_finish: element.date_finish,
assessor_dated: element.assessor_dated,
@ -964,7 +889,7 @@ export class EvaluateRecordController extends Controller {
updatedAt: element.updatedAt,
achievements: achievements,
};
})
}),
);
}
@ -975,10 +900,7 @@ export class EvaluateRecordController extends Controller {
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const experimenteeData = await this.personalRepository.find({
@ -1001,14 +923,7 @@ export class EvaluateRecordController extends Controller {
}));
const directorData = await this.assignDirectorRepository.find({
select: [
"personal_id",
"dated",
"fullname",
"position",
"posType",
"posLevel",
],
select: ["personal_id", "dated", "fullname", "position", "posType", "posLevel"],
where: { personal_id: director_id },
});
@ -1036,8 +951,10 @@ export class EvaluateRecordController extends Controller {
async PostDataCommander(
@Query() assign_id: string,
@Body() requestBody: CreateEvaluateAssessor,
@Request() request: RequestWithUser
@Request() request: RequestWithUser,
) {
await new permission().PermissionUpdate(request, "SYS_PROBATION");
const director = await this.assignDirectorRepository.findOne({
select: ["personal_id"],
where: {
@ -1046,7 +963,7 @@ export class EvaluateRecordController extends Controller {
},
});
if (!director) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
}
const director_id = director.personal_id;
@ -1056,10 +973,7 @@ export class EvaluateRecordController extends Controller {
where: { id: assign_id },
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const postData: any = await {
@ -1078,9 +992,7 @@ export class EvaluateRecordController extends Controller {
: 0,
behavior_other_desc: requestBody.behavio_orther.text,
behavior_other_level:
requestBody.behavio_orther.text != ""
? Number(requestBody.behavio_orther.level)
: 0,
requestBody.behavio_orther.text != "" ? Number(requestBody.behavio_orther.level) : 0,
behavior_strength_desc: requestBody.behavior_strength_desc,
behavior_improve_desc: requestBody.behavior_improve_desc,
orientation: requestBody.orientation,
@ -1093,10 +1005,9 @@ export class EvaluateRecordController extends Controller {
updateFullName: request.user.name,
};
const evaluateAssessor = await this.evaluateAssessorRepository.save(
postData,
{ data: request }
);
const evaluateAssessor = await this.evaluateAssessorRepository.save(postData, {
data: request,
});
if (evaluateAssessor) {
await Promise.all(
requestBody.evaluate_expenct_level.map(async (expenct, index) => {
@ -1107,9 +1018,7 @@ export class EvaluateRecordController extends Controller {
assessor_id: director_id,
evaluate_expect_level: Number(expenct.level),
output_desc: requestBody.evaluate_ouptut[index].text,
evaluate_output_level: Number(
requestBody.evaluate_ouptut[index].level
),
evaluate_output_level: Number(requestBody.evaluate_ouptut[index].level),
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
@ -1118,7 +1027,7 @@ export class EvaluateRecordController extends Controller {
await this.evaluateAchievementRepository.save(evaluateAchievement, {
data: request,
});
})
}),
);
}
@ -1157,8 +1066,10 @@ export class EvaluateRecordController extends Controller {
@Query() assign_id: string,
@Query() evaluate_id: string,
@Body() requestBody: CreateEvaluateAssessor,
@Request() request: RequestWithUser
@Request() request: RequestWithUser,
) {
await new permission().PermissionUpdate(request, "SYS_PROBATION");
const director = await this.assignDirectorRepository.findOne({
select: ["personal_id"],
where: {
@ -1167,7 +1078,7 @@ export class EvaluateRecordController extends Controller {
},
});
if (!director) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
}
const director_id = director.personal_id;
@ -1177,7 +1088,7 @@ export class EvaluateRecordController extends Controller {
});
if (!evaluate) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการประเมิน");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการประเมิน");
}
const before = evaluate;
@ -1191,9 +1102,7 @@ export class EvaluateRecordController extends Controller {
? requestBody.achievement_other.text
: "";
evaluate.achievement_other_level =
requestBody.achievement_other.text != ""
? Number(requestBody.achievement_other.level)
: 0;
requestBody.achievement_other.text != "" ? Number(requestBody.achievement_other.level) : 0;
evaluate.achievement_strength_desc = requestBody.achievement_strength_desc;
evaluate.achievement_improve_desc = requestBody.achievement_improve_desc;
@ -1211,9 +1120,7 @@ export class EvaluateRecordController extends Controller {
evaluate.discipline5_level = requestBody.discipline5_level;
evaluate.behavior_other_desc = requestBody.behavio_orther.text;
evaluate.behavior_other_level =
requestBody.behavio_orther.text != ""
? Number(requestBody.behavio_orther.level)
: 0;
requestBody.behavio_orther.text != "" ? Number(requestBody.behavio_orther.level) : 0;
evaluate.behavior_strength_desc = requestBody.behavior_strength_desc;
evaluate.behavior_improve_desc = requestBody.behavior_improve_desc;
evaluate.orientation = requestBody.orientation;
@ -1223,10 +1130,9 @@ export class EvaluateRecordController extends Controller {
evaluate.updateUserId = request.user.sub;
evaluate.updateFullName = request.user.name;
const evaluateAssessor = await this.evaluateAssessorRepository.save(
evaluate,
{ data: request }
);
const evaluateAssessor = await this.evaluateAssessorRepository.save(evaluate, {
data: request,
});
if (evaluateAssessor) {
await this.evaluateAchievementRepository.delete({
@ -1241,9 +1147,7 @@ export class EvaluateRecordController extends Controller {
assessor_id: director_id,
evaluate_expect_level: Number(expenct.level),
output_desc: requestBody.evaluate_ouptut[index].text,
evaluate_output_level: Number(
requestBody.evaluate_ouptut[index].level
),
evaluate_output_level: Number(requestBody.evaluate_ouptut[index].level),
createdUserId: request.user.sub,
createdFullName: request.user.name,
updateUserId: request.user.sub,
@ -1252,7 +1156,7 @@ export class EvaluateRecordController extends Controller {
await this.evaluateAchievementRepository.save(evaluateAchievement, {
data: request,
});
})
}),
);
}

View file

@ -20,35 +20,26 @@ import { AppDataSource } from "../database/data-source";
import { AssignDirector } from "../entities/AssignDirector";
import HttpError from "../interfaces/http-error";
import { Assign } from "../entities/Assign";
import {
CreateEvaluateCommander,
EvaluateCommander,
} from "../entities/EvaluateCommander";
import { Personal } from "../entities/Personal";
import CallAPI from "../interfaces/call-api";
import { EvaluateChairman } from "../entities/EvaluateChairman";
import {
CreateEvaluateResult,
EvaluateResult,
} from "../entities/EvaluateResult";
import { CreateEvaluateResult, EvaluateResult } from "../entities/EvaluateResult";
import permission from "../interfaces/permission";
@Route("api/v1/evaluate-result")
@Route("api/v1/probation/evaluate-result")
@Tags("แบบรายงานการประเมินฯ")
@Security("bearerAuth")
@Response(
HttpStatusCode.INTERNAL_SERVER_ERROR,
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง"
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง",
)
@SuccessResponse(HttpStatusCode.OK, "สำเร็จ")
export class EvaluateResultController extends Controller {
private assignDirectorRepository =
AppDataSource.getRepository(AssignDirector);
private assignDirectorRepository = AppDataSource.getRepository(AssignDirector);
private assignRepository = AppDataSource.getRepository(Assign);
private evaluateChairmanRepository =
AppDataSource.getRepository(EvaluateChairman);
private evaluateChairmanRepository = AppDataSource.getRepository(EvaluateChairman);
private personalRepository = AppDataSource.getRepository(Personal);
private evaluateResultRepository =
AppDataSource.getRepository(EvaluateResult);
private evaluateResultRepository = AppDataSource.getRepository(EvaluateResult);
/**
* API
@ -57,19 +48,15 @@ export class EvaluateResultController extends Controller {
*
*/
@Get("create")
async CreateEvaluate(
@Query() assign_id: string,
@Request() request: RequestWithUser
) {
async CreateEvaluate(@Query() assign_id: string, @Request() request: RequestWithUser) {
await new permission().PermissionGet(request, "SYS_PROBATION");
const assign = await this.assignRepository.findOne({
relations: ["profile"],
where: { id: assign_id },
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const profile = await (assign.profile
@ -77,46 +64,77 @@ export class EvaluateResultController extends Controller {
...assign.profile,
id: assign.profile.personal_id,
name:
assign.profile.prefixName +
assign.profile.firstName +
" " +
assign.profile.lastName,
assign.profile.prefixName + assign.profile.firstName + " " + assign.profile.lastName,
Oc: assign.profile.organization,
}
: null);
const directorData = await this.assignDirectorRepository.find({
where: { assign_id },
order: { ordering: "ASC" },
});
if (!directorData) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลผู้ดูแล ผู้บังคับบัญชาและประธาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล ผู้บังคับบัญชาและประธาน");
}
let mentors = "";
let mentors = [];
const mentorList = await directorData.filter((x) => x.role == "mentor");
if (mentorList.length > 0) {
for (let index = 0; index < mentorList.length; index++) {
const e = await mentorList[index];
mentors += e.fullname;
if (index < mentorList.length - 1) {
mentors += ", ";
}
mentors.push({
personal_id: e.personal_id,
dated: e.dated,
name: e.fullname,
label:
e.fullname + " " + (e.position ? `(${e.position}, ${e.posType}: ${e.posLevel})` : ""),
position: e.position,
posType: e.posType,
posLevel: e.posLevel,
});
}
}
const commanderData = await (directorData.find(
(x) => x.role == "commander"
) ?? null);
const commander = commanderData ? commanderData.fullname : null;
const commanderData = await (directorData.find((x) => x.role == "commander") ?? null);
const chairmanData = await (directorData.find(
(x) => x.role == "chairman"
) ?? null);
const chairman = chairmanData ? chairmanData.fullname : null;
const commander =
commanderData != null
? {
personal_id: commanderData.personal_id,
dated: commanderData.dated,
name: commanderData.fullname,
label:
commanderData.fullname +
" " +
(commanderData.position
? `(${commanderData.position}, ${commanderData.posType}: ${commanderData.posLevel})`
: ""),
position: commanderData.position,
posType: commanderData.posType,
posLevel: commanderData.posLevel,
}
: null;
const chairmanData = await (directorData.find((x) => x.role == "chairman") ?? null);
const chairman =
chairmanData != null
? {
personal_id: chairmanData.personal_id,
dated: chairmanData.dated,
name: chairmanData.fullname,
label:
chairmanData.fullname +
" " +
(chairmanData.position
? `(${chairmanData.position}, ${chairmanData.posType}: ${chairmanData.posLevel})`
: ""),
position: chairmanData.position,
posType: chairmanData.posType,
posLevel: chairmanData.posLevel,
}
: null;
const resultData = await this.evaluateChairmanRepository.findOne({
select: [
@ -131,7 +149,7 @@ export class EvaluateResultController extends Controller {
});
if (!resultData) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการประเมินผล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการประเมินผล");
}
const develop_complete = await (resultData.develop_orientation_score > 0 &&
@ -164,7 +182,13 @@ export class EvaluateResultController extends Controller {
*
*/
@Get("")
async GetEvaluate(@Query() assign_id: string, @Query() evaluate_no?: string) {
async GetEvaluate(
@Request() request: RequestWithUser,
@Query() assign_id: string,
@Query() evaluate_no?: string,
) {
await new permission().PermissionGet(request, "SYS_PROBATION");
// ต้องปรับเป็น id ของคนที่ access เข้ามา
const director = await this.assignDirectorRepository.findOne({
select: ["personal_id"],
@ -174,11 +198,11 @@ export class EvaluateResultController extends Controller {
},
});
if (!director) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
}
const director_id = director.personal_id;
const evaluate = await this.evaluateChairmanRepository.findOne({
const evaluate = await this.evaluateResultRepository.findOne({
where: {
director_id,
assign_id,
@ -186,20 +210,17 @@ export class EvaluateResultController extends Controller {
});
if (!evaluate) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบประเมิน");
return new HttpSuccess(null);
}
const assign = await this.assignRepository.findOne({
where: { id: assign_id },
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const experimenteeData = await this.personalRepository.find({
const experimenteeData = await this.personalRepository.findOne({
select: [
"personal_id",
"prefixName",
@ -212,44 +233,82 @@ export class EvaluateResultController extends Controller {
where: { personal_id: assign.personal_id },
});
const experimentee = await experimenteeData.map((element) => ({
...element,
name: element.prefixName + element.firstName + " " + element.lastName,
Oc: element.organization,
}));
if (!experimenteeData) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
}
const experimentee = await {
...experimenteeData,
name:
experimenteeData.prefixName + experimenteeData.firstName + " " + experimenteeData.lastName,
Oc: experimenteeData.organization,
};
const directorData = await this.assignDirectorRepository.find({
where: { assign_id },
order: { ordering: "ASC" },
});
if (!directorData) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลผู้ดูแล ผู้บังคับบัญชาและประธาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล ผู้บังคับบัญชาและประธาน");
}
let mentors = "";
let mentors = [];
const mentorList = await directorData.filter((x) => x.role == "mentor");
if (mentorList.length > 0) {
for (let index = 0; index < mentorList.length; index++) {
const e = await mentorList[index];
mentors += e.fullname;
if (index < mentorList.length - 1) {
mentors += ", ";
}
mentors.push({
personal_id: e.personal_id,
dated: e.dated,
name: e.fullname,
label:
e.fullname + " " + (e.position ? `(${e.position}, ${e.posType}: ${e.posLevel})` : ""),
position: e.position,
posType: e.posType,
posLevel: e.posLevel,
});
}
}
const commanderData = await (directorData.find(
(x) => x.role == "commander"
) ?? null);
const commander = commanderData ? commanderData.fullname : null;
const commanderData = await (directorData.find((x) => x.role == "commander") ?? null);
const chairmanData = await (directorData.find(
(x) => x.role == "chairman"
) ?? null);
const chairman = chairmanData ? chairmanData.fullname : null;
const commander =
commanderData != null
? {
personal_id: commanderData.personal_id,
dated: commanderData.dated,
name: commanderData.fullname,
label:
commanderData.fullname +
" " +
(commanderData.position
? `(${commanderData.position}, ${commanderData.posType}: ${commanderData.posLevel})`
: ""),
position: commanderData.position,
posType: commanderData.posType,
posLevel: commanderData.posLevel,
}
: null;
const chairmanData = await (directorData.find((x) => x.role == "chairman") ?? null);
const chairman =
chairmanData != null
? {
personal_id: chairmanData.personal_id,
dated: chairmanData.dated,
name: chairmanData.fullname,
label:
chairmanData.fullname +
" " +
(chairmanData.position
? `(${chairmanData.position}, ${chairmanData.posType}: ${chairmanData.posLevel})`
: ""),
position: chairmanData.position,
posType: chairmanData.posType,
posLevel: chairmanData.posLevel,
}
: null;
return new HttpSuccess({
commander,
@ -271,8 +330,10 @@ export class EvaluateResultController extends Controller {
async PostData(
@Query() assign_id: string,
@Body() requestBody: CreateEvaluateResult,
@Request() request: RequestWithUser
@Request() request: RequestWithUser,
) {
await new permission().PermissionUpdate(request, "SYS_PROBATION");
const director = await this.assignDirectorRepository.findOne({
select: ["personal_id"],
where: {
@ -281,7 +342,7 @@ export class EvaluateResultController extends Controller {
},
});
if (!director) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล");
}
const director_id = director.personal_id;
@ -291,10 +352,7 @@ export class EvaluateResultController extends Controller {
where: { id: assign_id },
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const postData: any = await {
@ -304,8 +362,7 @@ export class EvaluateResultController extends Controller {
no: 1,
personal_id: assign.personal_id,
date_start: requestBody.start_date,
expand_month:
requestBody.pass_result == 3 ? Number(requestBody.expand_month) : 0,
expand_month: requestBody.pass_result == 3 ? Number(requestBody.expand_month) : 0,
createdUserId: request.user.sub,
createdFullName: request.user.name,
@ -323,7 +380,7 @@ export class EvaluateResultController extends Controller {
});
if (!personal) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
}
personal.probation_status =
requestBody.pass_result == 1
@ -366,8 +423,10 @@ export class EvaluateResultController extends Controller {
@Query() assign_id: string,
@Query() evaluate_id: string,
@Body() requestBody: CreateEvaluateResult,
@Request() request: RequestWithUser
@Request() request: RequestWithUser,
) {
await new permission().PermissionUpdate(request, "SYS_PROBATION");
let evaluate = await this.evaluateResultRepository.findOne({
where: { id: evaluate_id },
});
@ -375,7 +434,7 @@ export class EvaluateResultController extends Controller {
const before = evaluate;
if (!evaluate) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการประเมิน");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการประเมิน");
}
evaluate.date_start = requestBody.start_date;
@ -383,7 +442,9 @@ export class EvaluateResultController extends Controller {
evaluate.develop_complete = requestBody.develop_complete;
evaluate.pass_result = requestBody.pass_result;
evaluate.expand_month =
requestBody.pass_result == 3 ? requestBody.expand_month : 0;
requestBody.pass_result && requestBody.pass_result == 3
? Number(requestBody.expand_month)
: 0;
evaluate.reson = requestBody.reson;
evaluate.chairman_dated = requestBody.chairman_dated;
@ -400,17 +461,14 @@ export class EvaluateResultController extends Controller {
where: { id: assign_id },
});
if (!assign) {
return new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่พบข้อมูลแบบมอบหมายงาน"
);
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบมอบหมายงาน");
}
const personal = await this.personalRepository.findOne({
where: { personal_id: assign.personal_id },
});
if (!personal) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
}
personal.probation_status =
requestBody.pass_result == 1

View file

@ -1,11 +1,11 @@
import { Controller, Get, Route, Security, Tags } from "tsoa";
import { Controller, Get, Route, Tags } from "tsoa";
@Route("/hello")
@Route("/probation/hello")
@Tags("Test")
@Security("bearerAuth")
// @Security("bearerAuth")
export class AppController extends Controller {
@Get()
public async GET() {
return { message: "Hello Development" };
return { message: "Hello Probation System" };
}
}

View file

@ -21,12 +21,12 @@ import { Personal, PostPersonal } from "../entities/Personal";
import permission from "../interfaces/permission";
import { Assign } from "../entities/Assign";
@Route("api/v1/personal")
@Route("api/v1/probation/personal")
@Tags("Personal")
@Security("bearerAuth")
@Response(
HttpStatusCode.INTERNAL_SERVER_ERROR,
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง"
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง",
)
@SuccessResponse(HttpStatusCode.OK, "สำเร็จ")
export class PersonalController extends Controller {
@ -40,43 +40,25 @@ export class PersonalController extends Controller {
*
*/
@Post("add")
async AddPersonal(
@Body() requestBody: PostPersonal,
@Request() request: RequestWithUser
) {
async AddPersonal(@Body() requestBody: PostPersonal, @Request() request: RequestWithUser) {
await new permission().PermissionCreate(request, "SYS_PROBATION");
const checkPersonal: number = await this.personalRepository.count({
where: { personal_id: requestBody.id },
});
if (checkPersonal > 0) {
return new HttpError(
HttpStatusCode.BAD_REQUEST,
"ผู้ทดลองปฏิบัติหน้าที่ราชการนี้มีอยู่แล้ว"
);
throw new HttpError(HttpStatusCode.BAD_REQUEST, "ผู้ทดลองปฏิบัติหน้าที่ราชการนี้มีอยู่แล้ว");
}
let organization = await (requestBody.orgChild4Name
? requestBody.orgChild4Name + "/"
: "");
organization += await (requestBody.orgChild3Name
? requestBody.orgChild3Name + "/"
: "");
organization += await (requestBody.orgChild2Name
? requestBody.orgChild2Name + "/"
: "");
organization += await (requestBody.orgChild1Name
? requestBody.orgChild1Name + "/"
: "");
organization += await (requestBody.orgRootName
? requestBody.orgRootName
: "");
let organization = await (requestBody.orgChild4Name ? requestBody.orgChild4Name + "/" : "");
organization += await (requestBody.orgChild3Name ? requestBody.orgChild3Name + "/" : "");
organization += await (requestBody.orgChild2Name ? requestBody.orgChild2Name + "/" : "");
organization += await (requestBody.orgChild1Name ? requestBody.orgChild1Name + "/" : "");
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;
@ -87,12 +69,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 : "";
@ -135,10 +113,7 @@ export class PersonalController extends Controller {
});
if (!lists) {
return new HttpError(
HttpStatusCode.INTERNAL_SERVER_ERROR,
"ไม่สามารถแสดงข้อมูลได้"
);
throw new HttpError(HttpStatusCode.INTERNAL_SERVER_ERROR, "ไม่สามารถแสดงข้อมูลได้");
}
let result: any = [];
@ -163,7 +138,7 @@ export class PersonalController extends Controller {
order_number: item.order_number,
probation_status: item.probation_status,
});
})
}),
);
return new HttpSuccess({ data: result, total: total });
@ -176,17 +151,14 @@ export class PersonalController extends Controller {
*
*/
@Get("")
async GetPersonal(
@Request() request: RequestWithUser,
@Query() personal_id: string
) {
await new permission().PermissionList(request, "SYS_PROBATION");
async GetPersonal(@Request() request: RequestWithUser, @Query() personal_id: string) {
await new permission().PermissionGet(request, "SYS_PROBATION");
const person = await this.personalRepository.findOne({
where: { personal_id: personal_id },
});
if (!person) {
return new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลบุคคล");
}
const probation_no = await this.assignRepository.count({

File diff suppressed because it is too large Load diff

View file

@ -18,12 +18,12 @@ import { setLogDataDiff } from "../interfaces/utils";
import { Survey } from "../entities/Survey";
import { AppDataSource } from "../database/data-source";
@Route("api/v1/survey")
@Route("api/v1/probation/survey")
@Tags("Survey")
@Security("bearerAuth")
@Response(
HttpStatusCode.INTERNAL_SERVER_ERROR,
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง"
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง",
)
@SuccessResponse(HttpStatusCode.OK, "สำเร็จ")
export class SurveyController extends Controller {
@ -36,16 +36,13 @@ export class SurveyController extends Controller {
*
*/
@Get("")
async GetSurvey(
@Query() assign_id: string,
@Request() request: RequestWithUser
) {
const result = await this.surveyRepository.findOne({
async GetSurvey(@Query() assign_id: string) {
const data = await this.surveyRepository.findOne({
where: {
assign_id,
},
});
return new HttpSuccess(result);
return new HttpSuccess(data);
}
/**
@ -58,13 +55,13 @@ export class SurveyController extends Controller {
async PostSurvey(
@Query() assign_id: string,
@Body() requestBody: any,
@Request() request: RequestWithUser
@Request() request: RequestWithUser,
) {
const before = null;
const data = await { ...requestBody, personal_id: request.user.sub };
const data = await { ...requestBody, personal_id: request.user.sub, assign_id };
await this.surveyRepository.save(data, { data: request });
setLogDataDiff(request, { before, after: data });
return new HttpSuccess(data);
return new HttpSuccess();
}
}

View file

@ -1,20 +1,7 @@
import {
CreateEvaluateCommander,
EvaluateCommander,
} from "./EvaluateCommander";
import {
Entity,
Column,
OneToMany,
JoinColumn,
PrimaryGeneratedColumn,
ManyToOne,
} from "typeorm";
import { CreateEvaluateCommander, EvaluateCommander } from "./EvaluateCommander";
import { Entity, Column, OneToMany, JoinColumn, PrimaryGeneratedColumn, ManyToOne } from "typeorm";
import { EntityBase } from "./base/Base";
import {
AssignCompetencyGroup,
CreateAssignCompetencyGroup,
} from "./AssignCompetencyGroup";
import { AssignCompetencyGroup, CreateAssignCompetencyGroup } from "./AssignCompetencyGroup";
import { CreateSurvel, Survey } from "./Survey";
import { AssignCompetency, CreateAssignCompetency } from "./AssignCompetency";
import { AssignDirector, CreateAssignDirector } from "./AssignDirector";
@ -23,10 +10,7 @@ import { AssignKnowledge, CreateAssignKnowledge } from "./AssignKnowledge";
import { AssignLaw, CreateAssignLaw } from "./AssignLaw";
import { AssignOutput, CreateAssignOutput } from "./AssignOutput";
import { AssignSkill, CreateAssignSkill } from "./AssignSkill";
import {
CreateEvaluateAchievement,
EvaluateAchievement,
} from "./EvaluateAchievement";
import { CreateEvaluateAchievement, EvaluateAchievement } from "./EvaluateAchievement";
import { CreateEvaluateAssessor, EvaluateAssessor } from "./EvaluateAssessor";
import { CreateEvaluateChairman, EvaluateChairman } from "./EvaluateChairman";
import { CreateEvaluateResult, EvaluateResult } from "./EvaluateResult";
@ -96,28 +80,28 @@ export class Assign extends EntityBase {
})
active: number;
@Column({
nullable: true,
comment: "กฎหมายอื่นๆ",
})
other_desc!: string;
@ManyToOne(() => Personal, (person: Personal) => person.personal_id)
@JoinColumn({ name: "personal_id" })
profile: Personal;
@OneToMany(
() => AssignCompetencyGroup,
(competencyGroup: AssignCompetencyGroup) => competencyGroup.assign
(competencyGroup: AssignCompetencyGroup) => competencyGroup.assign,
)
@JoinColumn({ name: "id" })
competencyGroups: AssignCompetencyGroup[];
@OneToMany(
() => AssignCompetency,
(competency: AssignCompetency) => competency.assign
)
@OneToMany(() => AssignCompetency, (competency: AssignCompetency) => competency.assign)
@JoinColumn({ name: "id" })
competencys: AssignCompetency[];
@OneToMany(
() => AssignDirector,
(director: AssignDirector) => director.assign
)
@OneToMany(() => AssignDirector, (director: AssignDirector) => director.assign)
@JoinColumn({ name: "id" })
directors: AssignDirector[];
@ -125,10 +109,7 @@ export class Assign extends EntityBase {
@JoinColumn({ name: "id" })
jobs: AssignJob[];
@OneToMany(
() => AssignKnowledge,
(knowledge: AssignKnowledge) => knowledge.assign
)
@OneToMany(() => AssignKnowledge, (knowledge: AssignKnowledge) => knowledge.assign)
@JoinColumn({ name: "id" })
knowledges: AssignKnowledge[];
@ -150,28 +131,28 @@ export class Assign extends EntityBase {
@OneToMany(
() => EvaluateAchievement,
(evaluateAchievement: EvaluateAchievement) => evaluateAchievement.assign
(evaluateAchievement: EvaluateAchievement) => evaluateAchievement.assign,
)
@JoinColumn({ name: "id" })
evaluateAchievements: EvaluateAchievement;
@OneToMany(
() => EvaluateAssessor,
(evaluateAssessor: EvaluateAssessor) => evaluateAssessor.assign
(evaluateAssessor: EvaluateAssessor) => evaluateAssessor.assign,
)
@JoinColumn({ name: "id" })
evaluateAssessors: EvaluateAssessor;
@OneToMany(
() => EvaluateChairman,
(evaluateChairman: EvaluateChairman) => evaluateChairman.assign
(evaluateChairman: EvaluateChairman) => evaluateChairman.assign,
)
@JoinColumn({ name: "id" })
evaluateChairmans: EvaluateChairman;
@OneToMany(
() => EvaluateCommander,
(evaluateCommander: EvaluateCommander) => evaluateCommander.assign
(evaluateCommander: EvaluateCommander) => evaluateCommander.assign,
)
@JoinColumn({ name: "id" })
evaluateCommanders: EvaluateCommander;
@ -193,7 +174,7 @@ export class CreateAssign {
@Column()
experimenter_dated?: Date;
@Column()
personal_id?: string;
personalId?: string;
fullname?: string;
position?: string;
monthSelect?: number;

View file

@ -1,4 +1,4 @@
import { Entity, Column, ManyToOne, JoinColumn, OneToMany } from "typeorm";
import { Entity, Column, ManyToOne, JoinColumn, OneToMany, OneToOne } from "typeorm";
import { EntityBase } from "./base/Base";
import { Assign } from "./Assign";
import { Law } from "./Law";
@ -27,13 +27,13 @@ export class AssignLaw extends EntityBase {
})
ordering: number;
@ManyToOne(() => Assign, (assign: Assign) => assign.laws)
@ManyToOne(() => Assign, (assign: Assign) => assign.id)
@JoinColumn({ name: "assign_id" })
assign: Assign;
@OneToMany(() => Law, (law: Law) => law.assignLaw)
@JoinColumn({ name: "law_id" })
law: Law;
// @ManyToOne(() => Law, (law: Law) => law.assignLaw)
// @JoinColumn({ name: "law_id" })
// law: Law;
}
export class CreateAssignLaw {

View file

@ -1,10 +1,4 @@
import {
Entity,
Column,
ManyToOne,
JoinColumn,
PrimaryGeneratedColumn,
} from "typeorm";
import { Entity, Column, ManyToOne, JoinColumn, PrimaryGeneratedColumn } from "typeorm";
import { EntityBase } from "./base/Base";
import { Assign } from "./Assign";
@ -103,7 +97,7 @@ export class CreateEvaluateResult {
date_finish: Date;
develop_complete: number;
pass_result: number;
expand_month: number;
expand_month?: number;
reson: string;
chairman_dated: Date | null;
director1_dated: Date | null;

View file

@ -1,10 +1,4 @@
import {
Entity,
Column,
PrimaryGeneratedColumn,
OneToMany,
JoinColumn,
} from "typeorm";
import { Entity, Column, PrimaryGeneratedColumn, OneToMany, JoinColumn, OneToOne } from "typeorm";
import { EntityBase } from "./base/Base";
import { AssignLaw } from "./AssignLaw";
@ -41,7 +35,7 @@ export class Law extends EntityBase {
})
active: number;
@OneToMany(() => AssignLaw, (assignLaw: AssignLaw) => assignLaw.law_id)
@JoinColumn({ name: "id" })
assignLaw: AssignLaw[];
// @OneToMany(() => AssignLaw, (l: AssignLaw) => l.law_id)
// @JoinColumn({ name: "id" })
// assignLaw: AssignLaw[];
}

View file

@ -0,0 +1,15 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class UpdateAssigntb1725594553970 implements MigrationInterface {
name = "UpdateAssigntb1725594553970";
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE \`assign\` ADD \`other_desc\` varchar(255) NULL COMMENT 'กฎหมายอื่นๆ'`,
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`assign\` DROP COLUMN \`other_desc\``);
}
}