From dcad18339b70490acf1b6eadf4c9a2a23c2b1c9d Mon Sep 17 00:00:00 2001 From: ilham Date: Thu, 16 Dec 2021 13:37:44 +0700 Subject: [PATCH] fix: add user detail on create member --- src/users/dto/create-user.dto.ts | 7 +++++++ src/users/entities/user.entity.ts | 9 ++++++++- src/users/entities/user_detail.entity.ts | 20 ++++++++++++-------- src/users/users.module.ts | 3 ++- src/users/users.service.ts | 7 +++++++ 5 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/users/dto/create-user.dto.ts b/src/users/dto/create-user.dto.ts index 122fd85..d2defaf 100644 --- a/src/users/dto/create-user.dto.ts +++ b/src/users/dto/create-user.dto.ts @@ -1,10 +1,17 @@ import { IsNotEmpty, IsOptional, IsUUID, ValidateIf } from 'class-validator'; import { Partner } from '../entities/partner.entity'; +import { Column } from 'typeorm'; export class CreateUserDto { @IsNotEmpty() username: string; + @IsNotEmpty() + name: string; + + @IsNotEmpty() + phone_number: string; + @IsNotEmpty() password: string; diff --git a/src/users/entities/user.entity.ts b/src/users/entities/user.entity.ts index 89bc47f..4655b14 100644 --- a/src/users/entities/user.entity.ts +++ b/src/users/entities/user.entity.ts @@ -1,8 +1,15 @@ import { Roles } from 'src/configurable/entities/roles.entity'; -import { Entity, Column, PrimaryGeneratedColumn, ManyToOne } from 'typeorm'; +import { + Entity, + Column, + PrimaryGeneratedColumn, + ManyToOne, + OneToOne, +} from 'typeorm'; import { BaseModel } from '../../config/basemodel.entity'; import { hashPassword } from '../../helper/hash_password'; import { Partner } from './partner.entity'; +import { UserDetail } from './user_detail.entity'; @Entity() export class User extends BaseModel { diff --git a/src/users/entities/user_detail.entity.ts b/src/users/entities/user_detail.entity.ts index 7113eb9..2628685 100644 --- a/src/users/entities/user_detail.entity.ts +++ b/src/users/entities/user_detail.entity.ts @@ -1,5 +1,13 @@ -import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'; +import { + Entity, + Column, + PrimaryGeneratedColumn, + OneToOne, + ManyToOne, + JoinColumn, +} from 'typeorm'; import { accountType } from '../../helper/enum-list'; +import { User } from './user.entity'; @Entity() export class UserDetail { @@ -9,14 +17,10 @@ export class UserDetail { @Column() name: string; - @Column() - first_name: string; - @Column() phone_number: string; - @Column({ - nullable: true, - }) - type: accountType; + @OneToOne(() => User) + @JoinColumn() + user: User; } diff --git a/src/users/users.module.ts b/src/users/users.module.ts index 079856d..523735e 100644 --- a/src/users/users.module.ts +++ b/src/users/users.module.ts @@ -9,10 +9,11 @@ import { SupplierService } from './supplier/supplier.service'; import { Supplier } from './entities/supplier.entity'; import { Partner } from './entities/partner.entity'; import { PartnerService } from './partner/partner.service'; +import { UserDetail } from './entities/user_detail.entity'; @Module({ imports: [ - TypeOrmModule.forFeature([User, Supplier, Partner]), + TypeOrmModule.forFeature([User, Supplier, Partner, UserDetail]), forwardRef(() => TransactionModule), ConfigurableModule, ], diff --git a/src/users/users.service.ts b/src/users/users.service.ts index 04106ba..21132cc 100644 --- a/src/users/users.service.ts +++ b/src/users/users.service.ts @@ -23,6 +23,7 @@ import { balanceType, coaType } from 'src/helper/enum-list'; import { RoleService } from 'src/configurable/roles.service'; import { InputCoaDto } from 'src/transaction/dto/input-coa.dto'; import * as uuid from 'uuid'; +import { UserDetail } from './entities/user_detail.entity'; @Injectable() export class UsersService { @@ -76,6 +77,12 @@ export class UsersService { await this.connection.transaction(async (manager) => { const result = await manager.insert(User, userData); + const userDetailData = new UserDetail(); + userDetailData.name = createUserDto.name; + userDetailData.phone_number = createUserDto.phone_number; + userDetailData.user = userData; + const user_detail = await manager.insert(UserDetail, userDetailData); + const dataCoaWallet = new InputCoaDto(); dataCoaWallet.user = userData; dataCoaWallet.balanceType = balanceType.CREDIT;