From cd58a4bc36af5e8c14fc25fdc67b6172bf5fa206 Mon Sep 17 00:00:00 2001 From: Methapon Metanipat Date: Tue, 5 Nov 2024 09:33:45 +0700 Subject: [PATCH] feat: user now responsible for multiple area --- prisma/schema.prisma | 9 ++++++++- src/controllers/02-user-controller.ts | 15 +++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 2ec15df..d5f3e6e 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -392,7 +392,7 @@ model User { importNationality String? trainingPlace String? - responsibleArea String? + responsibleArea UserResponsibleArea[] birthDate DateTime? @db.Date @@ -454,6 +454,13 @@ model User { notificationRead Notification[] } +model UserResponsibleArea { + id String @id @default(cuid()) + area String + + user User[] +} + enum CustomerType { CORP PERS diff --git a/src/controllers/02-user-controller.ts b/src/controllers/02-user-controller.ts index 86648d5..3328f1c 100644 --- a/src/controllers/02-user-controller.ts +++ b/src/controllers/02-user-controller.ts @@ -97,7 +97,7 @@ type UserCreate = { sourceNationality?: string | null; importNationality?: string | null; trainingPlace?: string | null; - responsibleArea?: string | null; + responsibleArea?: string[] | null; birthDate?: Date | null; address: string; @@ -153,7 +153,7 @@ type UserUpdate = { sourceNationality?: string | null; importNationality?: string | null; trainingPlace?: string | null; - responsibleArea?: string | null; + responsibleArea?: string[]; birthDate?: Date | null; address?: string; @@ -432,6 +432,11 @@ export class UserController extends Controller { data: { id: userId, ...rest, + responsibleArea: rest.responsibleArea + ? { + create: rest.responsibleArea.map((v) => ({ area: v })), + } + : undefined, statusOrder: +(rest.status === "INACTIVE"), username, userRole: role.name, @@ -591,6 +596,12 @@ export class UserController extends Controller { }, data: { ...rest, + responsibleArea: rest.responsibleArea + ? { + deleteMany: {}, + create: rest.responsibleArea.map((v) => ({ area: v })), + } + : undefined, statusOrder: +(rest.status === "INACTIVE"), userRole, province: connectOrDisconnect(provinceId),