hrms-api-org/src/controllers/ViewWorkFlowController.ts
2024-11-07 10:58:40 +07:00

73 lines
2.2 KiB
TypeScript

import {
Body,
Controller,
Delete,
Get,
Patch,
Path,
Post,
Query,
Request,
Route,
Security,
Tags,
} from "tsoa";
import { AppDataSource } from "../database/data-source";
import HttpSuccess from "../interfaces/http-success";
import HttpStatus from "../interfaces/http-status";
import HttpError from "../interfaces/http-error";
import { RequestWithUser } from "../middlewares/user";
import { MetaWorkflow } from "../entities/MetaWorkflow";
import { MetaState } from "../entities/MetaState";
import { MetaStateOperator } from "../entities/MetaStateOperator";
@Route("api/v1/org/view-workflow")
@Tags("View Workflow")
@Security("bearerAuth")
export class ViewWorkFlowController extends Controller {
private metaWorkflowRepository = AppDataSource.getRepository(MetaWorkflow);
private metaStateRepository = AppDataSource.getRepository(MetaState);
private metaStateOperatorRepository = AppDataSource.getRepository(MetaStateOperator);
@Get("lists")
public async getSystems(@Request() req: RequestWithUser) {
const lists = await this.metaWorkflowRepository
.createQueryBuilder("metaWorkflow")
.select(["metaWorkflow.name", "metaWorkflow.sysName"])
// .groupBy("metaWorkflow.name")
.getMany();
const sys: any = [];
for (let index = 0; index < lists.length; index++) {
const element = await lists[index];
if (sys.findIndex((x: any) => x.sysName === element.sysName) === -1) {
sys.push({
sysName: element.sysName,
name: element.name,
});
}
}
return new HttpSuccess(sys);
}
@Get("")
public async getLists(
@Request() req: RequestWithUser,
@Query("sysName") sysName: string,
@Query("posTypeName") posTypeName: string,
@Query("posLevelName") posLevelName: string,
) {
const lists = await this.metaWorkflowRepository.find({
select: ["id", "name", "sysName", "posTypeName", "posLevelName"],
where: { sysName: sysName, posTypeName: posTypeName, posLevelName: posLevelName },
relations: ["metaStates", "metaStates.metaStateOperators"],
order: {
metaStates: {
order: "ASC",
},
},
});
return new HttpSuccess(lists);
}
}