Merge branch 'develop' into adiDev

This commit is contained in:
AdisakKanthawilang 2024-06-13 14:50:35 +07:00
commit c6dd2632d5
7 changed files with 142 additions and 6 deletions

View file

@ -17,8 +17,10 @@ import HttpError from "../interfaces/http-error";
import HttpStatus from "../interfaces/http-status"; import HttpStatus from "../interfaces/http-status";
import HttpSuccess from "../interfaces/http-success"; import HttpSuccess from "../interfaces/http-success";
import HttpStatusCode from "../interfaces/http-status"; import HttpStatusCode from "../interfaces/http-status";
import { AuthRole, CreateAuthRole, UpdateAuthRole } from "../entities/AuthRole"; import { AuthRole, CreateAuthRole, UpdateAuthRole, CreateAddAuthRole } from "../entities/AuthRole";
import { AuthRoleAttr } from "../entities/AuthRoleAttr"; import { AuthRoleAttr } from "../entities/AuthRoleAttr";
import { PosMaster } from "../entities/PosMaster";
import { EmployeePosMaster } from "../entities/EmployeePosMaster";
@Route("api/v1/org/auth/authRole") @Route("api/v1/org/auth/authRole")
@Tags("AuthRole") @Tags("AuthRole")
@ -72,6 +74,12 @@ export class AuthRoleController extends Controller {
return new HttpSuccess(data.id); return new HttpSuccess(data.id);
} }
@Post("assign")
public async AddAuthRole(@Request() req: RequestWithUser, @Body() body: CreateAddAuthRole) {
// console pasMater = await this
return new HttpSuccess();
}
@Patch("{roleId}") @Patch("{roleId}")
public async editAuthRole( public async editAuthRole(
@Request() req: RequestWithUser, @Request() req: RequestWithUser,

View file

@ -38,7 +38,7 @@ import { OrgChild1 } from "../entities/OrgChild1";
import { OrgChild2 } from "../entities/OrgChild2"; import { OrgChild2 } from "../entities/OrgChild2";
import { OrgChild3 } from "../entities/OrgChild3"; import { OrgChild3 } from "../entities/OrgChild3";
import { OrgChild4 } from "../entities/OrgChild4"; import { OrgChild4 } from "../entities/OrgChild4";
import CallAPI from "../interfaces/call-api";
@Route("api/v1/org/placement/change-position") @Route("api/v1/org/placement/change-position")
@Tags("Placement") @Tags("Placement")
@Security("bearerAuth") @Security("bearerAuth")
@ -163,6 +163,7 @@ export class ChangePositionController extends Controller {
) { ) {
const [changePosition, total] = await AppDataSource.getRepository(ChangePosition) const [changePosition, total] = await AppDataSource.getRepository(ChangePosition)
.createQueryBuilder("changePosition") .createQueryBuilder("changePosition")
.leftJoinAndSelect("changePosition.profileChangePosition", "profileChangePosition")
.where( .where(
searchKeyword ? searchKeyword ?
"changePosition.name LIKE :keyword OR changePosition.date LIKE :keyword OR changePosition.status LIKE :keyword" "changePosition.name LIKE :keyword OR changePosition.date LIKE :keyword OR changePosition.status LIKE :keyword"
@ -187,7 +188,10 @@ export class ChangePositionController extends Controller {
@Get("{id}") @Get("{id}")
async GetChangePositionById( @Path() id: string ) { async GetChangePositionById( @Path() id: string ) {
const data = await this.changePositionRepository.findOne({ where: { id: id }}); const data = await this.changePositionRepository.findOne({
relations: ["profileChangePosition"],
where: { id: id }}
);
if (!data) throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลรอบย้ายสับเปลี่ยนตำแหน่ง"); if (!data) throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลรอบย้ายสับเปลี่ยนตำแหน่ง");
return new HttpSuccess(data); return new HttpSuccess(data);
} }
@ -335,9 +339,10 @@ export class ChangePositionController extends Controller {
profileChangePos.posMasterNoOld = body.posMasterNoOld; profileChangePos.posMasterNoOld = body.posMasterNoOld;
profileChangePos.positionTypeOld = body.positionTypeOld; profileChangePos.positionTypeOld = body.positionTypeOld;
profileChangePos.positionLevelOld = body.positionLevelOld; profileChangePos.positionLevelOld = body.positionLevelOld;
profileChangePos.positionNumberOld = body.positionNumberOld; profileChangePos.organizationPositionOld = body.organizationPositionOld;
profileChangePos.amountOld = body.amountOld; profileChangePos.amountOld = body.amountOld;
profileChangePos.reason = body.reason? String(body.reason) : ""; profileChangePos.reason = body.reason? String(body.reason) : "";
profileChangePos.dateCurrent = body.dateCurrent;
await this.profileChangePositionRepository.save(profileChangePos); await this.profileChangePositionRepository.save(profileChangePos);
return new HttpSuccess(); return new HttpSuccess();
} }
@ -465,5 +470,70 @@ export class ChangePositionController extends Controller {
return new HttpSuccess(); return new HttpSuccess();
} }
/**
* API REPORT
*
* @summary API REPORT (ADMIN)
*
*/
@Post("report")
async sendReport(@Request() request: RequestWithUser, @Body() requestBody: { id: string[] }) {
const profilechangePositions = await this.changePositionRepository.find({
relations: ["profileChangePosition"],
where: { id: In(requestBody.id) }
});
for (const item of profilechangePositions) {
item.status = "REPORT";
item.lastUpdateUserId = request.user.sub;
item.lastUpdateFullName = request.user.name;
if (item.profileChangePosition) {
for (const profile of item.profileChangePosition) {
profile.status = "REPORT";
profile.lastUpdateUserId = request.user.sub;
profile.lastUpdateFullName = request.user.name;
await this.profileChangePositionRepository.save(profile);
}
}
await this.changePositionRepository.save(item);
}
return new HttpSuccess();
}
/**
* API DONE
*
* @summary API DONE (ADMIN)
*
*/
@Post("report/resume")
async doneReport(
@Body()
body: {
result: {
id: string;
}[];
},
@Request() request: { user: Record<string, any> },
) {
await Promise.all(
body.result.map(async (v) => {
const profile = await this.profileChangePositionRepository.findOne({
where: { id: v.id }
});
if (profile != null) {
await new CallAPI()
.PostData(request, "org/profile/salary", {
profileId: profile.id,
date: new Date(),
})
.then(async (x) => {
profile.status = "DONE";
await this.profileChangePositionRepository.save(profile);
});
}
}),
);
return new HttpSuccess();
}
} }

View file

@ -1,6 +1,8 @@
import { Entity, Column, OneToMany } from "typeorm"; import { Entity, Column, OneToMany, OneToOne } from "typeorm";
import { EntityBase } from "./base/Base"; import { EntityBase } from "./base/Base";
import { AuthRoleAttr } from "./AuthRoleAttr"; import { AuthRoleAttr } from "./AuthRoleAttr";
import { PosMaster } from "./PosMaster";
import { EmployeePosMaster } from "../entities/EmployeePosMaster";
@Entity("authRole") @Entity("authRole")
export class AuthRole extends EntityBase { export class AuthRole extends EntityBase {
@ -22,6 +24,12 @@ export class AuthRole extends EntityBase {
@OneToMany(() => AuthRoleAttr, (authRoleAttr) => authRoleAttr.authRoleAttrForRole) @OneToMany(() => AuthRoleAttr, (authRoleAttr) => authRoleAttr.authRoleAttrForRole)
authRoles: AuthRoleAttr[]; authRoles: AuthRoleAttr[];
@OneToOne(() => PosMaster, (posMaster) => posMaster.authRole)
posMaster: PosMaster;
@OneToOne(() => EmployeePosMaster, (posMasters) => posMasters.authRole)
posMasters: EmployeePosMaster;
} }
export class CreateAuthRole { export class CreateAuthRole {
@ -33,3 +41,11 @@ export class CreateAuthRole {
} }
export type UpdateAuthRole = Partial<CreateAuthRole>; export type UpdateAuthRole = Partial<CreateAuthRole>;
export class CreateAddAuthRole {
@Column()
authRoleId: string;
@Column()
posMasterId: string;
}

View file

@ -10,6 +10,7 @@ import { OrgChild3 } from "./OrgChild3";
import { OrgChild4 } from "./OrgChild4"; import { OrgChild4 } from "./OrgChild4";
import { Profile } from "./Profile"; import { Profile } from "./Profile";
import { ProfileEmployee } from "./ProfileEmployee"; import { ProfileEmployee } from "./ProfileEmployee";
import { AuthRole } from "./AuthRole";
enum EmployeePosMasterLine { enum EmployeePosMasterLine {
MAIN = "MAIN", MAIN = "MAIN",
@ -171,6 +172,16 @@ export class EmployeePosMaster extends EntityBase {
}) })
orgRevisionId: string; //fk orgRevisionId: string; //fk
@Column({
length: 40,
comment: "คีย์นอก(FK)ของตาราง authRole",
})
authRoleId: string;
@OneToOne(() => AuthRole, (authRole) => authRole.posMasters)
@JoinColumn({ name: "authRoleId" })
authRole: AuthRole;
@ManyToOne(() => OrgRevision, (orgRevision) => orgRevision.posMasters) @ManyToOne(() => OrgRevision, (orgRevision) => orgRevision.posMasters)
@JoinColumn({ name: "orgRevisionId" }) @JoinColumn({ name: "orgRevisionId" })
orgRevision: OrgRevision; orgRevision: OrgRevision;

View file

@ -9,6 +9,7 @@ import { OrgChild2 } from "./OrgChild2";
import { OrgChild3 } from "./OrgChild3"; import { OrgChild3 } from "./OrgChild3";
import { OrgChild4 } from "./OrgChild4"; import { OrgChild4 } from "./OrgChild4";
import { Profile } from "./Profile"; import { Profile } from "./Profile";
import { AuthRole } from "./AuthRole";
enum PosMasterLine { enum PosMasterLine {
MAIN = "MAIN", MAIN = "MAIN",
@ -170,6 +171,16 @@ export class PosMaster extends EntityBase {
}) })
orgRevisionId: string; //fk orgRevisionId: string; //fk
@Column({
length: 40,
comment: "คีย์นอก(FK)ของตาราง authRole",
})
authRoleId: string;
@OneToOne(() => AuthRole, (authRole) => authRole.posMaster)
@JoinColumn({ name: "authRoleId" })
authRole: AuthRole;
@ManyToOne(() => OrgRevision, (orgRevision) => orgRevision.posMasters) @ManyToOne(() => OrgRevision, (orgRevision) => orgRevision.posMasters)
@JoinColumn({ name: "orgRevisionId" }) @JoinColumn({ name: "orgRevisionId" })
orgRevision: OrgRevision; orgRevision: OrgRevision;

View file

@ -255,7 +255,7 @@ export type UpdateProfileChangePosition = {
posMasterNoOld: number; posMasterNoOld: number;
positionTypeOld: string; positionTypeOld: string;
positionLevelOld: string; positionLevelOld: string;
positionNumberOld: string; organizationPositionOld: string;
amountOld: number; amountOld: number;
dateCurrent : Date; dateCurrent : Date;
reason: string | null; reason: string | null;

View file

@ -0,0 +1,20 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class UpdateTablePosmasterAddRole1718263333866 implements MigrationInterface {
name = 'UpdateTablePosmasterAddRole1718263333866'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`posMaster\` ADD \`authRoleId\` varchar(40) NOT NULL COMMENT 'คีย์นอก(FK)ของตาราง authRole'`);
await queryRunner.query(`ALTER TABLE \`posMaster\` ADD UNIQUE INDEX \`IDX_a059796d095e79ba5b20407859\` (\`authRoleId\`)`);
await queryRunner.query(`CREATE UNIQUE INDEX \`REL_a059796d095e79ba5b20407859\` ON \`posMaster\` (\`authRoleId\`)`);
await queryRunner.query(`ALTER TABLE \`posMaster\` ADD CONSTRAINT \`FK_a059796d095e79ba5b20407859f\` FOREIGN KEY (\`authRoleId\`) REFERENCES \`authRole\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`posMaster\` DROP FOREIGN KEY \`FK_a059796d095e79ba5b20407859f\``);
await queryRunner.query(`DROP INDEX \`REL_a059796d095e79ba5b20407859\` ON \`posMaster\``);
await queryRunner.query(`ALTER TABLE \`posMaster\` DROP INDEX \`IDX_a059796d095e79ba5b20407859\``);
await queryRunner.query(`ALTER TABLE \`posMaster\` DROP COLUMN \`authRoleId\``);
}
}