2024-04-17 10:20:48 +07:00
|
|
|
import {
|
|
|
|
|
Body,
|
|
|
|
|
Controller,
|
|
|
|
|
Delete,
|
|
|
|
|
Example,
|
|
|
|
|
Get,
|
|
|
|
|
Patch,
|
|
|
|
|
Path,
|
|
|
|
|
Post,
|
|
|
|
|
Request,
|
|
|
|
|
Route,
|
|
|
|
|
Security,
|
|
|
|
|
Tags,
|
|
|
|
|
} from "tsoa";
|
|
|
|
|
import { AppDataSource } from "../database/data-source";
|
|
|
|
|
import {
|
|
|
|
|
CreateStrategyChild1,
|
|
|
|
|
StrategyChild1,
|
|
|
|
|
UpdateStrategyChild1,
|
|
|
|
|
} from "../entities/StrategyChild1";
|
|
|
|
|
import {
|
|
|
|
|
CreateStrategyChild2,
|
|
|
|
|
StrategyChild2,
|
|
|
|
|
UpdateStrategyChild2,
|
|
|
|
|
} from "../entities/StrategyChild2";
|
|
|
|
|
import {
|
|
|
|
|
CreateStrategyChild3,
|
|
|
|
|
StrategyChild3,
|
|
|
|
|
UpdateStrategyChild3,
|
|
|
|
|
} from "../entities/StrategyChild3";
|
|
|
|
|
import {
|
|
|
|
|
CreateStrategyChild4,
|
|
|
|
|
StrategyChild4,
|
|
|
|
|
UpdateStrategyChild4,
|
|
|
|
|
} from "../entities/StrategyChild4";
|
|
|
|
|
import {
|
|
|
|
|
CreateStrategyChild5,
|
|
|
|
|
StrategyChild5,
|
|
|
|
|
UpdateStrategyChild5,
|
|
|
|
|
} from "../entities/StrategyChild5";
|
|
|
|
|
import HttpError from "../interfaces/http-error";
|
|
|
|
|
import HttpStatus from "../interfaces/http-status";
|
|
|
|
|
import HttpSuccess from "../interfaces/http-success";
|
|
|
|
|
import { Check } from "typeorm";
|
|
|
|
|
|
|
|
|
|
@Route("api/v1/development/strategy")
|
|
|
|
|
@Tags("Strategy")
|
|
|
|
|
@Security("bearerAuth")
|
|
|
|
|
export class StrategyController extends Controller {
|
|
|
|
|
private strategy1Repo = AppDataSource.getRepository(StrategyChild1);
|
|
|
|
|
private strategy2Repo = AppDataSource.getRepository(StrategyChild2);
|
|
|
|
|
private strategy3Repo = AppDataSource.getRepository(StrategyChild3);
|
|
|
|
|
private strategy4Repo = AppDataSource.getRepository(StrategyChild4);
|
|
|
|
|
private strategy5Repo = AppDataSource.getRepository(StrategyChild5);
|
|
|
|
|
@Get()
|
|
|
|
|
public async listStrategyChild1() {
|
|
|
|
|
const listStrategyChild1 = await this.strategy1Repo.find({
|
2024-04-17 13:56:10 +07:00
|
|
|
relations: ["strategyChild2s", "strategyChild2s.strategyChild3s", "strategyChild2s.strategyChild3s.strategyChild4s", "strategyChild2s.strategyChild3s.strategyChild4s.strategyChild5s"],
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (!listStrategyChild1 || listStrategyChild1.length === 0) {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const formattedData = listStrategyChild1.map(item => ({
|
|
|
|
|
id: item.id,
|
|
|
|
|
level: 1,
|
|
|
|
|
name: item.strategyChild1Name,
|
|
|
|
|
children: item.strategyChild2s.map(child2 => ({
|
|
|
|
|
id: child2.id,
|
|
|
|
|
level: 2,
|
|
|
|
|
name: child2.strategyChild2Name,
|
|
|
|
|
children: child2.strategyChild3s ? child2.strategyChild3s.map(child3 => ({
|
|
|
|
|
id: child3.id,
|
|
|
|
|
level: 3,
|
|
|
|
|
name: child3.strategyChild3Name,
|
|
|
|
|
children: child3.strategyChild4s ? child3.strategyChild4s.map(child4 => ({
|
|
|
|
|
id: child4.id,
|
|
|
|
|
level: 4,
|
|
|
|
|
name: child4.strategyChild4Name,
|
|
|
|
|
children: child4.strategyChild5s ? child4.strategyChild5s.map(child5 => ({
|
|
|
|
|
id: child5.id,
|
|
|
|
|
level: 5,
|
|
|
|
|
name: child5.strategyChild5Name,
|
|
|
|
|
})) : [],
|
|
|
|
|
})) : [],
|
|
|
|
|
})) : [],
|
|
|
|
|
})),
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return new HttpSuccess(formattedData);
|
2024-04-17 10:20:48 +07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Post()
|
|
|
|
|
public async newStrategyChild(
|
|
|
|
|
@Request() request: { user: Record<string, any> },
|
|
|
|
|
@Body()
|
|
|
|
|
body: {
|
|
|
|
|
name: string;
|
|
|
|
|
levelnode: number;
|
|
|
|
|
idnode?: string | null;
|
|
|
|
|
},
|
|
|
|
|
) {
|
|
|
|
|
let strategyRepo: any;
|
|
|
|
|
let strategyChild: any;
|
|
|
|
|
let repoSave: any;
|
|
|
|
|
|
|
|
|
|
switch (body.levelnode) {
|
|
|
|
|
case 0:
|
|
|
|
|
strategyRepo = this.strategy1Repo;
|
|
|
|
|
repoSave = this.strategy1Repo;
|
|
|
|
|
strategyChild = new StrategyChild1();
|
|
|
|
|
strategyChild.strategyChild1Name = body.name;
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
strategyRepo = this.strategy1Repo;
|
|
|
|
|
repoSave = this.strategy2Repo;
|
|
|
|
|
strategyChild = new StrategyChild2();
|
|
|
|
|
strategyChild.strategyChild2Name = body.name;
|
2024-04-17 13:56:10 +07:00
|
|
|
if (body.idnode) {
|
|
|
|
|
const chk1 = await this.strategy1Repo.findOne({
|
2024-04-17 10:20:48 +07:00
|
|
|
where: { id: body.idnode },
|
2024-04-17 13:56:10 +07:00
|
|
|
});
|
|
|
|
|
if (chk1) {
|
|
|
|
|
strategyChild.strategyChild1Id = chk1.id;
|
|
|
|
|
} else {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
|
|
|
|
}
|
2024-04-17 10:20:48 +07:00
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
strategyRepo = this.strategy2Repo;
|
|
|
|
|
repoSave = this.strategy3Repo;
|
|
|
|
|
strategyChild = new StrategyChild3();
|
|
|
|
|
strategyChild.strategyChild3Name = body.name;
|
2024-04-17 13:56:10 +07:00
|
|
|
if (body.idnode) {
|
|
|
|
|
const chk2 = await this.strategy2Repo.findOne({
|
|
|
|
|
where: { id: body.idnode },
|
|
|
|
|
});
|
|
|
|
|
if (chk2) {
|
|
|
|
|
strategyChild.strategyChild1Id = chk2.strategyChild1Id;
|
|
|
|
|
strategyChild.strategyChild2Id = chk2.id;
|
|
|
|
|
} else {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
|
|
|
|
}
|
2024-04-17 10:20:48 +07:00
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
strategyRepo = this.strategy3Repo;
|
|
|
|
|
repoSave = this.strategy4Repo;
|
|
|
|
|
strategyChild = new StrategyChild4();
|
|
|
|
|
strategyChild.strategyChild4Name = body.name;
|
2024-04-17 13:56:10 +07:00
|
|
|
if (body.idnode) {
|
|
|
|
|
const chk3 = await this.strategy3Repo.findOne({
|
|
|
|
|
where: { id: body.idnode },
|
|
|
|
|
});
|
|
|
|
|
if (chk3) {
|
|
|
|
|
strategyChild.strategyChild1Id = chk3.strategyChild1Id;
|
|
|
|
|
strategyChild.strategyChild2Id = chk3.strategyChild2Id;
|
|
|
|
|
strategyChild.strategyChild3Id = chk3.id;
|
|
|
|
|
} else {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
|
|
|
|
}
|
2024-04-17 10:20:48 +07:00
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
strategyRepo = this.strategy4Repo;
|
|
|
|
|
repoSave = this.strategy5Repo;
|
|
|
|
|
strategyChild = new StrategyChild5();
|
|
|
|
|
strategyChild.strategyChild5Name = body.name;
|
2024-04-17 13:56:10 +07:00
|
|
|
if (body.idnode) {
|
|
|
|
|
const chk4 = await this.strategy4Repo.findOne({
|
|
|
|
|
where: { id: body.idnode },
|
|
|
|
|
});
|
|
|
|
|
if (chk4) {
|
|
|
|
|
strategyChild.strategyChild1Id = chk4.strategyChild1Id;
|
|
|
|
|
strategyChild.strategyChild2Id = chk4.strategyChild2Id;
|
|
|
|
|
strategyChild.strategyChild3Id = chk4.strategyChild3Id;
|
|
|
|
|
strategyChild.strategyChild4Id = chk4.id;
|
|
|
|
|
} else {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
|
|
|
|
}
|
2024-04-17 10:20:48 +07:00
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
throw new HttpError(HttpStatus.BAD_REQUEST, "levelnode ไม่ถูกต้อง");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
strategyChild.createdUserId = request.user.sub;
|
|
|
|
|
strategyChild.createdFullName = request.user.name;
|
|
|
|
|
strategyChild.lastUpdateUserId = request.user.sub;
|
|
|
|
|
strategyChild.lastUpdateFullName = request.user.name;
|
|
|
|
|
|
|
|
|
|
await repoSave.save(strategyChild);
|
|
|
|
|
|
|
|
|
|
return new HttpSuccess(strategyChild.id);
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-17 10:40:11 +07:00
|
|
|
@Patch()
|
2024-04-17 10:20:48 +07:00
|
|
|
public async editStrategyChild1(
|
|
|
|
|
@Request() request: { user: Record<string, any> },
|
|
|
|
|
@Body()
|
|
|
|
|
body: {
|
|
|
|
|
name: string;
|
|
|
|
|
levelnode: number;
|
|
|
|
|
idnode: string;
|
|
|
|
|
},
|
|
|
|
|
) {
|
|
|
|
|
let strategyRepo: any;
|
|
|
|
|
let strategyChild: any;
|
|
|
|
|
let repoSave: any;
|
|
|
|
|
|
|
|
|
|
switch (body.levelnode) {
|
|
|
|
|
case 1:
|
|
|
|
|
strategyRepo = this.strategy1Repo;
|
|
|
|
|
strategyChild = await strategyRepo.findOne({
|
2024-04-17 13:56:10 +07:00
|
|
|
where: { id: body.idnode },
|
|
|
|
|
});
|
|
|
|
|
if (!strategyChild) {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
|
|
|
|
}
|
2024-04-17 10:20:48 +07:00
|
|
|
strategyChild.strategyChild1Name = body.name;
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
strategyRepo = this.strategy2Repo;
|
|
|
|
|
strategyChild = await strategyRepo.findOne({
|
2024-04-17 13:56:10 +07:00
|
|
|
where: { id: body.idnode },
|
|
|
|
|
});
|
|
|
|
|
if (!strategyChild) {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
|
|
|
|
}
|
2024-04-17 10:20:48 +07:00
|
|
|
repoSave = this.strategy2Repo;
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
strategyRepo = this.strategy3Repo;
|
|
|
|
|
strategyChild = await strategyRepo.findOne({
|
2024-04-17 13:56:10 +07:00
|
|
|
where: { id: body.idnode },
|
|
|
|
|
});
|
|
|
|
|
if (!strategyChild) {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
|
|
|
|
}
|
2024-04-17 10:20:48 +07:00
|
|
|
strategyChild.strategyChild3Name = body.name;
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
strategyRepo = this.strategy4Repo;
|
|
|
|
|
strategyChild = await strategyRepo.findOne({
|
2024-04-17 13:56:10 +07:00
|
|
|
where: { id: body.idnode },
|
|
|
|
|
});
|
|
|
|
|
if (!strategyChild) {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
|
|
|
|
}
|
2024-04-17 10:20:48 +07:00
|
|
|
strategyChild.strategyChild4Name = body.name;
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
strategyRepo = this.strategy5Repo;
|
|
|
|
|
strategyChild = await this.strategy5Repo.findOne({
|
2024-04-17 13:56:10 +07:00
|
|
|
where: { id: body.idnode },
|
|
|
|
|
});
|
|
|
|
|
if (!strategyChild) {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
|
|
|
|
}
|
2024-04-17 10:20:48 +07:00
|
|
|
strategyChild.strategyChild5Name = body.name;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
throw new HttpError(HttpStatus.BAD_REQUEST, "levelnode ไม่ถูกต้อง");
|
|
|
|
|
}
|
|
|
|
|
strategyChild.lastUpdateUserId = request.user.sub;
|
|
|
|
|
strategyChild.lastUpdateFullName = request.user.name;
|
|
|
|
|
|
|
|
|
|
await strategyRepo.save(strategyChild);
|
|
|
|
|
|
|
|
|
|
return new HttpSuccess();
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-17 10:40:11 +07:00
|
|
|
@Delete()
|
2024-04-17 13:56:10 +07:00
|
|
|
public async deleteStrategyChild(
|
|
|
|
|
@Request() request: { user: Record<string, any> },
|
|
|
|
|
@Body()
|
|
|
|
|
body: {
|
|
|
|
|
levelnode: number;
|
|
|
|
|
idnode: string;
|
|
|
|
|
},
|
|
|
|
|
) {
|
2024-04-17 10:20:48 +07:00
|
|
|
let strategyRepo: any;
|
|
|
|
|
let data: any;
|
|
|
|
|
|
|
|
|
|
switch (body.levelnode) {
|
|
|
|
|
case 1:
|
|
|
|
|
strategyRepo = this.strategy1Repo;
|
|
|
|
|
data = await strategyRepo.find({
|
2024-04-17 13:56:10 +07:00
|
|
|
where: { id: body.idnode },
|
2024-04-17 10:20:48 +07:00
|
|
|
});
|
2024-04-17 13:56:10 +07:00
|
|
|
if (!data) {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
2024-04-17 10:20:48 +07:00
|
|
|
}
|
|
|
|
|
await this.strategy5Repo.delete({ strategyChild1Id: body.idnode });
|
|
|
|
|
await this.strategy4Repo.delete({ strategyChild1Id: body.idnode });
|
|
|
|
|
await this.strategy3Repo.delete({ strategyChild1Id: body.idnode });
|
|
|
|
|
await this.strategy2Repo.delete({ strategyChild1Id: body.idnode });
|
2024-04-17 13:56:10 +07:00
|
|
|
await this.strategy1Repo.delete({ id: body.idnode });
|
2024-04-17 10:20:48 +07:00
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
strategyRepo = this.strategy2Repo;
|
|
|
|
|
data = await strategyRepo.find({
|
2024-04-17 13:56:10 +07:00
|
|
|
where: { id: body.idnode },
|
2024-04-17 10:20:48 +07:00
|
|
|
});
|
2024-04-17 13:56:10 +07:00
|
|
|
if (!data) {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
2024-04-17 10:20:48 +07:00
|
|
|
}
|
|
|
|
|
await this.strategy5Repo.delete({ strategyChild2Id: body.idnode });
|
|
|
|
|
await this.strategy4Repo.delete({ strategyChild2Id: body.idnode });
|
|
|
|
|
await this.strategy3Repo.delete({ strategyChild2Id: body.idnode });
|
2024-04-17 13:56:10 +07:00
|
|
|
await this.strategy2Repo.delete({ id: body.idnode });
|
2024-04-17 10:20:48 +07:00
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
strategyRepo = this.strategy3Repo;
|
|
|
|
|
data = await strategyRepo.find({
|
2024-04-17 13:56:10 +07:00
|
|
|
where: { id: body.idnode },
|
2024-04-17 10:20:48 +07:00
|
|
|
});
|
2024-04-17 13:56:10 +07:00
|
|
|
if (!data) {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
2024-04-17 10:20:48 +07:00
|
|
|
}
|
|
|
|
|
await this.strategy5Repo.delete({ strategyChild3Id: body.idnode });
|
|
|
|
|
await this.strategy4Repo.delete({ strategyChild3Id: body.idnode });
|
|
|
|
|
await this.strategy3Repo.delete({ id: body.idnode });
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
strategyRepo = this.strategy4Repo;
|
|
|
|
|
data = await strategyRepo.find({
|
2024-04-17 13:56:10 +07:00
|
|
|
where: { id: body.idnode },
|
2024-04-17 10:20:48 +07:00
|
|
|
});
|
2024-04-17 13:56:10 +07:00
|
|
|
if (!data) {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
2024-04-17 10:20:48 +07:00
|
|
|
}
|
|
|
|
|
await this.strategy5Repo.delete({ strategyChild4Id: body.idnode });
|
|
|
|
|
await this.strategy4Repo.delete({ id: body.idnode });
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
strategyRepo = this.strategy5Repo;
|
|
|
|
|
data = await strategyRepo.find({
|
2024-04-17 13:56:10 +07:00
|
|
|
where: { id: body.idnode },
|
2024-04-17 10:20:48 +07:00
|
|
|
});
|
2024-04-17 13:56:10 +07:00
|
|
|
if (!data) {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลยุทธศาสตร์");
|
2024-04-17 10:20:48 +07:00
|
|
|
}
|
|
|
|
|
await this.strategy5Repo.delete({ id: body.idnode });
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
throw new HttpError(HttpStatus.BAD_REQUEST, "levelnode ไม่ถูกต้อง");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!data) {
|
|
|
|
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new HttpSuccess();
|
|
|
|
|
}
|
|
|
|
|
}
|