Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
Kanjana 2025-04-25 10:52:29 +07:00
commit 5c75c27470
3 changed files with 47 additions and 4 deletions

View file

@ -0,0 +1,20 @@
/*
Warnings:
- You are about to drop the column `importNationality` on the `User` table. All the data in the column will be lost.
*/
-- AlterTable
ALTER TABLE "User" DROP COLUMN "importNationality";
-- CreateTable
CREATE TABLE "UserImportNationality" (
"id" TEXT NOT NULL,
"name" TEXT NOT NULL,
"userId" TEXT NOT NULL,
CONSTRAINT "UserImportNationality_pkey" PRIMARY KEY ("id")
);
-- AddForeignKey
ALTER TABLE "UserImportNationality" ADD CONSTRAINT "UserImportNationality_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

View file

@ -366,6 +366,14 @@ enum UserType {
AGENCY AGENCY
} }
model UserImportNationality {
id String @id @default(cuid())
name String
user User @relation(fields: [userId], references: [id])
userId String
}
model User { model User {
id String @id @default(cuid()) id String @id @default(cuid())
@ -424,7 +432,7 @@ model User {
licenseExpireDate DateTime? @db.Date licenseExpireDate DateTime? @db.Date
sourceNationality String? sourceNationality String?
importNationality String? importNationality UserImportNationality[]
trainingPlace String? trainingPlace String?
responsibleArea UserResponsibleArea[] responsibleArea UserResponsibleArea[]

View file

@ -99,7 +99,7 @@ type UserCreate = {
licenseIssueDate?: Date | null; licenseIssueDate?: Date | null;
licenseExpireDate?: Date | null; licenseExpireDate?: Date | null;
sourceNationality?: string | null; sourceNationality?: string | null;
importNationality?: string | null; importNationality?: string[] | null;
trainingPlace?: string | null; trainingPlace?: string | null;
responsibleArea?: string[] | null; responsibleArea?: string[] | null;
birthDate?: Date | null; birthDate?: Date | null;
@ -161,7 +161,7 @@ type UserUpdate = {
licenseIssueDate?: Date | null; licenseIssueDate?: Date | null;
licenseExpireDate?: Date | null; licenseExpireDate?: Date | null;
sourceNationality?: string | null; sourceNationality?: string | null;
importNationality?: string | null; importNationality?: string[] | null;
trainingPlace?: string | null; trainingPlace?: string | null;
responsibleArea?: string[] | null; responsibleArea?: string[] | null;
birthDate?: Date | null; birthDate?: Date | null;
@ -383,6 +383,7 @@ export class UserController extends Controller {
prisma.user.findMany({ prisma.user.findMany({
orderBy: [{ statusOrder: "asc" }, { createdAt: "asc" }], orderBy: [{ statusOrder: "asc" }, { createdAt: "asc" }],
include: { include: {
importNationality: true,
responsibleArea: true, responsibleArea: true,
province: true, province: true,
district: true, district: true,
@ -401,6 +402,7 @@ export class UserController extends Controller {
return { return {
result: result.map((v) => ({ result: result.map((v) => ({
...v, ...v,
importNationality: v.importNationality.map((v) => v.name),
responsibleArea: v.responsibleArea.map((v) => v.area), responsibleArea: v.responsibleArea.map((v) => v.area),
branch: includeBranch ? v.branch.map((a) => a.branch) : undefined, branch: includeBranch ? v.branch.map((a) => a.branch) : undefined,
})), })),
@ -415,6 +417,7 @@ export class UserController extends Controller {
async getUserById(@Path() userId: string) { async getUserById(@Path() userId: string) {
const record = await prisma.user.findFirst({ const record = await prisma.user.findFirst({
include: { include: {
importNationality: true,
province: true, province: true,
district: true, district: true,
subDistrict: true, subDistrict: true,
@ -426,7 +429,11 @@ export class UserController extends Controller {
if (!record) throw notFoundError("User"); if (!record) throw notFoundError("User");
return record; const { importNationality, ...rest } = record;
return Object.assign(rest, {
importNationality: importNationality.map((v) => v.name),
});
} }
@Post() @Post()
@ -528,6 +535,9 @@ export class UserController extends Controller {
create: rest.responsibleArea.map((v) => ({ area: v })), create: rest.responsibleArea.map((v) => ({ area: v })),
} }
: undefined, : undefined,
importNationality: {
createMany: { data: rest.importNationality?.map((v) => ({ name: v })) || [] },
},
statusOrder: +(rest.status === "INACTIVE"), statusOrder: +(rest.status === "INACTIVE"),
username, username,
userRole: role.name, userRole: role.name,
@ -683,6 +693,7 @@ export class UserController extends Controller {
const record = await prisma.user.update({ const record = await prisma.user.update({
include: { include: {
importNationality: true,
province: true, province: true,
district: true, district: true,
subDistrict: true, subDistrict: true,
@ -697,6 +708,10 @@ export class UserController extends Controller {
create: rest.responsibleArea.map((v) => ({ area: v })), create: rest.responsibleArea.map((v) => ({ area: v })),
} }
: undefined, : undefined,
importNationality: {
deleteMany: {},
createMany: { data: rest.importNationality?.map((v) => ({ name: v })) || [] },
},
statusOrder: +(rest.status === "INACTIVE"), statusOrder: +(rest.status === "INACTIVE"),
userRole, userRole,
province: connectOrDisconnect(provinceId), province: connectOrDisconnect(provinceId),