api ทุน ของ user

This commit is contained in:
Kittapath 2024-04-11 16:32:44 +07:00
parent 37bf71aca5
commit a4eed4f690
8 changed files with 496 additions and 124 deletions

View file

@ -38,9 +38,13 @@ import { PosLevel } from "../entities/PosLevel";
import { PlannedGoalPosition } from "../entities/PlannedGoalPosition";
import { DevelopmentHistory } from "../entities/DevelopmentHistory";
import { DevelopmentProjectType } from "../entities/DevelopmentProjectType";
import { DevelopmentProjectTechnique } from "../entities/DevelopmentProjectTechnique";
import { DevelopmentEvaluation } from "../entities/DevelopmentEvaluation";
import {
CreateDevelopmentEvaluation,
DevelopmentEvaluation,
} from "../entities/DevelopmentEvaluation";
import { DevelopmentAddress } from "../entities/DevelopmentAddress";
import { DevelopmentProjectTechniquePlanned } from "../entities/DevelopmentProjectTechniquePlanned";
import { DevelopmentProjectTechniqueActual } from "../entities/DevelopmentProjectTechniqueActual";
@Route("api/v1/development/main")
@Tags("Development")
@ -50,8 +54,11 @@ export class DevelopmentController extends Controller {
private developmentAddresssRepository = AppDataSource.getRepository(DevelopmentAddress);
private developmentEvaluationRepository = AppDataSource.getRepository(DevelopmentEvaluation);
private developmentProjectTypeRepository = AppDataSource.getRepository(DevelopmentProjectType);
private developmentProjectTechniqueRepository = AppDataSource.getRepository(
DevelopmentProjectTechnique,
private developmentProjectTechniquePlannedRepository = AppDataSource.getRepository(
DevelopmentProjectTechniquePlanned,
);
private developmentProjectTechniqueActualRepository = AppDataSource.getRepository(
DevelopmentProjectTechniqueActual,
);
private developmentHistoryRepository = AppDataSource.getRepository(DevelopmentHistory);
private actualPeopleRepository = AppDataSource.getRepository(ActualPeople);
@ -162,7 +169,7 @@ export class DevelopmentController extends Controller {
if (!development) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรมนี้");
}
const data = Object.assign(new PlannedGoal(), requestBody);
const data = Object.assign(new PlannedGoal(), { ...requestBody, positions: [] });
data.createdUserId = request.user.sub;
data.createdFullName = request.user.name;
data.lastUpdateUserId = request.user.sub;
@ -284,7 +291,7 @@ export class DevelopmentController extends Controller {
@Put("tab2_4_add/{id}")
async CreateDevelopmenttab2_4(
@Path() id: string,
@Body() requestBody: CreateActualPeople[],
@Body() requestBody: CreateActualPeople,
@Request() request: { user: Record<string, any> },
) {
const development = await this.developmentRepository.findOne({
@ -308,7 +315,7 @@ export class DevelopmentController extends Controller {
*
* @summary DEV_00 - /tab2-1 #
*
* @param {string} id Id
* @param {string} id Id
*/
@Put("tab2_1_edit/{id}")
async UpdateDevelopmenttab2_1(
@ -327,9 +334,7 @@ export class DevelopmentController extends Controller {
}
await this.plannedGoalPositionRepository.remove(development.plannedGoalPositions);
const _requestBody: any = requestBody;
delete _requestBody.positions;
Object.assign(development, requestBody);
Object.assign(development, { ...requestBody, positions: [] });
development.lastUpdateUserId = request.user.sub;
development.lastUpdateFullName = request.user.name;
await this.plannedGoalRepository.save(development);
@ -371,7 +376,7 @@ export class DevelopmentController extends Controller {
*
* @summary DEV_00 - /tab2-2 #
*
* @param {string} id Id
* @param {string} id Id
*/
@Put("tab2_2_edit/{id}")
async UpdateDevelopmenttab2_2(
@ -397,7 +402,7 @@ export class DevelopmentController extends Controller {
*
* @summary DEV_00 - /tab2-3 #
*
* @param {string} id Id
* @param {string} id Id
*/
@Put("tab2_3_edit/{id}")
async UpdateDevelopmenttab2_3(
@ -439,7 +444,7 @@ export class DevelopmentController extends Controller {
*
* @summary DEV_00 - /tab2-4 #
*
* @param {string} id Id
* @param {string} id Id
*/
@Put("tab2_4_edit/{id}")
async UpdateDevelopmenttab2_4(
@ -557,19 +562,28 @@ export class DevelopmentController extends Controller {
where: { id },
relations: {
developmentProjectTypes: true,
developmentProjectTechniques: true,
developmentProjectTechniquePlanneds: true,
developmentProjectTechniqueActuals: true,
},
});
if (!development) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรมนี้");
}
Object.assign(development, requestBody);
Object.assign(development, {
...requestBody,
developmentProjectTypes: [],
developmentProjectTechniquePlanneds: [],
developmentProjectTechniqueActuals: [],
});
development.lastUpdateUserId = request.user.sub;
development.lastUpdateFullName = request.user.name;
await this.developmentRepository.save(development);
await this.developmentProjectTypeRepository.remove(development.developmentProjectTypes);
await this.developmentProjectTechniqueRepository.remove(
development.developmentProjectTechniques,
await this.developmentProjectTechniquePlannedRepository.remove(
development.developmentProjectTechniquePlanneds,
);
await this.developmentProjectTechniqueActualRepository.remove(
development.developmentProjectTechniqueActuals,
);
if (requestBody.developmentProjectTypes != null) {
await Promise.all(
@ -585,17 +599,31 @@ export class DevelopmentController extends Controller {
}),
);
}
if (requestBody.developmentProjectTechniques != null) {
if (requestBody.developmentProjectTechniquePlanneds != null) {
await Promise.all(
requestBody.developmentProjectTechniques.map(async (x) => {
let data = new DevelopmentProjectTechnique();
requestBody.developmentProjectTechniquePlanneds.map(async (x) => {
let data = new DevelopmentProjectTechniquePlanned();
data.name = x;
data.createdUserId = request.user.sub;
data.createdFullName = request.user.name;
data.lastUpdateUserId = request.user.sub;
data.lastUpdateFullName = request.user.name;
data.developmentId = development.id;
await this.developmentProjectTechniqueRepository.save(data);
await this.developmentProjectTechniquePlannedRepository.save(data);
}),
);
}
if (requestBody.developmentProjectTechniqueActuals != null) {
await Promise.all(
requestBody.developmentProjectTechniqueActuals.map(async (x) => {
let data = new DevelopmentProjectTechniquePlanned();
data.name = x;
data.createdUserId = request.user.sub;
data.createdFullName = request.user.name;
data.lastUpdateUserId = request.user.sub;
data.lastUpdateFullName = request.user.name;
data.developmentId = development.id;
await this.developmentProjectTechniqueActualRepository.save(data);
}),
);
}
@ -617,9 +645,6 @@ export class DevelopmentController extends Controller {
) {
const development = await this.developmentRepository.findOne({
where: { id },
relations: {
developmentEvaluations: true,
},
});
if (!development) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรมนี้");
@ -628,18 +653,80 @@ export class DevelopmentController extends Controller {
development.lastUpdateUserId = request.user.sub;
development.lastUpdateFullName = request.user.name;
await this.developmentRepository.save(development);
await this.developmentEvaluationRepository.remove(development.developmentEvaluations);
await Promise.all(
requestBody.developmentEvaluations.map(async (x) => {
const data = Object.assign(new DevelopmentEvaluation(), x);
data.createdUserId = request.user.sub;
data.createdFullName = request.user.name;
data.lastUpdateUserId = request.user.sub;
data.lastUpdateFullName = request.user.name;
data.developmentId = development.id;
await this.developmentEvaluationRepository.save(data);
}),
);
return new HttpSuccess(development.id);
}
/**
* API /tab4-1
*
* @summary DEV_00 - /tab4-1 #
*
* @param {string} id Id
*/
@Put("tab4_1_add/{id}")
async CreateDevelopmenttab4_1(
@Path() id: string,
@Body() requestBody: CreateDevelopmentEvaluation,
@Request() request: { user: Record<string, any> },
) {
const development = await this.developmentRepository.findOne({
where: { id },
});
if (!development) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรมนี้");
}
const data = Object.assign(new DevelopmentEvaluation(), requestBody);
data.createdUserId = request.user.sub;
data.createdFullName = request.user.name;
data.lastUpdateUserId = request.user.sub;
data.lastUpdateFullName = request.user.name;
data.developmentId = development.id;
await this.developmentEvaluationRepository.save(data);
return new HttpSuccess(data.id);
}
/**
* API /tab4-1
*
* @summary DEV_00 - /tab4-1 #
*
* @param {string} id Id
*/
@Delete("tab4_1/{id}")
async DeleteDevelopmenttab4_1(@Path() id: string) {
const development = await this.developmentEvaluationRepository.findOne({
where: { id },
});
if (!development) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้เกี่ยวข้องเป้าหมายตามแผน");
}
await this.developmentEvaluationRepository.remove(development);
return new HttpSuccess(development.id);
}
/**
* API /tab4-1
*
* @summary DEV_00 - /tab4-1 #
*
* @param {string} id Id
*/
@Put("tab4_1_edit/{id}")
async UpdateDevelopmenttab4_1(
@Path() id: string,
@Body() requestBody: CreateDevelopmentEvaluation,
@Request() request: { user: Record<string, any> },
) {
const development = await this.developmentEvaluationRepository.findOne({
where: { id },
});
if (!development) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรมนี้");
}
Object.assign(development, requestBody);
development.lastUpdateUserId = request.user.sub;
development.lastUpdateFullName = request.user.name;
await this.developmentEvaluationRepository.save(development);
return new HttpSuccess(development.id);
}
@ -658,9 +745,7 @@ export class DevelopmentController extends Controller {
) {
const development = await this.developmentRepository.findOne({
where: { id },
relations: {
developmentAddresss: true,
},
relations: { developmentAddresss: true },
});
if (!development) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรมนี้");
@ -673,28 +758,31 @@ export class DevelopmentController extends Controller {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลจังหวัดข้อมูลด้านวิชาการ");
}
}
Object.assign(development, requestBody);
Object.assign(development, { ...requestBody, developmentAddresss: [] });
development.lastUpdateUserId = request.user.sub;
development.lastUpdateFullName = request.user.name;
await this.developmentRepository.save(development);
await this.developmentAddresssRepository.remove(development.developmentAddresss);
await Promise.all(
requestBody.developmentAddresss.map(async (x) => {
const data = Object.assign(new DevelopmentAddress(), x);
const chkProvince = await this.provinceRepository.find({
const chkProvince = await this.provinceRepository.findOne({
where: {
id: x.provinceId,
},
});
if (chkProvince == null) return;
data.developmentId = development.id;
data.createdUserId = request.user.sub;
data.createdFullName = request.user.name;
data.lastUpdateUserId = request.user.sub;
data.lastUpdateFullName = request.user.name;
data.developmentId = development.id;
await this.developmentAddresssRepository.save(data);
}),
);
return new HttpSuccess(development.id);
}
@ -703,7 +791,6 @@ export class DevelopmentController extends Controller {
*
* @summary DEV_00 - #
*
* @param {string} id Id
*/
@Get("search")
async ListDevelopemt(
@ -752,7 +839,7 @@ export class DevelopmentController extends Controller {
*
* @summary DEV_003 - / #3
*
* @param {string} id Id
* @param {string} id Id
*/
@Delete("{id}")
async DeleteDevelopment(@Path() id: string) {
@ -764,7 +851,8 @@ export class DevelopmentController extends Controller {
developmentActualGoals: true,
developmentPlannedGoals: true,
developmentProjectTypes: true,
developmentProjectTechniques: true,
developmentProjectTechniquePlanneds: true,
developmentProjectTechniqueActuals: true,
developmentEvaluations: true,
developmentAddresss: true,
},
@ -787,8 +875,11 @@ export class DevelopmentController extends Controller {
await this.actualGoalRepository.remove(development.developmentActualGoals);
await this.plannedGoalRepository.remove(development.developmentPlannedGoals);
await this.developmentProjectTypeRepository.remove(development.developmentProjectTypes);
await this.developmentProjectTechniqueRepository.remove(
development.developmentProjectTechniques,
await this.developmentProjectTechniquePlannedRepository.remove(
development.developmentProjectTechniquePlanneds,
);
await this.developmentProjectTechniqueActualRepository.remove(
development.developmentProjectTechniqueActuals,
);
await this.developmentEvaluationRepository.remove(development.developmentEvaluations);
await this.developmentAddresssRepository.remove(development.developmentAddresss);
@ -915,10 +1006,38 @@ export class DevelopmentController extends Controller {
}
let _getDevelopment: any = {
id: getDevelopment.id,
actualPeoples: getDevelopment.developmentActualPeoples,
plannedPeoples: getDevelopment.developmentPlannedPeoples,
actualGoals: getDevelopment.developmentActualGoals,
plannedGoals: getDevelopment.developmentPlannedGoals,
actualPeoples:
getDevelopment.developmentActualPeoples == null
? null
: getDevelopment.developmentActualPeoples.sort((a, b) =>
(a.groupTarget == null ? "" : a.groupTarget).localeCompare(
b.groupTarget == null ? "" : b.groupTarget,
),
),
plannedPeoples:
getDevelopment.developmentPlannedPeoples == null
? null
: getDevelopment.developmentPlannedPeoples.sort((a, b) =>
(a.groupTarget == null ? "" : a.groupTarget).localeCompare(
b.groupTarget == null ? "" : b.groupTarget,
),
),
actualGoals:
getDevelopment.developmentActualGoals == null
? null
: getDevelopment.developmentActualGoals.sort((a, b) =>
(a.groupTarget == null ? "" : a.groupTarget).localeCompare(
b.groupTarget == null ? "" : b.groupTarget,
),
),
plannedGoals:
getDevelopment.developmentPlannedGoals == null
? null
: getDevelopment.developmentPlannedGoals.sort((a, b) =>
(a.groupTarget == null ? "" : a.groupTarget).localeCompare(
b.groupTarget == null ? "" : b.groupTarget,
),
),
};
return new HttpSuccess(_getDevelopment);
}
@ -935,28 +1054,34 @@ export class DevelopmentController extends Controller {
const getDevelopment = await this.developmentRepository.findOne({
where: { id: id },
relations: [
"developmentActualPeoples",
"developmentPlannedPeoples",
"developmentActualGoals",
"developmentPlannedGoals",
"developmentPlannedGoals.plannedGoalPositions",
"provinces",
// "provinces.developmentProvinces",
"developmentProjectTypes",
"developmentProjectTechniquePlanneds",
"developmentProjectTechniqueActuals",
],
});
if (!getDevelopment) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรมนี้");
}
let _getDevelopment: any = getDevelopment;
_getDevelopment.actualPeoples = getDevelopment.developmentActualPeoples;
_getDevelopment.plannedPeoples = getDevelopment.developmentPlannedPeoples;
_getDevelopment.actualGoals = getDevelopment.developmentActualGoals;
_getDevelopment.plannedGoals = getDevelopment.developmentPlannedGoals;
// _getDevelopment.provinces = getDevelopment.provinces.map(x=>x.developmentProvinces);
delete _getDevelopment.developmentActualPeoples;
delete _getDevelopment.developmentPlannedPeoples;
delete _getDevelopment.developmentActualGoals;
delete _getDevelopment.developmentPlannedGoals;
let _getDevelopment: any = {
developmentProjectTypes: getDevelopment.developmentProjectTypes.map((x) => x.name).sort(),
projectModal: getDevelopment.projectModal,
isBackPlanned: getDevelopment.isBackPlanned,
isHoldPlanned: getDevelopment.isHoldPlanned,
projectDayBackPlanned: getDevelopment.projectDayBackPlanned,
projectDayHoldPlanned: getDevelopment.projectDayHoldPlanned,
projectNigthHoldPlanned: getDevelopment.projectNigthHoldPlanned,
developmentProjectTechniquePlanneds: getDevelopment.developmentProjectTechniquePlanneds
.map((x) => x.name)
.sort(),
isBackActual: getDevelopment.isBackActual,
isHoldActual: getDevelopment.isHoldActual,
projectDayBackActual: getDevelopment.projectDayBackActual,
projectDayHoldActual: getDevelopment.projectDayHoldActual,
projectNigthHoldActual: getDevelopment.projectNigthHoldActual,
developmentProjectTechniqueActuals: getDevelopment.developmentProjectTechniqueActuals
.map((x) => x.name)
.sort(),
};
return new HttpSuccess(_getDevelopment);
}
@ -971,29 +1096,28 @@ export class DevelopmentController extends Controller {
async GetDevelopemtTab4ById(@Path() id: string) {
const getDevelopment = await this.developmentRepository.findOne({
where: { id: id },
relations: [
"developmentActualPeoples",
"developmentPlannedPeoples",
"developmentActualGoals",
"developmentPlannedGoals",
"developmentPlannedGoals.plannedGoalPositions",
"provinces",
// "provinces.developmentProvinces",
],
relations: ["developmentEvaluations"],
});
if (!getDevelopment) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรมนี้");
}
let _getDevelopment: any = getDevelopment;
_getDevelopment.actualPeoples = getDevelopment.developmentActualPeoples;
_getDevelopment.plannedPeoples = getDevelopment.developmentPlannedPeoples;
_getDevelopment.actualGoals = getDevelopment.developmentActualGoals;
_getDevelopment.plannedGoals = getDevelopment.developmentPlannedGoals;
// _getDevelopment.provinces = getDevelopment.provinces.map(x=>x.developmentProvinces);
delete _getDevelopment.developmentActualPeoples;
delete _getDevelopment.developmentPlannedPeoples;
delete _getDevelopment.developmentActualGoals;
delete _getDevelopment.developmentPlannedGoals;
let _getDevelopment = {
developmentEvaluations:
getDevelopment.developmentEvaluations == null
? null
: getDevelopment.developmentEvaluations.sort((a, b) =>
(a.indicators == null ? "" : a.indicators).localeCompare(
b.indicators == null ? "" : b.indicators,
),
),
project: getDevelopment.project,
isPassAllocate: getDevelopment.isPassAllocate,
isPassNoAllocate: getDevelopment.isPassNoAllocate,
isNoPass: getDevelopment.isNoPass,
isBudget: getDevelopment.isBudget,
isOutBudget: getDevelopment.isOutBudget,
};
return new HttpSuccess(_getDevelopment);
}
@ -1008,29 +1132,39 @@ export class DevelopmentController extends Controller {
async GetDevelopemtTab5ById(@Path() id: string) {
const getDevelopment = await this.developmentRepository.findOne({
where: { id: id },
relations: [
"developmentActualPeoples",
"developmentPlannedPeoples",
"developmentActualGoals",
"developmentPlannedGoals",
"developmentPlannedGoals.plannedGoalPositions",
"provinces",
// "provinces.developmentProvinces",
],
relations: ["developmentAddresss"],
});
if (!getDevelopment) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรมนี้");
}
let _getDevelopment: any = getDevelopment;
_getDevelopment.actualPeoples = getDevelopment.developmentActualPeoples;
_getDevelopment.plannedPeoples = getDevelopment.developmentPlannedPeoples;
_getDevelopment.actualGoals = getDevelopment.developmentActualGoals;
_getDevelopment.plannedGoals = getDevelopment.developmentPlannedGoals;
// _getDevelopment.provinces = getDevelopment.provinces.map(x=>x.developmentProvinces);
delete _getDevelopment.developmentActualPeoples;
delete _getDevelopment.developmentPlannedPeoples;
delete _getDevelopment.developmentActualGoals;
delete _getDevelopment.developmentPlannedGoals;
let _getDevelopment = {
dateStart: getDevelopment.dateStart,
dateEnd: getDevelopment.dateEnd,
totalDate: getDevelopment.totalDate,
developmentAddresss:
getDevelopment.developmentAddresss == null
? null
: getDevelopment.developmentAddresss.sort((a, b) =>
(a.address == null ? "" : a.address).localeCompare(
b.address == null ? "" : b.address,
),
),
budget: getDevelopment.budget,
budgetSub: getDevelopment.budgetSub,
accept: getDevelopment.accept,
receive: getDevelopment.receive,
approved: getDevelopment.approved,
budgetPay: getDevelopment.budgetPay,
issues: getDevelopment.issues,
chance: getDevelopment.chance,
effects: getDevelopment.effects,
riskLevel: getDevelopment.riskLevel,
riskManagement: getDevelopment.riskManagement,
expect: getDevelopment.expect,
topicAcademic: getDevelopment.topicAcademic,
addressAcademic: getDevelopment.addressAcademic,
provinceActualId: getDevelopment.provinceActualId,
};
return new HttpSuccess(_getDevelopment);
}