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 HttpSuccess from "../interfaces/http-success";
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 { PosMaster } from "../entities/PosMaster";
import { EmployeePosMaster } from "../entities/EmployeePosMaster";
@Route("api/v1/org/auth/authRole")
@Tags("AuthRole")
@ -72,6 +74,12 @@ export class AuthRoleController extends Controller {
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}")
public async editAuthRole(
@Request() req: RequestWithUser,

View file

@ -38,7 +38,7 @@ import { OrgChild1 } from "../entities/OrgChild1";
import { OrgChild2 } from "../entities/OrgChild2";
import { OrgChild3 } from "../entities/OrgChild3";
import { OrgChild4 } from "../entities/OrgChild4";
import CallAPI from "../interfaces/call-api";
@Route("api/v1/org/placement/change-position")
@Tags("Placement")
@Security("bearerAuth")
@ -163,6 +163,7 @@ export class ChangePositionController extends Controller {
) {
const [changePosition, total] = await AppDataSource.getRepository(ChangePosition)
.createQueryBuilder("changePosition")
.leftJoinAndSelect("changePosition.profileChangePosition", "profileChangePosition")
.where(
searchKeyword ?
"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}")
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, "ไม่พบข้อมูลรอบย้ายสับเปลี่ยนตำแหน่ง");
return new HttpSuccess(data);
}
@ -335,9 +339,10 @@ export class ChangePositionController extends Controller {
profileChangePos.posMasterNoOld = body.posMasterNoOld;
profileChangePos.positionTypeOld = body.positionTypeOld;
profileChangePos.positionLevelOld = body.positionLevelOld;
profileChangePos.positionNumberOld = body.positionNumberOld;
profileChangePos.organizationPositionOld = body.organizationPositionOld;
profileChangePos.amountOld = body.amountOld;
profileChangePos.reason = body.reason? String(body.reason) : "";
profileChangePos.dateCurrent = body.dateCurrent;
await this.profileChangePositionRepository.save(profileChangePos);
return new HttpSuccess();
}
@ -465,5 +470,70 @@ export class ChangePositionController extends Controller {
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 { AuthRoleAttr } from "./AuthRoleAttr";
import { PosMaster } from "./PosMaster";
import { EmployeePosMaster } from "../entities/EmployeePosMaster";
@Entity("authRole")
export class AuthRole extends EntityBase {
@ -22,6 +24,12 @@ export class AuthRole extends EntityBase {
@OneToMany(() => AuthRoleAttr, (authRoleAttr) => authRoleAttr.authRoleAttrForRole)
authRoles: AuthRoleAttr[];
@OneToOne(() => PosMaster, (posMaster) => posMaster.authRole)
posMaster: PosMaster;
@OneToOne(() => EmployeePosMaster, (posMasters) => posMasters.authRole)
posMasters: EmployeePosMaster;
}
export class CreateAuthRole {
@ -33,3 +41,11 @@ export class 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 { Profile } from "./Profile";
import { ProfileEmployee } from "./ProfileEmployee";
import { AuthRole } from "./AuthRole";
enum EmployeePosMasterLine {
MAIN = "MAIN",
@ -171,6 +172,16 @@ export class EmployeePosMaster extends EntityBase {
})
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)
@JoinColumn({ name: "orgRevisionId" })
orgRevision: OrgRevision;

View file

@ -9,6 +9,7 @@ import { OrgChild2 } from "./OrgChild2";
import { OrgChild3 } from "./OrgChild3";
import { OrgChild4 } from "./OrgChild4";
import { Profile } from "./Profile";
import { AuthRole } from "./AuthRole";
enum PosMasterLine {
MAIN = "MAIN",
@ -170,6 +171,16 @@ export class PosMaster extends EntityBase {
})
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)
@JoinColumn({ name: "orgRevisionId" })
orgRevision: OrgRevision;

View file

@ -255,7 +255,7 @@ export type UpdateProfileChangePosition = {
posMasterNoOld: number;
positionTypeOld: string;
positionLevelOld: string;
positionNumberOld: string;
organizationPositionOld: string;
amountOld: number;
dateCurrent : Date;
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\``);
}
}