backend v4 half
This commit is contained in:
@@ -1,49 +1,119 @@
|
||||
import { User } from '../entities/user.entity';
|
||||
import { UserBasicDto, UserUpdateDto, UserCreateDto, UserResponseDto } from '../dto/user.dto';
|
||||
import { User, UserStatus, UserAuthLevel } from '../entities/user.entity';
|
||||
import { Company } from '../entities/company.entity';
|
||||
import {
|
||||
CreateUserDto,
|
||||
UpdateUserDto,
|
||||
UserResponseDto,
|
||||
JwtTokenDto,
|
||||
LoginResponseDto,
|
||||
UserRequestDto,
|
||||
LoginRequestDto,
|
||||
RemoveUserDto,
|
||||
PasswordResetRequestDto,
|
||||
PasswordResetDto,
|
||||
EmailConfirmationDto,
|
||||
PremiumSubscriptionDto,
|
||||
CompanyRegistrationDto
|
||||
} from '../dto/user.dto';
|
||||
|
||||
export class UserMapper {
|
||||
static toBasicDto(user: User): UserBasicDto {
|
||||
return new UserBasicDto(user.id, user.username, user.CompanyId || undefined);
|
||||
}
|
||||
|
||||
static toResponseDto(user: User): UserResponseDto {
|
||||
return new UserResponseDto(
|
||||
user.id,
|
||||
user.username,
|
||||
user.FirstName,
|
||||
user.LastName,
|
||||
user.email,
|
||||
user.RegDate
|
||||
);
|
||||
}
|
||||
static toEntity(createDto: UserCreateDto): User {
|
||||
const user = new User();
|
||||
user.username = createDto.username;
|
||||
user.FirstName = createDto.FirstName;
|
||||
user.LastName = createDto.LastName;
|
||||
user.email = createDto.email;
|
||||
user.password = createDto.password;
|
||||
|
||||
// Only set CompanyId if it's provided and not null/undefined
|
||||
if (createDto.CompanyId !== undefined && createDto.CompanyId !== null) {
|
||||
user.CompanyId = createDto.CompanyId;
|
||||
static toEntity(createUserDto: CreateUserDto): User {
|
||||
const user = new User();
|
||||
user.username = createUserDto.username;
|
||||
user.FirstName = createUserDto.FirstName;
|
||||
user.LastName = createUserDto.LastName;
|
||||
user.email = createUserDto.email;
|
||||
user.password = createUserDto.password;
|
||||
user.CompanyId = createUserDto.CompanyId;
|
||||
user.authLevel = createUserDto.authLevel || UserAuthLevel.STANDARD;
|
||||
user.status = createUserDto.status || UserStatus.PENDING_CONFIRMATION;
|
||||
return user;
|
||||
}
|
||||
// If not provided, leave it as undefined (which will be NULL in database)
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
static updateEntity(original: User, updateDto: UserUpdateDto): User {
|
||||
if (updateDto.username !== undefined) original.username = updateDto.username;
|
||||
if (updateDto.FirstName !== undefined) original.FirstName = updateDto.FirstName;
|
||||
if (updateDto.LastName !== undefined) original.LastName = updateDto.LastName;
|
||||
if (updateDto.email !== undefined) original.email = updateDto.email;
|
||||
if (updateDto.password !== undefined) original.password = updateDto.password;
|
||||
|
||||
return original;
|
||||
}
|
||||
static toResponseDto(user: User): UserResponseDto {
|
||||
const dto = new UserResponseDto();
|
||||
dto.id = user.id;
|
||||
dto.guid = user.guid;
|
||||
dto.username = user.username;
|
||||
dto.FirstName = user.FirstName;
|
||||
dto.LastName = user.LastName;
|
||||
dto.email = user.email;
|
||||
dto.createdAt = user.createdAt;
|
||||
dto.updatedAt = user.updatedAt;
|
||||
dto.status = user.status;
|
||||
dto.authLevel = user.authLevel;
|
||||
dto.premiumExpirationDate = user.premiumExpirationDate;
|
||||
dto.CompanyId = user.CompanyId;
|
||||
dto.companyRegistered = user.companyRegistered;
|
||||
dto.companyRegistrationDate = user.companyRegistrationDate;
|
||||
return dto;
|
||||
}
|
||||
|
||||
static UsersListResponseDto(users: User[]): UserResponseDto[] {
|
||||
return users.map(user => this.toResponseDto(user));
|
||||
}
|
||||
}
|
||||
static toJwtTokenDto(user: User): JwtTokenDto {
|
||||
const dto = new JwtTokenDto();
|
||||
dto.userId = user.id;
|
||||
dto.username = user.username;
|
||||
dto.companyId = user.CompanyId;
|
||||
dto.authLevel = user.authLevel;
|
||||
dto.status = user.status;
|
||||
return dto;
|
||||
}
|
||||
|
||||
static toLoginResponseDto(user: User, token: string): LoginResponseDto {
|
||||
const dto = new LoginResponseDto();
|
||||
dto.username = user.username;
|
||||
dto.id = user.id;
|
||||
dto.companyId = user.CompanyId;
|
||||
dto.authLevel = user.authLevel;
|
||||
dto.status = user.status;
|
||||
dto.token = token;
|
||||
return dto;
|
||||
}
|
||||
|
||||
static updateEntity(user: User, updateUserDto: UpdateUserDto): User {
|
||||
if (updateUserDto.username !== undefined) user.username = updateUserDto.username;
|
||||
if (updateUserDto.FirstName !== undefined) user.FirstName = updateUserDto.FirstName;
|
||||
if (updateUserDto.LastName !== undefined) user.LastName = updateUserDto.LastName;
|
||||
if (updateUserDto.email !== undefined) user.email = updateUserDto.email;
|
||||
if (updateUserDto.password !== undefined) user.password = updateUserDto.password;
|
||||
if (updateUserDto.status !== undefined) user.status = updateUserDto.status;
|
||||
if (updateUserDto.authLevel !== undefined) user.authLevel = updateUserDto.authLevel;
|
||||
if (updateUserDto.securityToken !== undefined) user.securityToken = updateUserDto.securityToken;
|
||||
if (updateUserDto.securityTokenExpiry !== undefined) user.securityTokenExpiry = updateUserDto.securityTokenExpiry;
|
||||
if (updateUserDto.premiumExpirationDate !== undefined) user.premiumExpirationDate = updateUserDto.premiumExpirationDate;
|
||||
if (updateUserDto.CompanyId !== undefined) user.CompanyId = updateUserDto.CompanyId;
|
||||
if (updateUserDto.companyRegistered !== undefined) user.companyRegistered = updateUserDto.companyRegistered;
|
||||
if (updateUserDto.companyRegistrationDate !== undefined) user.companyRegistrationDate = updateUserDto.companyRegistrationDate;
|
||||
return user;
|
||||
}
|
||||
|
||||
static toResponseDtoArray(users: User[]): UserResponseDto[] {
|
||||
return users.map(user => this.toResponseDto(user));
|
||||
}
|
||||
|
||||
static toQueryParams(requestDto: UserRequestDto): any {
|
||||
const params: any = {};
|
||||
if (requestDto.guid) params.guid = requestDto.guid;
|
||||
if (requestDto.username) params.username = requestDto.username;
|
||||
if (requestDto.email) params.email = requestDto.email;
|
||||
if (requestDto.status !== undefined) params.status = requestDto.status;
|
||||
if (requestDto.authLevel !== undefined) params.authLevel = requestDto.authLevel;
|
||||
if (requestDto.CompanyId) params.CompanyId = requestDto.CompanyId;
|
||||
if (requestDto.companyRegistered !== undefined) params.companyRegistered = requestDto.companyRegistered;
|
||||
return params;
|
||||
}
|
||||
|
||||
static canMapToResponse(user: User): boolean {
|
||||
return user.status !== UserStatus.DELETED;
|
||||
}
|
||||
|
||||
static toPublicResponseDto(user: User): Partial<UserResponseDto> {
|
||||
const dto = this.toResponseDto(user);
|
||||
const publicDto: Partial<UserResponseDto> = { ...dto };
|
||||
delete publicDto.email;
|
||||
delete publicDto.premiumExpirationDate;
|
||||
delete publicDto.companyRegistrationDate;
|
||||
return publicDto;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user