mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2026-10-23 08:57:56 +00:00
Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7b57277a7f | ||
|
|
fdd2e23669 | ||
|
|
297a2fe5ad | ||
|
|
33b4f13ec8 | ||
|
|
310233c519 | ||
|
|
7fc1918de0 | ||
|
|
dd6886ff2b | ||
|
|
649191f3f4 |
@@ -1,7 +1,8 @@
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
import { Gender } from '~/customer/enums';
|
||||
import { Guardian } from '~/guardian/entities/guradian.entity';
|
||||
import { Junior } from '~/junior/entities';
|
||||
import { GuardianRelationship } from '~/junior/enums';
|
||||
import { ChildRelationshipLabel, GuardianRelationship, Relationship } from '~/junior/enums';
|
||||
|
||||
export class QrCodeValidationDetailsResponse {
|
||||
@ApiProperty()
|
||||
@@ -26,6 +27,17 @@ export class QrCodeValidationDetailsResponse {
|
||||
this.phoneNumber = person.customer.user.phoneNumber;
|
||||
this.email = person.customer.user.email;
|
||||
this.dateOfBirth = person.customer.dateOfBirth;
|
||||
this.relationship = guardian ? junior.relationship : GuardianRelationship[junior.relationship];
|
||||
|
||||
if (guardian) {
|
||||
this.relationship = junior.relationship;
|
||||
} else {
|
||||
if (junior.relationship === Relationship.PARENT) {
|
||||
this.relationship = junior.customer.gender === Gender.MALE
|
||||
? ChildRelationshipLabel.SON
|
||||
: ChildRelationshipLabel.DAUGHTER;
|
||||
} else {
|
||||
this.relationship = GuardianRelationship[junior.relationship];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
export enum ChildRelationshipLabel {
|
||||
SON = 'SON',
|
||||
DAUGHTER = 'DAUGHTER',
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
export * from './child-relationship-label.enum';
|
||||
export * from './guardian-relationship.enum';
|
||||
export * from './relationship.enum';
|
||||
export * from './theme-color.enum';
|
||||
|
||||
@@ -120,6 +120,7 @@ export class JuniorService {
|
||||
setIf(customer, 'firstName', body.firstName);
|
||||
setIf(customer, 'lastName', body.lastName);
|
||||
setIf(customer, 'dateOfBirth', body.dateOfBirth as unknown as Date);
|
||||
setIf(customer, 'gender', body.gender);
|
||||
|
||||
setIf(junior, 'relationship', body.relationship);
|
||||
await Promise.all([junior.save(), customer.save(), user.save()]);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
import { IsNotEmpty, IsOptional, IsString, IsUUID } from 'class-validator';
|
||||
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
||||
import { IsDateString, IsEnum, IsNotEmpty, IsOptional, IsString, IsUUID } from 'class-validator';
|
||||
import { i18nValidationMessage as i18n } from 'nestjs-i18n';
|
||||
import { Gender } from '~/customer/enums';
|
||||
export class UpdateUserRequestDto {
|
||||
@ApiProperty({ example: 'John' })
|
||||
@IsString({ message: i18n('validation.IsString', { path: 'general', property: 'user.firstName' }) })
|
||||
@@ -18,4 +19,14 @@ export class UpdateUserRequestDto {
|
||||
@IsUUID('4', { message: i18n('validation.IsUUID', { path: 'general', property: 'user.profilePictureId' }) })
|
||||
@IsOptional()
|
||||
profilePictureId!: string;
|
||||
|
||||
@ApiPropertyOptional({ enum: Gender })
|
||||
@IsEnum(Gender, { message: i18n('validation.IsEnum', { path: 'general', property: 'customer.gender' }) })
|
||||
@IsOptional()
|
||||
gender!: Gender;
|
||||
|
||||
@ApiPropertyOptional({ example: '2020-01-01' })
|
||||
@IsDateString({}, { message: i18n('validation.IsDateString', { path: 'general', property: 'customer.dateOfBirth' }) })
|
||||
@IsOptional()
|
||||
dateOfBirth!: Date;
|
||||
}
|
||||
|
||||
@@ -192,11 +192,25 @@ export class UserService {
|
||||
await this.validateProfilePictureId(data.profilePictureId, userId);
|
||||
|
||||
this.logger.log(`Updating user ${userId} with data ${JSON.stringify(data)}`);
|
||||
const { affected } = await this.userRepository.update(userId, data);
|
||||
|
||||
const { gender, dateOfBirth, ...userData } = data;
|
||||
|
||||
const { affected } = await this.userRepository.update(userId, userData);
|
||||
if (affected === 0) {
|
||||
this.logger.error(`User with id ${userId} not found`);
|
||||
throw new BadRequestException('USER.NOT_FOUND');
|
||||
}
|
||||
|
||||
if (gender !== undefined || dateOfBirth !== undefined) {
|
||||
const customerData: Partial<{ gender: typeof gender; dateOfBirth: Date }> = {};
|
||||
if (gender !== undefined) {
|
||||
customerData.gender = gender;
|
||||
}
|
||||
if (dateOfBirth !== undefined) {
|
||||
customerData.dateOfBirth = dateOfBirth;
|
||||
}
|
||||
await this.customerService.updateCustomer(userId, customerData);
|
||||
}
|
||||
}
|
||||
|
||||
async updateUserEmail(userId: string, email: string) {
|
||||
|
||||
Reference in New Issue
Block a user