diff --git a/database/migrations/.snapshot-negareh.json b/database/migrations/.snapshot-negareh.json index 4473d8c..b7e7520 100644 --- a/database/migrations/.snapshot-negareh.json +++ b/database/migrations/.snapshot-negareh.json @@ -1381,6 +1381,16 @@ "length": 255, "mappedType": "string" }, + "avatar_url": { + "name": "avatar_url", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, "role_id": { "name": "role_id", "type": "char(26)", @@ -1672,6 +1682,16 @@ "nullable": true, "length": 255, "mappedType": "string" + }, + "avatar_url": { + "name": "avatar_url", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" } }, "name": "users", diff --git a/src/modules/admin/dto/create-admin.dto.ts b/src/modules/admin/dto/create-admin.dto.ts index 81430bd..ea83a6f 100644 --- a/src/modules/admin/dto/create-admin.dto.ts +++ b/src/modules/admin/dto/create-admin.dto.ts @@ -18,6 +18,11 @@ export class CreateAdminDto { @IsString() lastName?: string; + @ApiProperty({ description: 'Avatar S3 key', required: false }) + @IsOptional() + @IsString() + avatarUrl?: string; + @ApiProperty({ description: 'Role id for the admin' }) @IsNotEmpty() @IsString() diff --git a/src/modules/admin/entities/admin.entity.ts b/src/modules/admin/entities/admin.entity.ts index e9d69b2..e17e9a5 100644 --- a/src/modules/admin/entities/admin.entity.ts +++ b/src/modules/admin/entities/admin.entity.ts @@ -16,6 +16,9 @@ export class Admin extends BaseEntity { @Property({ unique: true }) phone: string + @Property({ nullable: true }) + avatarUrl?: string; + @ManyToOne(() => Role) role: Role } diff --git a/src/modules/admin/providers/admin.service.ts b/src/modules/admin/providers/admin.service.ts index 14fc858..1bc4ebb 100644 --- a/src/modules/admin/providers/admin.service.ts +++ b/src/modules/admin/providers/admin.service.ts @@ -21,7 +21,7 @@ export class AdminService { ) { } async create(dto: CreateAdminDto) { - const { phone, firstName, lastName, roleId } = dto; + const { phone, firstName, lastName, roleId, avatarUrl } = dto; const currentAdmin = await this.adminRepository.findOne({ @@ -47,6 +47,7 @@ export class AdminService { phone, firstName, lastName, + avatarUrl, role, }); await this.em.persistAndFlush(admin); @@ -81,13 +82,16 @@ export class AdminService { const { roleId, ...rest } = dto; - // Update scalar fields (firstName, lastName, phone) + // Update scalar fields (firstName, lastName, phone, avatarUrl) if (rest.firstName !== undefined) { admin.firstName = rest.firstName; } if (rest.lastName !== undefined) { admin.lastName = rest.lastName; } + if (rest.avatarUrl !== undefined) { + admin.avatarUrl = rest.avatarUrl; + } if (rest.phone !== undefined && rest.phone !== admin.phone) { const exists = await this.adminRepository.findOne({ phone: rest.phone,id: { $ne: adminId } }); diff --git a/src/modules/user/dto/create-user.dto.ts b/src/modules/user/dto/create-user.dto.ts index fe96468..a65487e 100644 --- a/src/modules/user/dto/create-user.dto.ts +++ b/src/modules/user/dto/create-user.dto.ts @@ -30,6 +30,10 @@ export class CreateUserDto { @IsBoolean() gender: boolean; + @ApiProperty({ description: 'Avatar S3 key', required: false, example: 'uploads/avatar.png' }) + @IsString() + @IsOptional() + avatarUrl?: string; } diff --git a/src/modules/user/entities/user.entity.ts b/src/modules/user/entities/user.entity.ts index 3fbff3e..07fd2a5 100644 --- a/src/modules/user/entities/user.entity.ts +++ b/src/modules/user/entities/user.entity.ts @@ -42,4 +42,7 @@ export class User extends BaseEntity { @Property({ type: 'string', nullable: true }) addresse?: string + + @Property({ nullable: true }) + avatarUrl?: string; } diff --git a/src/modules/user/interface/user.ts b/src/modules/user/interface/user.ts index dde7f73..d818246 100644 --- a/src/modules/user/interface/user.ts +++ b/src/modules/user/interface/user.ts @@ -12,4 +12,5 @@ export interface CreateUser { address?: string; gender: boolean; maxCredit: number; + avatarUrl?: string; } \ No newline at end of file diff --git a/src/modules/user/providers/user.service.ts b/src/modules/user/providers/user.service.ts index cf53e30..4905ae3 100644 --- a/src/modules/user/providers/user.service.ts +++ b/src/modules/user/providers/user.service.ts @@ -100,7 +100,8 @@ export class UserService { lastName: param.lastName, gender: param.gender, maxCredit: param.maxCredit, - addresse:param.address + addresse: param.address, + avatarUrl: param.avatarUrl, }; const user = this.userRepository.create(createData);