diff --git a/src/controllers/DevelopmentController.ts b/src/controllers/DevelopmentController.ts index 5a7f4bc..65ddc39 100644 --- a/src/controllers/DevelopmentController.ts +++ b/src/controllers/DevelopmentController.ts @@ -34,7 +34,11 @@ import { Province } from "../entities/Province"; import { PosType } from "../entities/PosType"; import { PosLevel } from "../entities/PosLevel"; import { PlannedGoalPosition } from "../entities/PlannedGoalPosition"; -import { DevelopmentHistory } from "../entities/DevelopmentHistory"; +import { + CreateDevelopmentHistory, + CreateDevelopmentHistoryOBO, + DevelopmentHistory, +} from "../entities/DevelopmentHistory"; import { DevelopmentProjectType } from "../entities/DevelopmentProjectType"; import { CreateDevelopmentEvaluation, @@ -908,7 +912,7 @@ export class DevelopmentController extends Controller { development.developmentProjectTechniquePlanneds, { data: request, - } + }, ); addLogSequence(request, { action: "remove", @@ -919,7 +923,7 @@ export class DevelopmentController extends Controller { development.developmentProjectTechniqueActuals, { data: request, - } + }, ); const _null: any = null; if ( @@ -1328,11 +1332,11 @@ export class DevelopmentController extends Controller { Object.assign(development, requestBody); development.lastUpdateUserId = request.user.sub; development.lastUpdateFullName = request.user.name; - addLogSequence(request, { - action: "database", - status: "success", - description: "Store DevelopmentEvaluation.", - }); + addLogSequence(request, { + action: "database", + status: "success", + description: "Store DevelopmentEvaluation.", + }); await this.developmentEvaluationRepository.save(development, { data: request }); return new HttpSuccess(development.id); } @@ -1398,11 +1402,11 @@ export class DevelopmentController extends Controller { data.createdFullName = request.user.name; data.lastUpdateUserId = request.user.sub; data.lastUpdateFullName = request.user.name; - addLogSequence(request, { - action: "database", - status: "success", - description: "Store DevelopmentAddresss.", - }); + addLogSequence(request, { + action: "database", + status: "success", + description: "Store DevelopmentAddresss.", + }); await this.developmentAddresssRepository.save(data, { data: request }); setLogDataDiff(request, { before, after: development }); }), @@ -1467,7 +1471,7 @@ export class DevelopmentController extends Controller { * @param {string} id Id รายการ */ @Delete("{id}") - async DeleteDevelopment(@Path() id: string , @Request () request: RequestWithUser) { + async DeleteDevelopment(@Path() id: string, @Request() request: RequestWithUser) { const development = await this.developmentRepository.findOne({ where: { id }, relations: { @@ -1493,26 +1497,26 @@ export class DevelopmentController extends Controller { const plannedGoalPosition = await this.plannedGoalPositionRepository.find({ where: { plannedGoalId: In(development.developmentPlannedGoals.map((x) => x.id)) }, }); - addLogSequence(request, { - action: "remove", - status: "success", - description: "Remove PlannedGoalPosition.", - }); + addLogSequence(request, { + action: "remove", + status: "success", + description: "Remove PlannedGoalPosition.", + }); await this.plannedGoalPositionRepository.remove(plannedGoalPosition, { data: request }); } - addLogSequence(request, { - action: "remove", - status: "success", - description: "Remove ActualPeople.", - }); + addLogSequence(request, { + action: "remove", + status: "success", + description: "Remove ActualPeople.", + }); await this.actualPeopleRepository.remove(development.developmentActualPeoples, { data: request, }); - addLogSequence(request, { - action: "remove", - status: "success", - description: "Remove PlannedPeople.", - }); + addLogSequence(request, { + action: "remove", + status: "success", + description: "Remove PlannedPeople.", + }); await this.plannedPeopleRepository.remove(development.developmentPlannedPeoples, { data: request, }); @@ -1663,11 +1667,11 @@ export class DevelopmentController extends Controller { getDevelopment.status = "FINISH"; getDevelopment.lastUpdateUserId = request.user.sub; getDevelopment.lastUpdateFullName = request.user.name; - addLogSequence(request, { - action: "database", - status: "success", - description: "Store Development.", - }); + addLogSequence(request, { + action: "database", + status: "success", + description: "Store Development.", + }); await this.developmentRepository.save(getDevelopment, { data: request }); return new HttpSuccess(getDevelopment); } @@ -2219,6 +2223,7 @@ export class DevelopmentController extends Controller { development.createdFullName = request.user.name; development.lastUpdateUserId = request.user.sub; development.lastUpdateFullName = request.user.name; + development.isProfile = true; addLogSequence(request, { action: "database", status: "success", @@ -2227,8 +2232,45 @@ export class DevelopmentController extends Controller { await this.developmentHistoryRepository.save(development, { data: request }); setLogDataDiff(request, { before, after: development }); }) - .catch((x) => { - return; + .catch(async (x) => { + let development = new DevelopmentHistory(); + let _null: any = null; + development.prefix = item["คำนำหน้า"] == undefined ? null : item["คำนำหน้า"]; + development.firstName = item["ชื่อ"] == undefined ? null : item["ชื่อ"]; + development.lastName = item["นามสกุล"] == undefined ? null : item["นามสกุล"]; + development.position = item["ตำแหน่ง"] == undefined ? null : item["ตำแหน่ง"]; + development.org = item["สังกัด"] == undefined ? null : item["สังกัด"]; + development.dateStart = + item["วันที่เริ่มต้น"] == undefined ? null : item["วันที่เริ่มต้น"]; + development.dateEnd = + item["วันที่สิ้นสุด"] == undefined ? null : item["วันที่สิ้นสุด"]; + development.order = + item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == undefined + ? null + : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"]; + development.dateOrder = + item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"] == undefined + ? _null + : new Date(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]); + development.trainingDays = + item["จำนวนวันที่อบรม"] == undefined ? null : item["จำนวนวันที่อบรม"]; + development.posLevelId = x.posLevelId; + development.posTypeId = x.posTypeId; + development.employeePosLevelId = null; + development.employeePosTypeId = null; + development.developmentId = id; + development.createdUserId = request.user.sub; + development.createdFullName = request.user.name; + development.lastUpdateUserId = request.user.sub; + development.lastUpdateFullName = request.user.name; + development.isProfile = false; + addLogSequence(request, { + action: "database", + status: "success", + description: "Store DevelopmentHistory.", + }); + await this.developmentHistoryRepository.save(development, { data: request }); + setLogDataDiff(request, { before, after: development }); }); } else { await new CallAPI() @@ -2258,20 +2300,251 @@ export class DevelopmentController extends Controller { development.createdFullName = request.user.name; development.lastUpdateUserId = request.user.sub; development.lastUpdateFullName = request.user.name; + development.isProfile = true; addLogSequence(request, { - action: "database", - status: "success", - description: "Store DevelopmentHistory.", - }); + action: "database", + status: "success", + description: "Store DevelopmentHistory.", + }); await this.developmentHistoryRepository.save(development, { data: request }); setLogDataDiff(request, { before, after: development }); }) - .catch((x) => { - return; + .catch(async (x) => { + let development = new DevelopmentHistory(); + let _null: any = null; + development.prefix = item["คำนำหน้า"] == undefined ? null : item["คำนำหน้า"]; + development.firstName = item["ชื่อ"] == undefined ? null : item["ชื่อ"]; + development.lastName = item["นามสกุล"] == undefined ? null : item["นามสกุล"]; + development.position = item["ตำแหน่ง"] == undefined ? null : item["ตำแหน่ง"]; + development.org = item["สังกัด"] == undefined ? null : item["สังกัด"]; + development.dateStart = + item["วันที่เริ่มต้น"] == undefined ? null : item["วันที่เริ่มต้น"]; + development.dateEnd = + item["วันที่สิ้นสุด"] == undefined ? null : item["วันที่สิ้นสุด"]; + development.order = + item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == undefined + ? null + : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"]; + development.dateOrder = + item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"] == undefined + ? _null + : new Date(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]); + development.trainingDays = + item["จำนวนวันที่อบรม"] == undefined ? null : item["จำนวนวันที่อบรม"]; + development.posLevelId = x.posLevelId; + development.posTypeId = x.posTypeId; + development.employeePosLevelId = null; + development.employeePosTypeId = null; + development.developmentId = id; + development.createdUserId = request.user.sub; + development.createdFullName = request.user.name; + development.lastUpdateUserId = request.user.sub; + development.lastUpdateFullName = request.user.name; + development.isProfile = false; + addLogSequence(request, { + action: "database", + status: "success", + description: "Store DevelopmentHistory.", + }); + await this.developmentHistoryRepository.save(development, { data: request }); + setLogDataDiff(request, { before, after: development }); }); } }), ); return new HttpSuccess(getDevelopments); } + /** + * API upload User One by one + * + * @summary DEV_0 - upload User One by one # + * + * @param {string} id Id โครงการ + */ + @Post("uploadUser/{id}") + async UploadUserDevelopemtOBO( + @Path() id: string, + @Body() requestBody: CreateDevelopmentHistoryOBO, + @Request() request: RequestWithUser, + ) { + const getDevelopment = await this.developmentRepository.findOne({ + where: { id: id }, + relations: { + developmentHistorys: true, + }, + }); + if (!getDevelopment) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรมนี้"); + } + const oldProfile: any = await this.developmentHistoryRepository.findOne({ + where: { citizenId: requestBody.citizenId }, + }); + + const before = null; + let status = null; + let _null: any = null; + if (oldProfile != null) { + if (oldProfile.isDone == true) + throw new HttpError(HttpStatusCode.INTERNAL_SERVER_ERROR, "ข้อมูลนี้ได้ถูกบันทึกแล้ว"); + oldProfile.dateStart = requestBody.dateStart == undefined ? _null : requestBody.dateStart; + oldProfile.dateEnd = requestBody.dateEnd == undefined ? _null : requestBody.dateEnd; + oldProfile.order = requestBody.order == undefined ? _null : requestBody.order; + oldProfile.dateOrder = + requestBody.dateOrder == undefined ? _null : new Date(requestBody.dateOrder); + oldProfile.trainingDays = + requestBody.trainingDays == undefined ? _null : requestBody.trainingDays; + oldProfile.createdUserId = request.user.sub; + oldProfile.createdFullName = request.user.name; + oldProfile.lastUpdateUserId = request.user.sub; + oldProfile.lastUpdateFullName = request.user.name; + addLogSequence(request, { + action: "database", + status: "success", + description: "Store DevelopmentHistory.", + }); + await this.developmentHistoryRepository.save(oldProfile, { data: request }); + setLogDataDiff(request, { before, after: oldProfile }); + status = oldProfile.isProfile; + } + + if (requestBody.type == "OFFICER") { + await new CallAPI() + .GetData(request, `/org/unauthorize/officer/citizen/${requestBody.citizenId}`) + .then(async (x: any) => { + let development = Object.assign(new DevelopmentHistory(), x); + development.dateStart = + requestBody.dateStart == undefined ? _null : requestBody.dateStart; + development.dateEnd = requestBody.dateEnd == undefined ? _null : requestBody.dateEnd; + development.order = requestBody.order == undefined ? _null : requestBody.order; + development.dateOrder = + requestBody.dateOrder == undefined ? _null : requestBody.dateOrder; + development.trainingDays = + requestBody.trainingDays == undefined ? _null : requestBody.trainingDays; + development.posLevelId = x.posLevelId == undefined ? _null : x.posLevelId; + development.posTypeId = x.posTypeId == undefined ? _null : x.posTypeId; + development.employeePosLevelId = null; + development.employeePosTypeId = null; + development.developmentId = id; + development.isProfile = true; + development.createdUserId = request.user.sub; + development.createdFullName = request.user.name; + development.lastUpdateUserId = request.user.sub; + development.lastUpdateFullName = request.user.name; + addLogSequence(request, { + action: "database", + status: "success", + description: "Store DevelopmentHistory.", + }); + await this.developmentHistoryRepository.save(development, { data: request }); + setLogDataDiff(request, { before, after: development }); + status = development.isProfile; + }) + .catch(async (x) => { + let development = new DevelopmentHistory(); + let _null: any = null; + development.prefix = requestBody.prefix == undefined ? _null : requestBody.prefix; + development.firstName = + requestBody.firstName == undefined ? _null : requestBody.firstName; + development.lastName = requestBody.lastName == undefined ? _null : requestBody.lastName; + development.position = requestBody.position == undefined ? _null : requestBody.position; + development.org = requestBody.org == undefined ? _null : requestBody.org; + development.dateStart = + requestBody.dateStart == undefined ? _null : requestBody.dateStart; + development.dateEnd = requestBody.dateEnd == undefined ? _null : requestBody.dateEnd; + development.order = requestBody.order == undefined ? _null : requestBody.order; + development.dateOrder = + requestBody.dateOrder == undefined ? _null : requestBody.dateOrder; + development.trainingDays = + requestBody.trainingDays == undefined ? _null : requestBody.trainingDays; + development.posLevelId = x.posLevelId == undefined ? _null : x.posLevelId; + development.posTypeId = x.posTypeId == undefined ? _null : x.posTypeId; + development.employeePosLevelId = null; + development.employeePosTypeId = null; + development.developmentId = id; + development.createdUserId = request.user.sub; + development.createdFullName = request.user.name; + development.lastUpdateUserId = request.user.sub; + development.lastUpdateFullName = request.user.name; + development.isProfile = false; + addLogSequence(request, { + action: "database", + status: "success", + description: "Store DevelopmentHistory.", + }); + await this.developmentHistoryRepository.save(development, { data: request }); + setLogDataDiff(request, { before, after: development }); + console.log(development.isProfile); + status = development.isProfile; + }); + } else { + await new CallAPI() + .GetData(request, `/org/unauthorize/employee/citizen/${requestBody.citizenId}`) + .then(async (x: any) => { + let development = Object.assign(new DevelopmentHistory(), x); + development.dateStart = + requestBody.dateStart == undefined ? _null : requestBody.dateStart; + development.dateEnd = requestBody.dateEnd == undefined ? _null : requestBody.dateEnd; + development.order = requestBody.order == undefined ? _null : requestBody.order; + development.dateOrder = + requestBody.dateOrder == undefined ? _null : requestBody.dateOrder; + development.trainingDays = + requestBody.trainingDays == undefined ? _null : requestBody.trainingDays; + development.posLevelId = null; + development.posTypeId = null; + development.employeePosLevelId = x.posLevelId; + development.employeePosTypeId = x.posTypeId; + development.developmentId = id; + development.createdUserId = request.user.sub; + development.createdFullName = request.user.name; + development.lastUpdateUserId = request.user.sub; + development.lastUpdateFullName = request.user.name; + development.isProfile = true; + addLogSequence(request, { + action: "database", + status: "success", + description: "Store DevelopmentHistory.", + }); + await this.developmentHistoryRepository.save(development, { data: request }); + setLogDataDiff(request, { before, after: development }); + status = development.isProfile; + }) + .catch(async (x) => { + let development = new DevelopmentHistory(); + let _null: any = null; + development.prefix = requestBody.prefix == undefined ? _null : requestBody.prefix; + development.firstName = + requestBody.firstName == undefined ? _null : requestBody.firstName; + development.lastName = requestBody.lastName == undefined ? _null : requestBody.lastName; + development.position = requestBody.position == undefined ? _null : requestBody.position; + development.org = requestBody.org == undefined ? _null : requestBody.org; + development.dateStart = + requestBody.dateStart == undefined ? _null : requestBody.dateStart; + development.dateEnd = requestBody.dateEnd == undefined ? _null : requestBody.dateEnd; + development.order = requestBody.order == undefined ? _null : requestBody.order; + development.dateOrder = + requestBody.dateOrder == undefined ? _null : requestBody.dateOrder; + development.trainingDays = + requestBody.trainingDays == undefined ? _null : requestBody.trainingDays; + development.posLevelId = x.posLevelId; + development.posTypeId = x.posTypeId; + development.employeePosLevelId = null; + development.employeePosTypeId = null; + development.developmentId = id; + development.createdUserId = request.user.sub; + development.createdFullName = request.user.name; + development.lastUpdateUserId = request.user.sub; + development.lastUpdateFullName = request.user.name; + development.isProfile = false; + addLogSequence(request, { + action: "database", + status: "success", + description: "Store DevelopmentHistory.", + }); + await this.developmentHistoryRepository.save(development, { data: request }); + setLogDataDiff(request, { before, after: development }); + status = development.isProfile; + }); + } + return new HttpSuccess(status); + } } diff --git a/src/entities/DevelopmentHistory.ts b/src/entities/DevelopmentHistory.ts index 79c0719..f5fe93e 100644 --- a/src/entities/DevelopmentHistory.ts +++ b/src/entities/DevelopmentHistory.ts @@ -283,3 +283,41 @@ export class UpdateDevelopmentHistory { @Column() dateEnd: Date | null; } + +export class CreateDevelopmentHistoryOBO { + @Column() + rank: string | null; + @Column() + prefix: string | null; + @Column() + firstName: string | null; + @Column() + lastName: string | null; + @Column() + citizenId: string; + @Column() + position: string | null; + @Column() + posExecutive: string | null; + @Column() + posLevelId: string | null; + @Column() + posTypeId: string | null; + @Column() + developmentId: string; + @Column() + order: string | null; + @Column() + trainingDays: string | null; + @Column() + org: string | null; + @Column() + type: string | null; + @Column() + dateOrder: Date | null; + @Column() + dateStart: Date | null; + @Column() + dateEnd: Date | null; +} +