แก้ไขเงินเดือน
This commit is contained in:
parent
f79704c7a7
commit
bf12751bfa
10 changed files with 969 additions and 582 deletions
|
|
@ -32,9 +32,7 @@ import { Not } from "typeorm";
|
|||
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง",
|
||||
)
|
||||
@SuccessResponse(HttpStatusCode.OK, "สำเร็จ")
|
||||
|
||||
export class PosLevelController extends Controller {
|
||||
|
||||
private posTypeRepository = AppDataSource.getRepository(PosType);
|
||||
private posLevelRepository = AppDataSource.getRepository(PosLevel);
|
||||
|
||||
|
|
@ -45,14 +43,12 @@ export class PosLevelController extends Controller {
|
|||
*
|
||||
*/
|
||||
@Post()
|
||||
@Example(
|
||||
{
|
||||
posLevelName: "นักบริหาร",
|
||||
posLevelRank: 1,
|
||||
posLevelAuthority: "HEAD",
|
||||
posTypeId: "08db9e81-fc46-4e95-8b33-be4ca0016abf"
|
||||
},
|
||||
)
|
||||
@Example({
|
||||
posLevelName: "นักบริหาร",
|
||||
posLevelRank: 1,
|
||||
posLevelAuthority: "HEAD",
|
||||
posTypeId: "08db9e81-fc46-4e95-8b33-be4ca0016abf",
|
||||
})
|
||||
async createLevel(
|
||||
@Body()
|
||||
requestBody: CreatePosLevel,
|
||||
|
|
@ -62,19 +58,29 @@ export class PosLevelController extends Controller {
|
|||
if (!posLevel) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
|
||||
}
|
||||
const chkPosTypeId = await this.posTypeRepository.findOne({ where: {
|
||||
id: requestBody.posTypeId }
|
||||
})
|
||||
if(!chkPosTypeId){
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล posTypeId ไอดีนี้ : " + requestBody.posTypeId);
|
||||
const chkPosTypeId = await this.posTypeRepository.findOne({
|
||||
where: {
|
||||
id: requestBody.posTypeId,
|
||||
},
|
||||
});
|
||||
if (!chkPosTypeId) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
"ไม่พบข้อมูล posTypeId ไอดีนี้ : " + requestBody.posTypeId,
|
||||
);
|
||||
}
|
||||
|
||||
const chkPosLevelName = await this.posLevelRepository.findOne({ where: {
|
||||
posTypeId: requestBody.posTypeId, //ระดับประเภทเดียวกัน ชื่อระดับตำแหน่ง ห้ามซ้ำ
|
||||
posLevelName: requestBody.posLevelName }
|
||||
})
|
||||
if(chkPosLevelName){
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ชื่อระดับตำแหน่ง: " + requestBody.posLevelName + " มีอยู่ในระบบแล้ว");
|
||||
const chkPosLevelName = await this.posLevelRepository.findOne({
|
||||
where: {
|
||||
posTypeId: requestBody.posTypeId, //ระดับประเภทเดียวกัน ชื่อระดับตำแหน่ง ห้ามซ้ำ
|
||||
posLevelName: requestBody.posLevelName,
|
||||
},
|
||||
});
|
||||
if (chkPosLevelName) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
"ชื่อระดับตำแหน่ง: " + requestBody.posLevelName + " มีอยู่ในระบบแล้ว",
|
||||
);
|
||||
}
|
||||
|
||||
const validPosLevelAuthority = ["HEAD", "DEPUTY", "GOVERNOR"];
|
||||
|
|
@ -86,12 +92,12 @@ export class PosLevelController extends Controller {
|
|||
}
|
||||
|
||||
// try {
|
||||
posLevel.createdUserId = request.user.sub;
|
||||
posLevel.createdFullName = request.user.name;
|
||||
posLevel.lastUpdateUserId = request.user.sub;
|
||||
posLevel.lastUpdateFullName = request.user.name;
|
||||
await this.posLevelRepository.save(posLevel);
|
||||
return new HttpSuccess(posLevel);
|
||||
posLevel.createdUserId = request.user.sub;
|
||||
posLevel.createdFullName = request.user.name;
|
||||
posLevel.lastUpdateUserId = request.user.sub;
|
||||
posLevel.lastUpdateFullName = request.user.name;
|
||||
await this.posLevelRepository.save(posLevel);
|
||||
return new HttpSuccess(posLevel);
|
||||
// } catch (error) {
|
||||
// return error;
|
||||
// }
|
||||
|
|
@ -105,12 +111,10 @@ export class PosLevelController extends Controller {
|
|||
* @param {string} id Id ระดับตำแหน่ง
|
||||
*/
|
||||
@Put("{id}")
|
||||
@Example(
|
||||
{
|
||||
positionName: "นักบริหาร",
|
||||
posTypeRank: 1,
|
||||
},
|
||||
)
|
||||
@Example({
|
||||
positionName: "นักบริหาร",
|
||||
posTypeRank: 1,
|
||||
})
|
||||
async editLevel(
|
||||
@Path() id: string,
|
||||
@Body() requestBody: UpdatePosLevel,
|
||||
|
|
@ -121,20 +125,30 @@ export class PosLevelController extends Controller {
|
|||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดีนี้ : " + id);
|
||||
}
|
||||
|
||||
const chkPosTypeId = await this.posTypeRepository.findOne({ where: {
|
||||
id: requestBody.posTypeId }
|
||||
})
|
||||
if(!chkPosTypeId){
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล posTypeId ไอดีนี้ : " + requestBody.posTypeId);
|
||||
const chkPosTypeId = await this.posTypeRepository.findOne({
|
||||
where: {
|
||||
id: requestBody.posTypeId,
|
||||
},
|
||||
});
|
||||
if (!chkPosTypeId) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
"ไม่พบข้อมูล posTypeId ไอดีนี้ : " + requestBody.posTypeId,
|
||||
);
|
||||
}
|
||||
|
||||
const chkPosLevelName = await this.posLevelRepository.findOne({ where: {
|
||||
id: Not(id),
|
||||
posTypeId: requestBody.posTypeId,
|
||||
posLevelName: requestBody.posLevelName }
|
||||
})
|
||||
if(chkPosLevelName){
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ชื่อระดับตำแหน่ง: " + requestBody.posLevelName + " มีอยู่ในระบบแล้ว");
|
||||
const chkPosLevelName = await this.posLevelRepository.findOne({
|
||||
where: {
|
||||
id: Not(id),
|
||||
posTypeId: requestBody.posTypeId,
|
||||
posLevelName: requestBody.posLevelName,
|
||||
},
|
||||
});
|
||||
if (chkPosLevelName) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
"ชื่อระดับตำแหน่ง: " + requestBody.posLevelName + " มีอยู่ในระบบแล้ว",
|
||||
);
|
||||
}
|
||||
const validPosLevelAuthority = ["HEAD", "DEPUTY", "GOVERNOR"];
|
||||
if (
|
||||
|
|
@ -145,11 +159,11 @@ export class PosLevelController extends Controller {
|
|||
}
|
||||
|
||||
// try {
|
||||
posLevel.lastUpdateUserId = request.user.sub;
|
||||
posLevel.lastUpdateFullName = request.user.name;
|
||||
this.posLevelRepository.merge(posLevel, requestBody);
|
||||
await this.posLevelRepository.save(posLevel);
|
||||
return new HttpSuccess(posLevel.id);
|
||||
posLevel.lastUpdateUserId = request.user.sub;
|
||||
posLevel.lastUpdateFullName = request.user.name;
|
||||
this.posLevelRepository.merge(posLevel, requestBody);
|
||||
await this.posLevelRepository.save(posLevel);
|
||||
return new HttpSuccess(posLevel.id);
|
||||
// } catch (error) {
|
||||
// return error;
|
||||
// }
|
||||
|
|
@ -169,8 +183,8 @@ export class PosLevelController extends Controller {
|
|||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดีนี้ : " + id);
|
||||
}
|
||||
// try {
|
||||
await this.posLevelRepository.remove(delPosLevel);
|
||||
return new HttpSuccess();
|
||||
await this.posLevelRepository.remove(delPosLevel);
|
||||
return new HttpSuccess();
|
||||
// } catch (error) {
|
||||
// return error;
|
||||
// }
|
||||
|
|
@ -184,43 +198,41 @@ export class PosLevelController extends Controller {
|
|||
* @param {string} id Id ระดับตำแหน่ง
|
||||
*/
|
||||
@Get("{id}")
|
||||
@Example(
|
||||
{
|
||||
@Example({
|
||||
id: "00000000-0000-0000-0000-000000000000",
|
||||
posLevelName: "นักบริหาร",
|
||||
posLevelRank: 1,
|
||||
posLevelAuthority: "HEAD",
|
||||
posTypes: {
|
||||
id: "00000000-0000-0000-0000-000000000000",
|
||||
posLevelName: "นักบริหาร",
|
||||
posLevelRank: 1,
|
||||
posLevelAuthority: "HEAD",
|
||||
posTypes: {
|
||||
id: "00000000-0000-0000-0000-000000000000",
|
||||
posTypeName: "นักบริหาร",
|
||||
posTypeRank: 1,
|
||||
},
|
||||
posTypeName: "นักบริหาร",
|
||||
posTypeRank: 1,
|
||||
},
|
||||
)
|
||||
})
|
||||
async GetLevelDetail(@Path() id: string) {
|
||||
// try {
|
||||
const getPosType = await this.posLevelRepository.findOne({
|
||||
select: ["id", "posLevelName", "posLevelRank", "posLevelAuthority"],
|
||||
relations: ["posType"],
|
||||
where: { id: id }
|
||||
});
|
||||
if (!getPosType) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดีนี้ : " + id);
|
||||
}
|
||||
const getPosType = await this.posLevelRepository.findOne({
|
||||
select: ["id", "posLevelName", "posLevelRank", "posLevelAuthority"],
|
||||
relations: ["posType"],
|
||||
where: { id: id },
|
||||
});
|
||||
if (!getPosType) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดีนี้ : " + id);
|
||||
}
|
||||
|
||||
const mapPosLevel = {
|
||||
id: getPosType.id,
|
||||
posLevelName: getPosType.posLevelName,
|
||||
posLevelRank: getPosType.posLevelRank,
|
||||
posLevelAuthority: getPosType.posLevelAuthority,
|
||||
posTypes:{
|
||||
id: getPosType.posType.id,
|
||||
posTypeName: getPosType.posType.posTypeName,
|
||||
posTypeRank: getPosType.posType.posTypeRank
|
||||
}
|
||||
}
|
||||
const mapPosLevel = {
|
||||
id: getPosType.id,
|
||||
posLevelName: getPosType.posLevelName,
|
||||
posLevelRank: getPosType.posLevelRank,
|
||||
posLevelAuthority: getPosType.posLevelAuthority,
|
||||
posTypes: {
|
||||
id: getPosType.posType.id,
|
||||
posTypeName: getPosType.posType.posTypeName,
|
||||
posTypeRank: getPosType.posType.posTypeRank,
|
||||
},
|
||||
};
|
||||
|
||||
return new HttpSuccess(mapPosLevel);
|
||||
return new HttpSuccess(mapPosLevel);
|
||||
// } catch (error) {
|
||||
// return error;
|
||||
// }
|
||||
|
|
@ -248,25 +260,23 @@ export class PosLevelController extends Controller {
|
|||
])
|
||||
async GetPosLevel() {
|
||||
// try {
|
||||
const posLevel = await this.posLevelRepository.find({
|
||||
select: ["id", "posLevelName", "posLevelRank", "posLevelAuthority", "posTypeId"],
|
||||
relations: ["posType"],
|
||||
});
|
||||
if (!posLevel) {
|
||||
return new HttpSuccess([]);
|
||||
}
|
||||
const mapPosLevel = posLevel.map((item) => ({
|
||||
id: item.id,
|
||||
posLevelName: item.posLevelName,
|
||||
posLevelRank: item.posLevelRank,
|
||||
posLevelAuthority: item.posLevelAuthority,
|
||||
posTypes: {
|
||||
id: item.posType.id,
|
||||
posTypeName: item.posType.posTypeName,
|
||||
posTypeRank: item.posType.posTypeRank,
|
||||
}
|
||||
}));
|
||||
return new HttpSuccess(mapPosLevel);
|
||||
const posLevel = await this.posLevelRepository.find({
|
||||
select: ["id", "posLevelName", "posLevelRank", "posLevelAuthority", "posTypeId"],
|
||||
relations: ["posType"],
|
||||
});
|
||||
|
||||
const mapPosLevel = posLevel.map((item) => ({
|
||||
id: item.id,
|
||||
posLevelName: item.posLevelName,
|
||||
posLevelRank: item.posLevelRank,
|
||||
posLevelAuthority: item.posLevelAuthority,
|
||||
posTypes: {
|
||||
id: item.posType.id,
|
||||
posTypeName: item.posType.posTypeName,
|
||||
posTypeRank: item.posType.posTypeRank,
|
||||
},
|
||||
}));
|
||||
return new HttpSuccess(mapPosLevel);
|
||||
// } catch (error) {
|
||||
// return error;
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -32,9 +32,7 @@ import { Not } from "typeorm";
|
|||
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง",
|
||||
)
|
||||
@SuccessResponse(HttpStatusCode.OK, "สำเร็จ")
|
||||
|
||||
export class PosTypeController extends Controller {
|
||||
|
||||
private posTypeRepository = AppDataSource.getRepository(PosType);
|
||||
private posLevelRepository = AppDataSource.getRepository(PosLevel);
|
||||
|
||||
|
|
@ -45,34 +43,37 @@ export class PosTypeController extends Controller {
|
|||
*
|
||||
*/
|
||||
@Post()
|
||||
@Example(
|
||||
{
|
||||
positionName: "นักบริหาร",
|
||||
posTypeRank: 1,
|
||||
},
|
||||
)
|
||||
@Example({
|
||||
positionName: "นักบริหาร",
|
||||
posTypeRank: 1,
|
||||
})
|
||||
async createType(
|
||||
@Body()
|
||||
requestBody: CreatePosType,
|
||||
@Request() request: { user: Record<string, any> },
|
||||
@Request() request: { user: Record<string, any> },
|
||||
) {
|
||||
const posType = Object.assign(new PosType(), requestBody);
|
||||
if (!posType) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
|
||||
}
|
||||
const chkPosTypeName = await this.posTypeRepository.findOne({ where: {
|
||||
posTypeName: requestBody.posTypeName }
|
||||
})
|
||||
if(chkPosTypeName){
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ชื่อประเภทตำแหน่ง: " + requestBody.posTypeName + " มีอยู่ในระบบแล้ว");
|
||||
const chkPosTypeName = await this.posTypeRepository.findOne({
|
||||
where: {
|
||||
posTypeName: requestBody.posTypeName,
|
||||
},
|
||||
});
|
||||
if (chkPosTypeName) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
"ชื่อประเภทตำแหน่ง: " + requestBody.posTypeName + " มีอยู่ในระบบแล้ว",
|
||||
);
|
||||
}
|
||||
// try {
|
||||
posType.createdUserId = request.user.sub;
|
||||
posType.createdFullName = request.user.name;
|
||||
posType.lastUpdateUserId = request.user.sub;
|
||||
posType.lastUpdateFullName = request.user.name;
|
||||
await this.posTypeRepository.save(posType);
|
||||
return new HttpSuccess(posType);
|
||||
posType.createdUserId = request.user.sub;
|
||||
posType.createdFullName = request.user.name;
|
||||
posType.lastUpdateUserId = request.user.sub;
|
||||
posType.lastUpdateFullName = request.user.name;
|
||||
await this.posTypeRepository.save(posType);
|
||||
return new HttpSuccess(posType);
|
||||
// } catch (error) {
|
||||
// return error;
|
||||
// }
|
||||
|
|
@ -86,12 +87,10 @@ export class PosTypeController extends Controller {
|
|||
* @param {string} id Id ประเภทตำแหน่ง
|
||||
*/
|
||||
@Put("{id}")
|
||||
@Example(
|
||||
{
|
||||
positionName: "นักบริหาร",
|
||||
posTypeRank: 1,
|
||||
},
|
||||
)
|
||||
@Example({
|
||||
positionName: "นักบริหาร",
|
||||
posTypeRank: 1,
|
||||
})
|
||||
async editType(
|
||||
@Path() id: string,
|
||||
@Body() requestBody: UpdatePosType,
|
||||
|
|
@ -101,19 +100,24 @@ export class PosTypeController extends Controller {
|
|||
if (!posType) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดีนี้ : " + id);
|
||||
}
|
||||
const chkPosTypeName = await this.posTypeRepository.findOne({ where: {
|
||||
id: Not(id),
|
||||
posTypeName: requestBody.posTypeName }
|
||||
})
|
||||
if(chkPosTypeName){
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ชื่อประเภทตำแหน่ง: " + requestBody.posTypeName + " มีอยู่ในระบบแล้ว");
|
||||
const chkPosTypeName = await this.posTypeRepository.findOne({
|
||||
where: {
|
||||
id: Not(id),
|
||||
posTypeName: requestBody.posTypeName,
|
||||
},
|
||||
});
|
||||
if (chkPosTypeName) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
"ชื่อประเภทตำแหน่ง: " + requestBody.posTypeName + " มีอยู่ในระบบแล้ว",
|
||||
);
|
||||
}
|
||||
// try {
|
||||
posType.lastUpdateUserId = request.user.sub;
|
||||
posType.lastUpdateFullName = request.user.name;
|
||||
this.posTypeRepository.merge(posType, requestBody);
|
||||
await this.posTypeRepository.save(posType);
|
||||
return new HttpSuccess(posType.id);
|
||||
posType.lastUpdateUserId = request.user.sub;
|
||||
posType.lastUpdateFullName = request.user.name;
|
||||
this.posTypeRepository.merge(posType, requestBody);
|
||||
await this.posTypeRepository.save(posType);
|
||||
return new HttpSuccess(posType.id);
|
||||
// } catch (error) {
|
||||
// return error;
|
||||
// }
|
||||
|
|
@ -133,15 +137,15 @@ export class PosTypeController extends Controller {
|
|||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดีนี้ : " + id);
|
||||
}
|
||||
const IdExitsInLevel = await this.posLevelRepository.find({
|
||||
where: { posTypeId: id }
|
||||
})
|
||||
if(IdExitsInLevel.length > 0){
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่สามารถลบได้ เนื่องจาก id ผูกกับ posLevel",);
|
||||
where: { posTypeId: id },
|
||||
});
|
||||
if (IdExitsInLevel.length > 0) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่สามารถลบได้ เนื่องจาก id ผูกกับ posLevel");
|
||||
}
|
||||
|
||||
|
||||
// try {
|
||||
await this.posTypeRepository.remove(delPosType);
|
||||
return new HttpSuccess();
|
||||
await this.posTypeRepository.remove(delPosType);
|
||||
return new HttpSuccess();
|
||||
// } catch (error) {
|
||||
// return error;
|
||||
// }
|
||||
|
|
@ -165,35 +169,35 @@ export class PosTypeController extends Controller {
|
|||
id: "00000000-0000-0000-0000-000000000000",
|
||||
posLevelName: "นักบริหาร",
|
||||
posLevelRank: 1,
|
||||
posLevelAuthority: "HEAD"
|
||||
}
|
||||
]
|
||||
posLevelAuthority: "HEAD",
|
||||
},
|
||||
],
|
||||
},
|
||||
])
|
||||
async GetTypeDetail(@Path() id: string) {
|
||||
// try {
|
||||
const getPosType = await this.posTypeRepository.findOne({
|
||||
select: ["id", "posTypeName", "posTypeRank"],
|
||||
relations: ["posLevels"],
|
||||
where: { id: id }
|
||||
});
|
||||
if (!getPosType) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดีนี้ : " + id);
|
||||
}
|
||||
const getPosType = await this.posTypeRepository.findOne({
|
||||
select: ["id", "posTypeName", "posTypeRank"],
|
||||
relations: ["posLevels"],
|
||||
where: { id: id },
|
||||
});
|
||||
if (!getPosType) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดีนี้ : " + id);
|
||||
}
|
||||
|
||||
const mapGetPosType = {
|
||||
id : getPosType.id,
|
||||
posTypeName : getPosType.posTypeName,
|
||||
posTypeRank : getPosType.posTypeRank,
|
||||
posLevels : getPosType.posLevels.map((posLevel) => ({
|
||||
id: posLevel.id,
|
||||
posLevelName: posLevel.posLevelName,
|
||||
posLevelRank: posLevel.posLevelRank,
|
||||
posLevelAuthority: posLevel.posLevelAuthority,
|
||||
})),
|
||||
}
|
||||
|
||||
return new HttpSuccess(mapGetPosType);
|
||||
const mapGetPosType = {
|
||||
id: getPosType.id,
|
||||
posTypeName: getPosType.posTypeName,
|
||||
posTypeRank: getPosType.posTypeRank,
|
||||
posLevels: getPosType.posLevels.map((posLevel) => ({
|
||||
id: posLevel.id,
|
||||
posLevelName: posLevel.posLevelName,
|
||||
posLevelRank: posLevel.posLevelRank,
|
||||
posLevelAuthority: posLevel.posLevelAuthority,
|
||||
})),
|
||||
};
|
||||
|
||||
return new HttpSuccess(mapGetPosType);
|
||||
// } catch (error) {
|
||||
// return error;
|
||||
// }
|
||||
|
|
@ -223,25 +227,23 @@ export class PosTypeController extends Controller {
|
|||
])
|
||||
async GetPosType() {
|
||||
// try {
|
||||
const posType = await this.posTypeRepository.find({
|
||||
select: ["id", "posTypeName", "posTypeRank"],
|
||||
relations: ["posLevels"],
|
||||
});
|
||||
if (!posType) {
|
||||
return new HttpSuccess([]);
|
||||
}
|
||||
const mapPosType = posType.map((item) => ({
|
||||
id: item.id,
|
||||
posTypeName: item.posTypeName,
|
||||
posTypeRank: item.posTypeRank,
|
||||
posLevels: item.posLevels.map((posLevel) => ({
|
||||
id: posLevel.id,
|
||||
posLevelName: posLevel.posLevelName,
|
||||
posLevelRank: posLevel.posLevelRank,
|
||||
posLevelAuthority: posLevel.posLevelAuthority,
|
||||
})),
|
||||
}));
|
||||
return new HttpSuccess(mapPosType);
|
||||
const posType = await this.posTypeRepository.find({
|
||||
select: ["id", "posTypeName", "posTypeRank"],
|
||||
relations: ["posLevels"],
|
||||
});
|
||||
|
||||
const mapPosType = posType.map((item) => ({
|
||||
id: item.id,
|
||||
posTypeName: item.posTypeName,
|
||||
posTypeRank: item.posTypeRank,
|
||||
posLevels: item.posLevels.map((posLevel) => ({
|
||||
id: posLevel.id,
|
||||
posLevelName: posLevel.posLevelName,
|
||||
posLevelRank: posLevel.posLevelRank,
|
||||
posLevelAuthority: posLevel.posLevelAuthority,
|
||||
})),
|
||||
}));
|
||||
return new HttpSuccess(mapPosType);
|
||||
// } catch (error) {
|
||||
// return error;
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -57,48 +57,48 @@ export class Salary extends Controller {
|
|||
@Request() request: { user: Record<string, any> },
|
||||
) {
|
||||
// try {
|
||||
const salarys = Object.assign(new Salarys(), requestBody);
|
||||
if (!salarys) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
|
||||
}
|
||||
const salarys = Object.assign(new Salarys(), requestBody);
|
||||
if (!salarys) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
|
||||
}
|
||||
|
||||
const chk_salaryType = ["OFFICER", "EMPLOYEE"];
|
||||
if (!chk_salaryType.includes(salarys.salaryType.toUpperCase())) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทผัง ไม่ถูกต้อง");
|
||||
}
|
||||
const chk_salaryType = ["OFFICER", "EMPLOYEE"];
|
||||
if (!chk_salaryType.includes(salarys.salaryType.toUpperCase())) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทผัง ไม่ถูกต้อง");
|
||||
}
|
||||
|
||||
const chk_posTypeId = await this.poTypeRepository.findOne({
|
||||
where: { id: salarys.posTypeId },
|
||||
});
|
||||
if (!chk_posTypeId) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทของตำแหน่ง ไม่ถูกต้อง");
|
||||
}
|
||||
const chk_posTypeId = await this.poTypeRepository.findOne({
|
||||
where: { id: salarys.posTypeId },
|
||||
});
|
||||
if (!chk_posTypeId) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทของตำแหน่ง ไม่ถูกต้อง");
|
||||
}
|
||||
|
||||
const chk_posLevelId = await this.posLevelRepository.findOne({
|
||||
where: { id: salarys.posLevelId },
|
||||
});
|
||||
if (!chk_posLevelId) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ระดับของตำแหน่ง ไม่ถูกต้อง");
|
||||
}
|
||||
const chk_posLevelId = await this.posLevelRepository.findOne({
|
||||
where: { id: salarys.posLevelId },
|
||||
});
|
||||
if (!chk_posLevelId) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ระดับของตำแหน่ง ไม่ถูกต้อง");
|
||||
}
|
||||
|
||||
const chk_3fields = await this.salaryRepository.findOne({
|
||||
where: {
|
||||
salaryType: salarys.salaryType,
|
||||
posTypeId: salarys.posTypeId,
|
||||
posLevelId: salarys.posLevelId,
|
||||
},
|
||||
});
|
||||
if (chk_3fields && salarys.isActive) {
|
||||
salarys.isActive = false;
|
||||
}
|
||||
salarys.salaryType = salarys.salaryType.toUpperCase();
|
||||
salarys.isSpecial = salarys.isSpecial;
|
||||
salarys.createdUserId = request.user.sub;
|
||||
salarys.createdFullName = request.user.name;
|
||||
salarys.lastUpdateUserId = request.user.sub;
|
||||
salarys.lastUpdateFullName = request.user.name;
|
||||
await this.salaryRepository.save(salarys);
|
||||
return new HttpSuccess(salarys.id);
|
||||
const chk_3fields = await this.salaryRepository.findOne({
|
||||
where: {
|
||||
salaryType: salarys.salaryType,
|
||||
posTypeId: salarys.posTypeId,
|
||||
posLevelId: salarys.posLevelId,
|
||||
},
|
||||
});
|
||||
if (chk_3fields && salarys.isActive) {
|
||||
salarys.isActive = false;
|
||||
}
|
||||
salarys.salaryType = salarys.salaryType.toUpperCase();
|
||||
salarys.isSpecial = salarys.isSpecial;
|
||||
salarys.createdUserId = request.user.sub;
|
||||
salarys.createdFullName = request.user.name;
|
||||
salarys.lastUpdateUserId = request.user.sub;
|
||||
salarys.lastUpdateFullName = request.user.name;
|
||||
await this.salaryRepository.save(salarys);
|
||||
return new HttpSuccess(salarys.id);
|
||||
// } catch (error: any) {
|
||||
// throw new Error(error);
|
||||
// }
|
||||
|
|
@ -128,64 +128,64 @@ export class Salary extends Controller {
|
|||
@Request() request: { user: Record<string, any> },
|
||||
) {
|
||||
// try {
|
||||
const chk_Salary = await this.salaryRepository.findOne({
|
||||
where: { id: id },
|
||||
});
|
||||
if (!chk_Salary) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดี: " + id);
|
||||
}
|
||||
const chk_Salary = await this.salaryRepository.findOne({
|
||||
where: { id: id },
|
||||
});
|
||||
if (!chk_Salary) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดี: " + id);
|
||||
}
|
||||
|
||||
if (chk_Salary.isActive && !requestBody.isActive) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
"ไม่สามารถแก้ไขสถานะการใช้งานที่เป็น Default ได้",
|
||||
);
|
||||
}
|
||||
if (chk_Salary.isActive && !requestBody.isActive) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
"ไม่สามารถแก้ไขสถานะการใช้งานที่เป็น Default ได้",
|
||||
);
|
||||
}
|
||||
|
||||
const chk_3fields = await this.salaryRepository.findOne({
|
||||
where: {
|
||||
salaryType: requestBody.salaryType,
|
||||
posTypeId: requestBody.posTypeId,
|
||||
posLevelId: requestBody.posLevelId,
|
||||
isActive: true,
|
||||
id: Not(id),
|
||||
},
|
||||
});
|
||||
const chk_3fields = await this.salaryRepository.findOne({
|
||||
where: {
|
||||
salaryType: requestBody.salaryType,
|
||||
posTypeId: requestBody.posTypeId,
|
||||
posLevelId: requestBody.posLevelId,
|
||||
isActive: true,
|
||||
id: Not(id),
|
||||
},
|
||||
});
|
||||
|
||||
if (chk_3fields != null && requestBody.isActive) {
|
||||
chk_3fields.isActive = false;
|
||||
chk_3fields.lastUpdateUserId = request.user.sub;
|
||||
chk_3fields.lastUpdateFullName = request.user.name;
|
||||
chk_3fields.lastUpdatedAt = new Date();
|
||||
await this.salaryRepository.save(chk_3fields);
|
||||
}
|
||||
if (chk_3fields != null && requestBody.isActive) {
|
||||
chk_3fields.isActive = false;
|
||||
chk_3fields.lastUpdateUserId = request.user.sub;
|
||||
chk_3fields.lastUpdateFullName = request.user.name;
|
||||
chk_3fields.lastUpdatedAt = new Date();
|
||||
await this.salaryRepository.save(chk_3fields);
|
||||
}
|
||||
|
||||
const chk_salaryType = ["OFFICER", "EMPLOYEE"];
|
||||
if (!chk_salaryType.includes(String(requestBody.salaryType).toUpperCase())) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทผัง ไม่ถูกต้อง");
|
||||
}
|
||||
const chk_salaryType = ["OFFICER", "EMPLOYEE"];
|
||||
if (!chk_salaryType.includes(String(requestBody.salaryType).toUpperCase())) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทผัง ไม่ถูกต้อง");
|
||||
}
|
||||
|
||||
const chk_posTypeId = await this.poTypeRepository.findOne({
|
||||
where: { id: requestBody.posTypeId },
|
||||
});
|
||||
if (!chk_posTypeId) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทของตำแหน่ง ไม่ถูกต้อง");
|
||||
}
|
||||
const chk_posTypeId = await this.poTypeRepository.findOne({
|
||||
where: { id: requestBody.posTypeId },
|
||||
});
|
||||
if (!chk_posTypeId) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทของตำแหน่ง ไม่ถูกต้อง");
|
||||
}
|
||||
|
||||
const chk_posLevelId = await this.posLevelRepository.findOne({
|
||||
where: { id: requestBody.posLevelId },
|
||||
});
|
||||
if (!chk_posLevelId) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ระดับของตำแหน่ง ไม่ถูกต้อง");
|
||||
}
|
||||
const mergeData = Object.assign(new Salarys(), requestBody);
|
||||
|
||||
chk_Salary.lastUpdateUserId = request.user.sub;
|
||||
chk_Salary.lastUpdateFullName = request.user.name;
|
||||
chk_Salary.lastUpdatedAt = new Date();
|
||||
this.salaryRepository.merge(chk_Salary, mergeData);
|
||||
await this.salaryRepository.save(chk_Salary);
|
||||
return new HttpSuccess(id);
|
||||
const chk_posLevelId = await this.posLevelRepository.findOne({
|
||||
where: { id: requestBody.posLevelId },
|
||||
});
|
||||
if (!chk_posLevelId) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ระดับของตำแหน่ง ไม่ถูกต้อง");
|
||||
}
|
||||
const mergeData = Object.assign(new Salarys(), requestBody);
|
||||
|
||||
chk_Salary.lastUpdateUserId = request.user.sub;
|
||||
chk_Salary.lastUpdateFullName = request.user.name;
|
||||
chk_Salary.lastUpdatedAt = new Date();
|
||||
this.salaryRepository.merge(chk_Salary, mergeData);
|
||||
await this.salaryRepository.save(chk_Salary);
|
||||
return new HttpSuccess(id);
|
||||
// } catch (error: any) {
|
||||
// throw new Error(error);
|
||||
// }
|
||||
|
|
@ -201,25 +201,25 @@ export class Salary extends Controller {
|
|||
@Delete("{id}")
|
||||
async delete_salary(@Path() id: string) {
|
||||
// try {
|
||||
const chk_Salary = await this.salaryRepository.findOne({
|
||||
where: { id: id },
|
||||
});
|
||||
if (!chk_Salary) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดี: " + id);
|
||||
}
|
||||
if (chk_Salary.isActive) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
// "ไม่สามารถลบไอดี: " + id + " ได้ เนื่องสถานะการใช้งานที่เป็น Default",
|
||||
"ไม่สามารถลบข้อมูลนี้ได้ เนื่องจากเปิดใช้งานอยู่",
|
||||
);
|
||||
}
|
||||
const del_SalaryRank = await this.salaryRankRepository.find({
|
||||
where: { salaryId: chk_Salary.id }
|
||||
});
|
||||
await this.salaryRankRepository.remove(del_SalaryRank);
|
||||
await this.salaryRepository.remove(chk_Salary);
|
||||
return new HttpSuccess();
|
||||
const chk_Salary = await this.salaryRepository.findOne({
|
||||
where: { id: id },
|
||||
});
|
||||
if (!chk_Salary) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดี: " + id);
|
||||
}
|
||||
if (chk_Salary.isActive) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
// "ไม่สามารถลบไอดี: " + id + " ได้ เนื่องสถานะการใช้งานที่เป็น Default",
|
||||
"ไม่สามารถลบข้อมูลนี้ได้ เนื่องจากเปิดใช้งานอยู่",
|
||||
);
|
||||
}
|
||||
const del_SalaryRank = await this.salaryRankRepository.find({
|
||||
where: { salaryId: chk_Salary.id },
|
||||
});
|
||||
await this.salaryRankRepository.remove(del_SalaryRank);
|
||||
await this.salaryRepository.remove(chk_Salary);
|
||||
return new HttpSuccess();
|
||||
// } catch (error: any) {
|
||||
// throw new Error(error);
|
||||
// }
|
||||
|
|
@ -245,24 +245,24 @@ export class Salary extends Controller {
|
|||
})
|
||||
async GetSalaryById(@Path() id: string) {
|
||||
// try {
|
||||
const salary = await this.salaryRepository.findOne({
|
||||
where: { id: id },
|
||||
select: [
|
||||
"salaryType",
|
||||
"isSpecial",
|
||||
"posTypeId",
|
||||
"posLevelId",
|
||||
"isActive",
|
||||
"date",
|
||||
"startDate",
|
||||
"endDate",
|
||||
"details",
|
||||
],
|
||||
});
|
||||
if (!salary) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดี: " + id);
|
||||
}
|
||||
return new HttpSuccess(salary);
|
||||
const salary = await this.salaryRepository.findOne({
|
||||
where: { id: id },
|
||||
select: [
|
||||
"salaryType",
|
||||
"isSpecial",
|
||||
"posTypeId",
|
||||
"posLevelId",
|
||||
"isActive",
|
||||
"date",
|
||||
"startDate",
|
||||
"endDate",
|
||||
"details",
|
||||
],
|
||||
});
|
||||
if (!salary) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดี: " + id);
|
||||
}
|
||||
return new HttpSuccess(salary);
|
||||
// } catch (error: any) {
|
||||
// throw new Error(error);
|
||||
// }
|
||||
|
|
@ -280,52 +280,31 @@ export class Salary extends Controller {
|
|||
@Query("pageSize") pageSize: number = 10,
|
||||
@Query("keyword") keyword?: string,
|
||||
) {
|
||||
//ssss total ผิด
|
||||
// try {
|
||||
const [salary, total] = await this.salaryRepository.findAndCount({
|
||||
relations: ["posLevel_", "posType_"],
|
||||
order: {
|
||||
startDate: "DESC",
|
||||
},
|
||||
skip: (page - 1) * pageSize,
|
||||
take: pageSize,
|
||||
});
|
||||
if (keyword != undefined && keyword !== "") {
|
||||
const filteredSalary = salary.filter(
|
||||
(x) =>
|
||||
x.salaryType?.toString().includes(keyword) ||
|
||||
x.isSpecial?.toString().includes(keyword) || //new 20.02.67
|
||||
x.posLevel_?.posLevelName?.toString().includes(keyword) ||
|
||||
x.posType_?.posTypeName?.toString().includes(keyword) ||
|
||||
x.isActive?.toString().includes(keyword) ||
|
||||
x.date?.toString().includes(keyword) ||
|
||||
x.startDate?.toString().includes(keyword) ||
|
||||
x.endDate?.toString().includes(keyword) ||
|
||||
x.details?.toString().includes(keyword),
|
||||
);
|
||||
const [salary, total] = await this.salaryRepository.findAndCount({
|
||||
relations: ["posLevel_", "posType_"],
|
||||
order: {
|
||||
startDate: "DESC",
|
||||
},
|
||||
skip: (page - 1) * pageSize,
|
||||
take: pageSize,
|
||||
});
|
||||
if (keyword != undefined && keyword !== "") {
|
||||
const filteredSalary = salary.filter(
|
||||
(x) =>
|
||||
x.salaryType?.toString().includes(keyword) ||
|
||||
x.isSpecial?.toString().includes(keyword) || //new 20.02.67
|
||||
x.posLevel_?.posLevelName?.toString().includes(keyword) ||
|
||||
x.posType_?.posTypeName?.toString().includes(keyword) ||
|
||||
x.isActive?.toString().includes(keyword) ||
|
||||
x.date?.toString().includes(keyword) ||
|
||||
x.startDate?.toString().includes(keyword) ||
|
||||
x.endDate?.toString().includes(keyword) ||
|
||||
x.details?.toString().includes(keyword),
|
||||
);
|
||||
|
||||
const formattedData = filteredSalary.map((item) => ({
|
||||
id: item.id,
|
||||
salaryType: item.salaryType,
|
||||
isSpecial: item.isSpecial,
|
||||
posTypeId: item.posType_?.id,
|
||||
posType: item.posType_?.posTypeName,
|
||||
posLevelId: item.posLevel_?.id,
|
||||
posLevel: item.posLevel_?.posLevelName,
|
||||
isActive: item.isActive,
|
||||
date: item.date,
|
||||
startDate: item.startDate,
|
||||
endDate: item.endDate,
|
||||
details: item.details,
|
||||
}));
|
||||
|
||||
return new HttpSuccess({ data: formattedData, total: formattedData.length });
|
||||
}
|
||||
|
||||
if (!salary) {
|
||||
return new HttpSuccess([]);
|
||||
}
|
||||
|
||||
const formattedData = salary.map((item) => ({
|
||||
const formattedData = filteredSalary.map((item) => ({
|
||||
id: item.id,
|
||||
salaryType: item.salaryType,
|
||||
isSpecial: item.isSpecial,
|
||||
|
|
@ -339,7 +318,25 @@ export class Salary extends Controller {
|
|||
endDate: item.endDate,
|
||||
details: item.details,
|
||||
}));
|
||||
return new HttpSuccess({ data: formattedData, total });
|
||||
|
||||
return new HttpSuccess({ data: formattedData, total: formattedData.length });
|
||||
}
|
||||
|
||||
const formattedData = salary.map((item) => ({
|
||||
id: item.id,
|
||||
salaryType: item.salaryType,
|
||||
isSpecial: item.isSpecial,
|
||||
posTypeId: item.posType_?.id,
|
||||
posType: item.posType_?.posTypeName,
|
||||
posLevelId: item.posLevel_?.id,
|
||||
posLevel: item.posLevel_?.posLevelName,
|
||||
isActive: item.isActive,
|
||||
date: item.date,
|
||||
startDate: item.startDate,
|
||||
endDate: item.endDate,
|
||||
details: item.details,
|
||||
}));
|
||||
return new HttpSuccess({ data: formattedData, total });
|
||||
// } catch (error: any) {
|
||||
// throw new Error(error);
|
||||
// }
|
||||
|
|
@ -357,34 +354,31 @@ export class Salary extends Controller {
|
|||
@Request() request: { user: Record<string, any> },
|
||||
) {
|
||||
// try {
|
||||
const salary = await this.salaryRepository.findOne({
|
||||
relations: ["posLevel_", "posType_", "salaryRanks_"],
|
||||
where: { id: body.id },
|
||||
});
|
||||
const salary = await this.salaryRepository.findOne({
|
||||
relations: ["posLevel_", "posType_", "salaryRanks_"],
|
||||
where: { id: body.id },
|
||||
});
|
||||
|
||||
if (!salary) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
"ไม่พบข้อมูลเงินเดือนจากไอดีนี้ : " + body.id,
|
||||
);
|
||||
}
|
||||
if (!salary) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลเงินเดือนจากไอดีนี้ : " + body.id);
|
||||
}
|
||||
|
||||
const salaryRank = await this.salaryRankRepository.find({
|
||||
where: { salaryId: salary?.id },
|
||||
});
|
||||
const salaryRank = await this.salaryRankRepository.find({
|
||||
where: { salaryId: salary?.id },
|
||||
});
|
||||
|
||||
const newSalary = { ...salary, id: randomUUID(), isActive: false };
|
||||
const newSalary = { ...salary, id: randomUUID(), isActive: false };
|
||||
|
||||
await this.salaryRepository.save(newSalary);
|
||||
await this.salaryRepository.save(newSalary);
|
||||
|
||||
await Promise.all(
|
||||
salaryRank.map(async (v) => {
|
||||
const newSalaryRank = { ...v, id: randomUUID() };
|
||||
await this.salaryRankRepository.save(newSalaryRank);
|
||||
}),
|
||||
);
|
||||
await Promise.all(
|
||||
salaryRank.map(async (v) => {
|
||||
const newSalaryRank = { ...v, id: randomUUID() };
|
||||
await this.salaryRankRepository.save(newSalaryRank);
|
||||
}),
|
||||
);
|
||||
|
||||
return new HttpSuccess({ id: newSalary.id });
|
||||
return new HttpSuccess({ id: newSalary.id });
|
||||
// } catch (error: any) {
|
||||
// throw new Error(error);
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -15,18 +15,22 @@ import {
|
|||
Query,
|
||||
} from "tsoa";
|
||||
import { AppDataSource } from "../database/data-source";
|
||||
import { DeepPartial, In, IsNull, Not, Between } from "typeorm";
|
||||
import { DeepPartial, In, IsNull, Not, Between, MoreThan } from "typeorm";
|
||||
import HttpSuccess from "../interfaces/http-success";
|
||||
import HttpError from "../interfaces/http-error";
|
||||
import HttpStatusCode from "../interfaces/http-status";
|
||||
import { CreateSalaryPeriod, SalaryPeriod, UpdateSalaryPeriod } from "../entities/SalaryPeriod";
|
||||
import Extension from "../interfaces/extension";
|
||||
import Extension from "../interfaces/extension";
|
||||
import { SalaryOrg } from "../entities/SalaryOrg";
|
||||
import { CreateSalaryProfile, SalaryProfile } from "../entities/SalaryProfile";
|
||||
|
||||
@Route("api/v1/salary")
|
||||
@Route("api/v1/salary/period")
|
||||
@Tags("Salary")
|
||||
@Security("bearerAuth")
|
||||
export class SalaryPeriodController extends Controller {
|
||||
private salaryPeriodRepository = AppDataSource.getRepository(SalaryPeriod);
|
||||
private salaryOrgRepository = AppDataSource.getRepository(SalaryOrg);
|
||||
private salaryProfileRepository = AppDataSource.getRepository(SalaryProfile);
|
||||
|
||||
/**
|
||||
* API สร้างรอบเงินเดือน
|
||||
|
|
@ -34,11 +38,12 @@ export class SalaryPeriodController extends Controller {
|
|||
* @summary SLR_016 - สร้างรอบเงินเดือน #16
|
||||
*
|
||||
*/
|
||||
@Post("period")
|
||||
@Post()
|
||||
async create_salary_period(
|
||||
@Body() requestBody: CreateSalaryPeriod,
|
||||
@Request() request: { user: Record<string, any> },
|
||||
) {
|
||||
//ssss ไม่ต้องเช็ค?
|
||||
const salaryPeriod = Object.assign(new SalaryPeriod(), requestBody);
|
||||
if (!salaryPeriod) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
|
||||
|
|
@ -52,14 +57,17 @@ export class SalaryPeriodController extends Controller {
|
|||
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: {
|
||||
where: {
|
||||
period: salaryPeriod.period,
|
||||
effectiveDate: Between(startOfYear, endOfYear)
|
||||
effectiveDate: Between(startOfYear, endOfYear),
|
||||
},
|
||||
});
|
||||
|
||||
if (chk_period) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทผังปี "+ salaryPeriod.effectiveDate.getFullYear() +" ซ้ำ");
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
"ประเภทผังปี " + salaryPeriod.effectiveDate.getFullYear() + " ซ้ำ",
|
||||
);
|
||||
}
|
||||
|
||||
salaryPeriod.period = salaryPeriod.period.toUpperCase();
|
||||
|
|
@ -70,7 +78,7 @@ export class SalaryPeriodController extends Controller {
|
|||
await this.salaryPeriodRepository.save(salaryPeriod);
|
||||
return new HttpSuccess(salaryPeriod.id);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* API แก้ไขรอบเงินเดือน
|
||||
*
|
||||
|
|
@ -78,7 +86,7 @@ export class SalaryPeriodController extends Controller {
|
|||
*
|
||||
* @param {string} id Guid, *Id รอบเงินเดือน
|
||||
*/
|
||||
@Put("period/{id}")
|
||||
@Put("{id}")
|
||||
async update_salary_period(
|
||||
@Path() id: string,
|
||||
@Body() requestBody: UpdateSalaryPeriod,
|
||||
|
|
@ -99,15 +107,18 @@ export class SalaryPeriodController extends Controller {
|
|||
const startOfYear = new Date(requestBody.effectiveDate.getFullYear(), 0, 1);
|
||||
const endOfYear = new Date(requestBody.effectiveDate.getFullYear(), 11, 31);
|
||||
const chk_period = await this.salaryPeriodRepository.findOne({
|
||||
where: {
|
||||
where: {
|
||||
period: requestBody.period,
|
||||
id: Not(id),
|
||||
effectiveDate: Between(startOfYear, endOfYear)
|
||||
effectiveDate: Between(startOfYear, endOfYear),
|
||||
},
|
||||
});
|
||||
|
||||
if (chk_period) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทผังปี "+ (requestBody.effectiveDate.getFullYear()+543) +" ซ้ำ");
|
||||
throw new HttpError(
|
||||
HttpStatusCode.NOT_FOUND,
|
||||
"ประเภทผังปี " + (requestBody.effectiveDate.getFullYear() + 543) + " ซ้ำ",
|
||||
);
|
||||
}
|
||||
|
||||
chk_SalaryPeriod.period = requestBody.period.toUpperCase();
|
||||
|
|
@ -117,7 +128,6 @@ export class SalaryPeriodController extends Controller {
|
|||
this.salaryPeriodRepository.merge(chk_SalaryPeriod, requestBody);
|
||||
await this.salaryPeriodRepository.save(chk_SalaryPeriod);
|
||||
return new HttpSuccess(id);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -127,7 +137,7 @@ export class SalaryPeriodController extends Controller {
|
|||
*
|
||||
* @param {string} id Guid, *Id รอบเงินเดือน
|
||||
*/
|
||||
@Delete("period/{id}")
|
||||
@Delete("{id}")
|
||||
async delete_salary_period(@Path() id: string) {
|
||||
const SalaryPeriod = await this.salaryPeriodRepository.findOne({
|
||||
where: { id: id },
|
||||
|
|
@ -146,18 +156,11 @@ export class SalaryPeriodController extends Controller {
|
|||
*
|
||||
* @param {string} id Guid, *Id รอบเงินเดือน
|
||||
*/
|
||||
@Get("period/{id}")
|
||||
@Get("{id}")
|
||||
async GetSalaryPeriod_ById(@Path() id: string) {
|
||||
const salaryPeriod = await this.salaryPeriodRepository.findOne({
|
||||
where: { id: id },
|
||||
select: [
|
||||
"id",
|
||||
"period",
|
||||
"isActive",
|
||||
"effectiveDate",
|
||||
"isActive",
|
||||
"status",
|
||||
],
|
||||
select: ["id", "period", "isActive", "effectiveDate", "isActive", "status"],
|
||||
});
|
||||
if (!salaryPeriod) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดี: " + id);
|
||||
|
|
@ -171,27 +174,27 @@ export class SalaryPeriodController extends Controller {
|
|||
* @summary SLR_020 - รายการรอบเงินเดือน #20
|
||||
*
|
||||
*/
|
||||
@Get("period")
|
||||
@Get()
|
||||
async GetListsSalaryPeriod(
|
||||
@Query("page") page: number = 1,
|
||||
@Query("pageSize") pageSize: number = 10,
|
||||
@Query("keyword") keyword?: string,
|
||||
@Query("year") year: number = 2024,
|
||||
) {
|
||||
|
||||
let salaryPeriod: any
|
||||
let total: any
|
||||
if(year != 0){
|
||||
//ssss total ผิด
|
||||
let salaryPeriod: any;
|
||||
let total: any;
|
||||
if (year != 0) {
|
||||
const startOfYear = new Date(year, 0, 1);
|
||||
const endOfYear = new Date(year, 11, 31);
|
||||
[salaryPeriod, total] = await this.salaryPeriodRepository.findAndCount({
|
||||
skip: (page - 1) * pageSize,
|
||||
take: pageSize,
|
||||
where: {
|
||||
effectiveDate: Between(startOfYear, endOfYear)
|
||||
}
|
||||
effectiveDate: Between(startOfYear, endOfYear),
|
||||
},
|
||||
});
|
||||
}else{
|
||||
} else {
|
||||
[salaryPeriod, total] = await this.salaryPeriodRepository.findAndCount({
|
||||
skip: (page - 1) * pageSize,
|
||||
take: pageSize,
|
||||
|
|
@ -200,13 +203,13 @@ export class SalaryPeriodController extends Controller {
|
|||
|
||||
if (keyword != undefined && keyword !== "") {
|
||||
const filteredSalaryPeriod = salaryPeriod.filter(
|
||||
(x:any) =>
|
||||
(x: any) =>
|
||||
x.period.toString().includes(keyword) ||
|
||||
x.isActive.toString().includes(keyword) ||
|
||||
x.effectiveDate.getFullYear().toString().includes(keyword)
|
||||
x.effectiveDate.getFullYear().toString().includes(keyword),
|
||||
);
|
||||
|
||||
const formattedData = filteredSalaryPeriod.map((item:any) => ({
|
||||
const formattedData = filteredSalaryPeriod.map((item: any) => ({
|
||||
id: item.id,
|
||||
period: item.period,
|
||||
isActive: item.isActive,
|
||||
|
|
@ -216,19 +219,320 @@ export class SalaryPeriodController extends Controller {
|
|||
|
||||
return new HttpSuccess({ data: formattedData, total: formattedData.length });
|
||||
}
|
||||
if (!salaryPeriod) {
|
||||
return new HttpSuccess([]);
|
||||
}
|
||||
|
||||
const formattedData = salaryPeriod.map((item:any) => ({
|
||||
id: item.id,
|
||||
period: item.period,
|
||||
isActive: item.isActive,
|
||||
effectiveDate: item.effectiveDate,
|
||||
status: item.status,
|
||||
const formattedData = salaryPeriod.map((item: any) => ({
|
||||
id: item.id,
|
||||
period: item.period,
|
||||
isActive: item.isActive,
|
||||
effectiveDate: item.effectiveDate,
|
||||
status: item.status,
|
||||
}));
|
||||
return new HttpSuccess({ data: formattedData, total });
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* API รอบล่าสุด
|
||||
*
|
||||
* @summary SLR_030 - รอบล่าสุด #29
|
||||
*
|
||||
*/
|
||||
@Get("latest")
|
||||
async GetGroupSalaryPeriodLatest() {
|
||||
//xxxx รอบเงินเดือนล่าสุดยังไม่แน่ใจเอาจากรอบไหน
|
||||
//xxxx หาสังกัดคนนั้น
|
||||
// const dateNow = new Date();
|
||||
const salaryPeriod = await this.salaryPeriodRepository.findOne({
|
||||
where: {
|
||||
// effectiveDate: MoreThan(dateNow),
|
||||
isActive: true,
|
||||
},
|
||||
order: { effectiveDate: "DESC" },
|
||||
relations: ["salaryOrgs"],
|
||||
});
|
||||
if (!salaryPeriod) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบรอบการขึ้นเงินเดือน");
|
||||
}
|
||||
|
||||
const data = {
|
||||
group1id: salaryPeriod.salaryOrgs.find((x) => x.group == "GROUP1")?.id,
|
||||
group2id: salaryPeriod.salaryOrgs.find((x) => x.group == "GROUP2")?.id,
|
||||
effectiveDate: salaryPeriod.effectiveDate,
|
||||
period: salaryPeriod.period,
|
||||
};
|
||||
return new HttpSuccess(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* API จำนวนโควตา
|
||||
*
|
||||
* @summary SLR_029 - จำนวนโควตา #28
|
||||
*
|
||||
* @param {string} id Guid, *Id กลุ่ม(salaryOrgId/groupId)
|
||||
*/
|
||||
@Get("quota/{id}")
|
||||
async GetSalaryquotaLatest(@Path() id: string) {
|
||||
const salaryOrg = await this.salaryOrgRepository.findOne({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
select: ["total", "fifteenPercent"],
|
||||
relations: ["salaryProfiles"],
|
||||
});
|
||||
if (!salaryOrg) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบรอบการขึ้นเงินเดือน");
|
||||
}
|
||||
|
||||
const data = {
|
||||
total: salaryOrg.total,
|
||||
fifteenPercent: salaryOrg.fifteenPercent,
|
||||
chosen: salaryOrg.salaryProfiles.filter((x) => x.posType == "FULL").length,
|
||||
remaining:
|
||||
salaryOrg.fifteenPercent -
|
||||
salaryOrg.salaryProfiles.filter((x) => x.posType == "FULL").length,
|
||||
};
|
||||
return new HttpSuccess(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* API ลบคนเลื่อนเงินเดือนในรอบ
|
||||
*
|
||||
* @summary SLR_024 - ลบคนเลื่อนเงินเดือนในรอบ #23
|
||||
*
|
||||
* @param {string} id profile Id
|
||||
*/
|
||||
@Delete("profile/{id}")
|
||||
async deleteSalaryProfile(@Path() id: string) {
|
||||
const salaryProfile = await this.salaryProfileRepository.findOne({
|
||||
where: { id: id },
|
||||
});
|
||||
if (!salaryProfile) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการขอเงินเดือนผู้ใช้งานนี้ในระบบ");
|
||||
}
|
||||
await this.salaryProfileRepository.remove(salaryProfile);
|
||||
return new HttpSuccess();
|
||||
}
|
||||
|
||||
/**
|
||||
* API แก้ไขเงินเดือน
|
||||
*
|
||||
* @summary SLR_025 - แก้ไขเงินเดือน #24
|
||||
*
|
||||
* @param {string} id profile Id
|
||||
* @param {string} amount ฐานเงินเดือน
|
||||
*/
|
||||
@Post("change/amount")
|
||||
async changeAmount(@Body() body: { profileId: string; amount: number }) {
|
||||
const salaryProfile = await this.salaryProfileRepository.findOne({
|
||||
where: { id: body.profileId },
|
||||
});
|
||||
if (!salaryProfile) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการขอเงินเดือนผู้ใช้งานนี้ในระบบ");
|
||||
}
|
||||
salaryProfile.amount = body.amount;
|
||||
// salaryProfile.amountSpecial = xxxx;
|
||||
// salaryProfile.amountUse = xxxx;
|
||||
// salaryProfile.positionSalaryAmount = xxxx;
|
||||
//xxxxxx คำนวนเงินเดือนใหม่
|
||||
await this.salaryProfileRepository.save(salaryProfile);
|
||||
return new HttpSuccess();
|
||||
}
|
||||
|
||||
/**
|
||||
* API ย้ายกลุ่ม
|
||||
*
|
||||
* @summary SLR_026 - ย้ายกลุ่ม #25
|
||||
*
|
||||
* @param {string} id profile Id
|
||||
* @param {string} groupId groupId
|
||||
*/
|
||||
@Post("change/group")
|
||||
async changeGroup(@Body() body: { profileId: string; groupId: string }) {
|
||||
const salaryProfile = await this.salaryProfileRepository.findOne({
|
||||
where: { id: body.profileId },
|
||||
});
|
||||
if (!salaryProfile) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการขอเงินเดือนผู้ใช้งานนี้ในระบบ");
|
||||
}
|
||||
const salaryOrg = await this.salaryOrgRepository.findOne({
|
||||
where: { id: body.groupId },
|
||||
});
|
||||
if (!salaryOrg) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลกลุ่มการขอเลื่อนเงินเดือน");
|
||||
}
|
||||
salaryProfile.salaryOrgId = salaryOrg.id;
|
||||
await this.salaryProfileRepository.save(salaryProfile);
|
||||
return new HttpSuccess();
|
||||
}
|
||||
|
||||
/**
|
||||
* API แก้ไขเงินเดือน
|
||||
*
|
||||
* @summary SLR_025 - แก้ไขเงินเดือน #24
|
||||
*
|
||||
* @param {string} id profile Id
|
||||
* @param {string} type ประเภทการเลื่อน NONE->ไม่ได้เลื่อน HAFT->ครึ่งขั้น FULL->1ขั้น FULLHAFT->1.5ขั้น
|
||||
*/
|
||||
@Post("change/type")
|
||||
async changeType(@Body() body: { profileId: string; type: string }) {
|
||||
const salaryProfile = await this.salaryProfileRepository.findOne({
|
||||
where: { id: body.profileId },
|
||||
});
|
||||
if (!salaryProfile) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการขอเงินเดือนผู้ใช้งานนี้ในระบบ");
|
||||
}
|
||||
body.type = body.type.toUpperCase();
|
||||
//xxxxxx คำนวนเงินเดือนใหม่
|
||||
if (body.type == "NONE") {
|
||||
//xxxx เงินไม่เปลืี่ยน
|
||||
} else if (body.type == "HAFT") {
|
||||
//xxxx เลื่อน0.5ขั้น
|
||||
// salaryProfile.amountSpecial = 0;
|
||||
// salaryProfile.amountUse = 0;
|
||||
// salaryProfile.positionSalaryAmount = 0;
|
||||
} else if (body.type == "FULL") {
|
||||
//xxxx เลื่อน1ขั้น
|
||||
// salaryProfile.amountSpecial = 0;
|
||||
// salaryProfile.amountUse = 0;
|
||||
// salaryProfile.positionSalaryAmount = 0;
|
||||
} else if (body.type == "FULLHAFT") {
|
||||
//xxxx เลื่อน1.0ขั้น
|
||||
// salaryProfile.amountSpecial = 0;
|
||||
// salaryProfile.amountUse = 0;
|
||||
// salaryProfile.positionSalaryAmount = 0;
|
||||
} else {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทการเลื่อนขึ้นเงินเดือนไม่ถูกต้อง");
|
||||
}
|
||||
salaryProfile.type = body.type;
|
||||
await this.salaryProfileRepository.save(salaryProfile);
|
||||
return new HttpSuccess();
|
||||
}
|
||||
|
||||
/**
|
||||
* API รายการอัตราเงินเดือน
|
||||
*
|
||||
* @summary SLR_023 - รายการอัตราเงินเดือน #22
|
||||
*
|
||||
*/
|
||||
@Put("org/{id}")
|
||||
async GetListsSalaryProfile(
|
||||
@Path() id: string,
|
||||
@Body() body: { page: number; pageSize: number; keyword?: string; type: string },
|
||||
) {
|
||||
const salaryOrg = await this.salaryOrgRepository.findOne({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
});
|
||||
if (!salaryOrg) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบรอบการขึ้นเงินเดือน");
|
||||
}
|
||||
|
||||
const [salaryProfile, total] = await AppDataSource.getRepository(SalaryProfile)
|
||||
.createQueryBuilder("profile")
|
||||
.andWhere({
|
||||
salaryOrgId: salaryOrg.id,
|
||||
})
|
||||
.andWhere(body.type != null && body.type != "" ? "profile.type LIKE :type" : "1=1", {
|
||||
type: `%${body.type}%`,
|
||||
})
|
||||
//xxxx รอ fe ว่าแสดงค่าไหนบ่างใหเfilterเฉพาะค่านั้น
|
||||
.orWhere("profile.posMasterNoPrefix LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
.orWhere("profile.posMasterNo LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
.orWhere("profile.posMasterNoSuffix LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
.orWhere("profile.orgShortName LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
.orWhere("profile.prefix LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
.orWhere("profile.firstName LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
.orWhere("profile.lastName LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
// .orWhere("profile.citizenId LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
.orWhere("profile.position LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
// .orWhere("profile.posType LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
// .orWhere("profile.posLevel LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
// .orWhere("profile.posExecutive LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
.orWhere("profile.amount LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
.orWhere("profile.amountSpecial LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
.orWhere("profile.amountUse LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
.orWhere("profile.positionSalaryAmount LIKE :keyword", { keyword: `%${body.keyword}%` })
|
||||
.orderBy("profile.citizenId", "ASC")
|
||||
.skip((body.page - 1) * body.pageSize)
|
||||
.take(body.pageSize)
|
||||
.getManyAndCount();
|
||||
|
||||
return new HttpSuccess({ data: salaryProfile, total });
|
||||
}
|
||||
|
||||
/**
|
||||
* API เพิ่มคนเลื่อนเงินเดือนตามรอบ
|
||||
*
|
||||
* @summary SLR_028 - เพิ่มคนเลื่อนเงินเดือนตามรอบ #27
|
||||
*
|
||||
*/
|
||||
@Post("org/profile")
|
||||
async addSalaryProfile(
|
||||
@Body() requestBody: CreateSalaryProfile,
|
||||
@Request() request: { user: Record<string, any> },
|
||||
) {
|
||||
const salaryOrg = await this.salaryOrgRepository.findOne({
|
||||
where: {
|
||||
id: requestBody.id,
|
||||
},
|
||||
});
|
||||
if (!salaryOrg) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบรอบการขึ้นเงินเดือน");
|
||||
}
|
||||
const salaryOrgAll = await this.salaryOrgRepository.find({
|
||||
where: {
|
||||
salaryPeriodId: salaryOrg.salaryPeriodId,
|
||||
},
|
||||
});
|
||||
if (!salaryOrgAll) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบรอบการขึ้นเงินเดือน");
|
||||
}
|
||||
const salaryProfileAll = await this.salaryProfileRepository.findOne({
|
||||
where: {
|
||||
salaryOrgId: In(salaryOrgAll.map((x) => x.id)),
|
||||
citizenId: requestBody.citizenId,
|
||||
// prefix: requestBody.prefix,
|
||||
// firstName: requestBody.firstName,
|
||||
// lastName: requestBody.lastName,
|
||||
},
|
||||
});
|
||||
if (salaryProfileAll != null) {
|
||||
throw new HttpError(
|
||||
HttpStatusCode.INTERNAL_SERVER_ERROR,
|
||||
"ไม่สามารถเพิ่มรายชื่อนี้ได้ เนื่องจากมีการยื่นของเลื่อนเงินเดือนแล้ว",
|
||||
);
|
||||
}
|
||||
|
||||
const salaryProfile = Object.assign(new SalaryProfile(), requestBody);
|
||||
salaryProfile.type = salaryProfile.type.toUpperCase();
|
||||
//xxxxxx คำนวนเงินเดือนใหม่
|
||||
if (salaryProfile.type == "NONE") {
|
||||
//xxxx เงินไม่เปลืี่ยน
|
||||
} else if (salaryProfile.type == "HAFT") {
|
||||
//xxxx เลื่อน0.5ขั้น
|
||||
// salaryProfile.amountSpecial = 0;
|
||||
// salaryProfile.amountUse = 0;
|
||||
// salaryProfile.positionSalaryAmount = 0;
|
||||
} else if (salaryProfile.type == "FULL") {
|
||||
//xxxx เลื่อน1ขั้น
|
||||
// salaryProfile.amountSpecial = 0;
|
||||
// salaryProfile.amountUse = 0;
|
||||
// salaryProfile.positionSalaryAmount = 0;
|
||||
} else if (salaryProfile.type == "FULLHAFT") {
|
||||
//xxxx เลื่อน1.0ขั้น
|
||||
// salaryProfile.amountSpecial = 0;
|
||||
// salaryProfile.amountUse = 0;
|
||||
// salaryProfile.positionSalaryAmount = 0;
|
||||
} else {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทการเลื่อนขึ้นเงินเดือนไม่ถูกต้อง");
|
||||
}
|
||||
|
||||
salaryProfile.salaryOrgId = salaryOrg.id;
|
||||
salaryProfile.createdUserId = request.user.sub;
|
||||
salaryProfile.createdFullName = request.user.name;
|
||||
salaryProfile.lastUpdateUserId = request.user.sub;
|
||||
salaryProfile.lastUpdateFullName = request.user.name;
|
||||
await this.salaryProfileRepository.save(salaryProfile);
|
||||
return new HttpSuccess(salaryProfile.id);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,15 +82,15 @@ export class SalaryRanksController extends Controller {
|
|||
@Request() request: { user: Record<string, any> },
|
||||
) {
|
||||
// try {
|
||||
const salaryRank = await this.salaryRankRepository.findOne({ where: { id: id } });
|
||||
if (!salaryRank) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดีนี้ : " + id);
|
||||
}
|
||||
salaryRank.lastUpdateUserId = request.user.sub;
|
||||
salaryRank.lastUpdateFullName = request.user.name;
|
||||
this.salaryRankRepository.merge(salaryRank, requestBody);
|
||||
await this.salaryRankRepository.save(salaryRank);
|
||||
return new HttpSuccess();
|
||||
const salaryRank = await this.salaryRankRepository.findOne({ where: { id: id } });
|
||||
if (!salaryRank) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดีนี้ : " + id);
|
||||
}
|
||||
salaryRank.lastUpdateUserId = request.user.sub;
|
||||
salaryRank.lastUpdateFullName = request.user.name;
|
||||
this.salaryRankRepository.merge(salaryRank, requestBody);
|
||||
await this.salaryRankRepository.save(salaryRank);
|
||||
return new HttpSuccess();
|
||||
// } catch (error: any) {
|
||||
// throw new Error(error);
|
||||
// }
|
||||
|
|
@ -106,14 +106,14 @@ export class SalaryRanksController extends Controller {
|
|||
@Delete("{id}")
|
||||
async deleteSalaryRanks(@Path() id: string) {
|
||||
// try {
|
||||
const delSalaryRanks = await this.salaryRankRepository.findOne({
|
||||
where: { id },
|
||||
});
|
||||
if (!delSalaryRanks) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลตำแหน่งตามไอดีนี้ : " + id);
|
||||
}
|
||||
await this.salaryRankRepository.delete({ id: id });
|
||||
return new HttpSuccess();
|
||||
const delSalaryRanks = await this.salaryRankRepository.findOne({
|
||||
where: { id },
|
||||
});
|
||||
if (!delSalaryRanks) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลตำแหน่งตามไอดีนี้ : " + id);
|
||||
}
|
||||
await this.salaryRankRepository.delete({ id: id });
|
||||
return new HttpSuccess();
|
||||
// } catch (error: any) {
|
||||
// throw new Error(error);
|
||||
// }
|
||||
|
|
@ -156,47 +156,45 @@ export class SalaryRanksController extends Controller {
|
|||
@Query("pageSize") pageSize: number = 10,
|
||||
@Query("keyword") keyword?: string,
|
||||
) {
|
||||
//ssss total ผิด
|
||||
// try {
|
||||
const [salaryRank, total] = await this.salaryRankRepository.findAndCount({
|
||||
where: {
|
||||
salaryId: id,
|
||||
},
|
||||
select: [
|
||||
"id",
|
||||
"salary",
|
||||
"salaryHalf",
|
||||
"salaryHalfSpecial",
|
||||
"salaryFull",
|
||||
"salaryFullSpecial",
|
||||
"salaryFullHalf",
|
||||
"salaryFullHalfSpecial",
|
||||
"isNext",
|
||||
],
|
||||
order: {
|
||||
salary: "DESC",
|
||||
salaryHalf: "DESC",
|
||||
},
|
||||
skip: (page - 1) * pageSize,
|
||||
take: pageSize,
|
||||
});
|
||||
if (keyword != undefined && keyword !== "") {
|
||||
const filteredSalaryRank = salaryRank.filter(
|
||||
(x) =>
|
||||
x.salary?.toString().includes(keyword) ||
|
||||
x.salaryHalf?.toString().includes(keyword) ||
|
||||
x.salaryHalfSpecial?.toString().includes(keyword) ||
|
||||
x.salaryFull?.toString().includes(keyword) ||
|
||||
x.salaryFullSpecial?.toString().includes(keyword) ||
|
||||
x.salaryFullHalf?.toString().includes(keyword) ||
|
||||
x.salaryFullHalfSpecial?.toString().includes(keyword),
|
||||
);
|
||||
return new HttpSuccess({ data: filteredSalaryRank, total: filteredSalaryRank.length });
|
||||
}
|
||||
const [salaryRank, total] = await this.salaryRankRepository.findAndCount({
|
||||
where: {
|
||||
salaryId: id,
|
||||
},
|
||||
select: [
|
||||
"id",
|
||||
"salary",
|
||||
"salaryHalf",
|
||||
"salaryHalfSpecial",
|
||||
"salaryFull",
|
||||
"salaryFullSpecial",
|
||||
"salaryFullHalf",
|
||||
"salaryFullHalfSpecial",
|
||||
"isNext",
|
||||
],
|
||||
order: {
|
||||
salary: "DESC",
|
||||
salaryHalf: "DESC",
|
||||
},
|
||||
skip: (page - 1) * pageSize,
|
||||
take: pageSize,
|
||||
});
|
||||
if (keyword != undefined && keyword !== "") {
|
||||
const filteredSalaryRank = salaryRank.filter(
|
||||
(x) =>
|
||||
x.salary?.toString().includes(keyword) ||
|
||||
x.salaryHalf?.toString().includes(keyword) ||
|
||||
x.salaryHalfSpecial?.toString().includes(keyword) ||
|
||||
x.salaryFull?.toString().includes(keyword) ||
|
||||
x.salaryFullSpecial?.toString().includes(keyword) ||
|
||||
x.salaryFullHalf?.toString().includes(keyword) ||
|
||||
x.salaryFullHalfSpecial?.toString().includes(keyword),
|
||||
);
|
||||
return new HttpSuccess({ data: filteredSalaryRank, total: filteredSalaryRank.length });
|
||||
}
|
||||
|
||||
if (!salaryRank) {
|
||||
return new HttpSuccess([]);
|
||||
}
|
||||
return new HttpSuccess({ data: salaryRank, total });
|
||||
return new HttpSuccess({ data: salaryRank, total });
|
||||
// } catch (error: any) {
|
||||
// throw new Error(error);
|
||||
// }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue