API สร้างรอบเงินเดือน

This commit is contained in:
Bright 2024-02-22 15:32:42 +07:00
parent 9edb9993be
commit 383c31b7a3
2 changed files with 76 additions and 5 deletions

View file

@ -0,0 +1,76 @@
import {
Controller,
Get,
Post,
Put,
Delete,
Patch,
Route,
Security,
Tags,
Body,
Path,
Request,
Example,
Query,
} from "tsoa";
import { AppDataSource } from "../database/data-source";
import { DeepPartial, In, IsNull, Not, Between } from "typeorm";
import HttpSuccess from "../interfaces/http-success";
import HttpError from "../interfaces/http-error";
import HttpStatusCode from "../interfaces/http-status";
import { query } from "express";
import { randomUUID } from "crypto";
import { CreateSalaryPeriod, SalaryPeriod } from "../entities/SalaryPeriod";
import Extension from "../interfaces/extension";
@Route("api/v1/salary")
@Tags("Salary")
@Security("bearerAuth")
export class SalaryPeriodController extends Controller {
private salaryPeriodRepository = AppDataSource.getRepository(SalaryPeriod);
/**
* API
*
* @summary SLR_016 - #16
*
*/
@Post("period")
async create_salary_period(
@Body() requestBody: CreateSalaryPeriod,
@Request() request: { user: Record<string, any> },
) {
const salaryPeriod = Object.assign(new SalaryPeriod(), requestBody);
if (!salaryPeriod) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
}
const chk_toUpper = ["SPECIAL", "APR", "OCT"];
if (!chk_toUpper.includes(salaryPeriod.period.toUpperCase())) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทผัง ไม่ถูกต้อง");
}
const startOfYear = new Date(salaryPeriod.effectiveDate.getFullYear(), 0, 1);
const endOfYear = new Date(salaryPeriod.effectiveDate.getFullYear(), 11, 31);
const chk_period = await this.salaryPeriodRepository.findOne({
where: {
period: salaryPeriod.period,
effectiveDate: Between(startOfYear, endOfYear)
},
});
if (chk_period) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทผังปี "+ salaryPeriod.effectiveDate.getFullYear() +" ซ้ำ");
}
salaryPeriod.period = salaryPeriod.period.toUpperCase();
salaryPeriod.createdUserId = request.user.sub;
salaryPeriod.createdFullName = request.user.name;
salaryPeriod.lastUpdateUserId = request.user.sub;
salaryPeriod.lastUpdateFullName = request.user.name;
await this.salaryPeriodRepository.save(salaryPeriod);
return new HttpSuccess(salaryPeriod.id);
}
}

View file

@ -42,8 +42,6 @@ export class CreateSalaryPeriod {
@Column()
effectiveDate: Date;
@Column()
status?: string;
}
export class UpdateSalaryPeriod {
@ -57,7 +55,4 @@ export class UpdateSalaryPeriod {
@Column()
effectiveDate: Date;
@Column()
status?: string;
}