From 2f85dab0a3d02bc35bf02450099d25ec67f2db27 Mon Sep 17 00:00:00 2001 From: Methapon Metanipat Date: Thu, 12 Sep 2024 15:08:07 +0700 Subject: [PATCH] feat: add fields customer --- prisma/schema.prisma | 20 +++++-- src/controllers/03-customer-controller.ts | 71 ++++++++++++++--------- 2 files changed, 56 insertions(+), 35 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index f7d5f16..d36d78e 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -420,20 +420,28 @@ model Customer { id String @id @default(cuid()) customerType CustomerType + telephoneNo String namePrefix String? - firstName String + firstName String? firstNameEN String? - lastName String + lastName String? lastNameEN String? - gender String - birthDate DateTime @db.Date + gender String? + birthDate DateTime? @db.Date + citizenId String? + + legalPersonNo String? + registerName String? + registerNameEN String? + businessType String? + jobPosition String? status Status @default(CREATED) statusOrder Int @default(0) - registeredBranchId String? - registeredBranch Branch? @relation(fields: [registeredBranchId], references: [id]) + registeredBranchId String + registeredBranch Branch @relation(fields: [registeredBranchId], references: [id]) selectedImage String? diff --git a/src/controllers/03-customer-controller.ts b/src/controllers/03-customer-controller.ts index 53ecaf7..500104e 100644 --- a/src/controllers/03-customer-controller.ts +++ b/src/controllers/03-customer-controller.ts @@ -45,35 +45,55 @@ function globalAllow(user: RequestWithUser["user"]) { const permissionCond = createPermCondition(globalAllow); const permissionCheck = createPermCheck(globalAllow); -export type CustomerCreate = { - registeredBranchId?: string; - +export type CustomerCreate = ( + | { + namePrefix: string; + firstName: string; + firstNameEN?: string; + lastName: string; + lastNameEN?: string; + gender: string; + birthDate: Date; + telephoneNo: string; + } + | { + legalPersonNo: string; + registerName: string; + registerNameEN?: string; + businessType: string; + jobPosition: string; + telephoneNo: string; + } +) & { + registeredBranchId: string; status?: Status; - customerType: CustomerType; - namePrefix: string; - firstName: string; - firstNameEN?: string; - lastName: string; - lastNameEN?: string; - gender: string; - birthDate: Date; selectedImage?: string; }; -export type CustomerUpdate = { +export type CustomerUpdate = ( + | { + namePrefix: string; + firstName: string; + firstNameEN?: string; + lastName: string; + lastNameEN?: string; + gender: string; + birthDate: Date; + telephoneNo: string; + } + | { + legalPersonNo: string; + registerName: string; + registerNameEN: string; + businessType: string; + jobPosition: string; + telephoneNo: string; + } +) & { registeredBranchId?: string; - status?: "ACTIVE" | "INACTIVE"; - customerType?: CustomerType; - namePrefix?: string; - firstName?: string; - firstNameEN?: string; - lastName?: string; - lastNameEN?: string; - gender?: string; - birthDate?: Date; selectedImage?: string; }; @@ -184,9 +204,6 @@ export class CustomerController extends Controller { @Post() @Security("keycloak", MANAGE_ROLES) async create(@Request() req: RequestWithUser, @Body() body: CustomerCreate) { - // NOTE: handle empty string - if (!body.registeredBranchId) body.registeredBranchId = undefined; - const [branch] = await prisma.$transaction([ prisma.branch.findFirst({ where: { id: body.registeredBranchId }, @@ -194,11 +211,7 @@ export class CustomerController extends Controller { }), ]); - if (!!body.registeredBranchId && !branch) throw relationError("Branch"); - - if (body.registeredBranchId !== undefined && branch) { - await permissionCheck(req.user, branch); - } + await permissionCheck(req.user, branch); const record = await prisma.$transaction( async (tx) => {