hrms-api-org/src/controllers/OrganizationController.ts

108 lines
3.1 KiB
TypeScript
Raw Normal View History

2024-01-26 13:32:56 +07:00
import {
Controller,
Get,
Post,
Put,
Delete,
Patch,
Route,
Security,
Tags,
Body,
Path,
Request,
Example,
} from "tsoa";
import { OrgRevision } from "../entities/OrgRevision";
import { AppDataSource } from "../database/data-source";
import HttpSuccess from "../interfaces/http-success";
import { CreateOrgChild1, OrgChild1 } from "../entities/OrgChild1";
import HttpError from "../interfaces/http-error";
import HttpStatusCode from "../interfaces/http-status";
@Route("organization")
@Tags("Organization")
@Security("bearerAuth")
export class OrganizationController extends Controller {
private orgRevisionRepository = AppDataSource.getRepository(OrgRevision);
/**
* API
*
* @summary ORG_020 - #21
*
*/
@Get("history")
async GetHistory() {
try {
const orgRevision = await this.orgRevisionRepository.find({
select: ["id", "orgRevisionName", "orgRevisionIsCurrent", "orgRevisionCreatedAt", "orgRevisionIsDraft"],
});
if (!orgRevision) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
}
const mapOrgRevisions = orgRevision.map((revision) => ({
orgRevisionId: revision.id,
orgRevisionName: revision.orgRevisionName,
orgRevisionIsCurrent: revision.orgRevisionIsCurrent,
orgRevisionCreatedAt: revision.orgRevisionCreatedAt,
orgRevisionIsDraft: revision.orgRevisionIsDraft,
}));
return new HttpSuccess(mapOrgRevisions);
} catch (error) {
return error;
}
}
/**
* API
*
* @summary ORG_021 - #22
*
*/
@Get("active")
async GetActive() {
try {
const orgRevisionActive = await this.orgRevisionRepository.findOne({
where: { orgRevisionIsCurrent : true, orgRevisionIsDraft : false }
});
const orgRevisionDraf = await this.orgRevisionRepository.findOne({
where: { orgRevisionIsCurrent : false, orgRevisionIsDraft : true }
});
if (!orgRevisionActive || !orgRevisionDraf) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
}
const mapData = {
activeId: orgRevisionActive.id,
activeName: orgRevisionActive.orgRevisionName,
draftId: orgRevisionDraf.id,
draftName: orgRevisionDraf.orgRevisionName
};
return new HttpSuccess(mapData);
} catch (error) {
return error;
}
}
/**
* API 4
*
* @summary ORG_022 - #23 ()
*
*/
@Post()
async CreateOrgRevision(
@Body() requestBody: CreateOrgChild1,
@Request() request: { user: Record<string, any> },
){
try {
return new HttpSuccess();
} catch (error) {
return error;
}
}
}