This commit is contained in:
kittapath 2024-10-01 00:56:57 +07:00
parent d899039b9d
commit 465723e440
3 changed files with 67 additions and 0 deletions

View file

@ -318,6 +318,7 @@ export class DevelopmentRequestController extends Controller {
...meta,
id: undefined,
type: "REQUEST",
kpiDevelopmentId: record.id,
developmentProject: [],
});
await this.profileDevelopmentRepository.save(profileDevelopment);
@ -327,6 +328,7 @@ export class DevelopmentRequestController extends Controller {
...profileDevelopment,
id: undefined,
type: "REQUEST",
kpiDevelopmentId: record.id,
developmentProject: [],
});
history.profileDevelopmentId = profileDevelopment.id;

View file

@ -24,6 +24,8 @@ import {
UpdateProfileDevelopment,
} from "../entities/ProfileDevelopment";
import permission from "../interfaces/permission";
import { DevelopmentProject } from "../entities/DevelopmentProject";
import { In } from "typeorm";
@Route("api/v1/org/profile/development")
@Tags("ProfileDevelopment")
@Security("bearerAuth")
@ -31,6 +33,7 @@ export class ProfileDevelopmentController extends Controller {
private profileRepository = AppDataSource.getRepository(Profile);
private developmentRepository = AppDataSource.getRepository(ProfileDevelopment);
private developmentHistoryRepository = AppDataSource.getRepository(ProfileDevelopmentHistory);
private developmentProjectRepository = AppDataSource.getRepository(DevelopmentProject);
@Get("user")
public async getDevelopmentUser(@Request() request: { user: Record<string, any> }) {
@ -102,6 +105,29 @@ export class ProfileDevelopmentController extends Controller {
history.profileDevelopmentId = data.id;
await this.developmentHistoryRepository.save(history);
if (body.developmentProjects != null) {
await Promise.all(
body.developmentProjects.map(async (x) => {
let developmentProject = new DevelopmentProject();
let developmentProjectHistory = new DevelopmentProject();
Object.assign(developmentProject, {
...meta,
name: x,
profileDevelopmentId: data.id,
});
Object.assign(developmentProject, {
...meta,
name: x,
profileDevelopmentHistoryId: history.id,
});
await Promise.all([
this.developmentProjectRepository.save(developmentProject),
this.developmentProjectRepository.save(developmentProjectHistory),
]);
}),
);
}
return new HttpSuccess();
}
@ -138,6 +164,37 @@ export class ProfileDevelopmentController extends Controller {
this.developmentHistoryRepository.save(history),
]);
await this.developmentProjectRepository.delete({ profileDevelopmentId: record.id });
if (body.developmentProjects != null) {
const meta = {
createdUserId: req.user.sub,
createdFullName: req.user.name,
lastUpdateUserId: req.user.sub,
lastUpdateFullName: req.user.name,
createdAt: new Date(),
lastUpdatedAt: new Date(),
};
await Promise.all(
body.developmentProjects.map(async (x) => {
let developmentProject = new DevelopmentProject();
let developmentProjectHistory = new DevelopmentProject();
Object.assign(developmentProject, {
...meta,
name: x,
profileDevelopmentId: record.id,
});
Object.assign(developmentProject, {
...meta,
name: x,
profileDevelopmentHistoryId: history.id,
});
await Promise.all([
this.developmentProjectRepository.save(developmentProject),
this.developmentProjectRepository.save(developmentProjectHistory),
]);
}),
);
}
return new HttpSuccess();
}
@ -151,10 +208,15 @@ export class ProfileDevelopmentController extends Controller {
_record.profileId,
);
}
const history = await this.developmentHistoryRepository.find({
where: { profileDevelopmentId: developmentId },
});
await this.developmentProjectRepository.delete({ profileDevelopmentHistoryId: In(history) });
await this.developmentHistoryRepository.delete({
profileDevelopmentId: developmentId,
});
await this.developmentProjectRepository.delete({ profileDevelopmentId: developmentId });
const result = await this.developmentRepository.delete({ id: developmentId });
if (result.affected == undefined || result.affected <= 0) {

View file

@ -192,6 +192,7 @@ export class CreateProfileDevelopment {
isDevelopment10: boolean | null;
summary?: number | null;
point?: number | null;
developmentProjects?: string[];
}
export class CreateProfileEmployeeDevelopment {
@ -211,6 +212,7 @@ export class CreateProfileEmployeeDevelopment {
isDevelopment10: boolean | null;
summary?: number | null;
point?: number | null;
developmentProjects?: string[];
}
export type UpdateProfileDevelopment = {
@ -229,4 +231,5 @@ export type UpdateProfileDevelopment = {
isDevelopment10: boolean | null;
summary?: number | null;
point?: number | null;
developmentProjects?: string[];
};