import { UserEntity } from '../entity/users.entity';
import { UserResponseDto } from './user-response.dto';

/**
 * Maps a UserEntity to a UserResponseDto
 * @param userEntity The user entity to map
 * @returns A UserResponseDto with the user data
 */
export function mapUserToDto(userEntity: UserEntity): UserResponseDto {
  if (!userEntity) return null;

  const userResponseDto = new UserResponseDto();

  userResponseDto.id = userEntity.id;
  userResponseDto.firstName = userEntity.firstName;
  userResponseDto.lastName = userEntity.lastName;
  userResponseDto.email = userEntity.email;
  userResponseDto.isEmailVerified = userEntity.isEmailVerified;
  userResponseDto.role = userEntity.role;
  userResponseDto.clientId = userEntity.clientId;
  userResponseDto.status = userEntity.status;
  userResponseDto.referralMail = userEntity.referralMail;
  userResponseDto.picture = userEntity.picture;
  userResponseDto.googleId = userEntity.googleId;
  userResponseDto.isGoogleUser = userEntity.isGoogleUser;
  userResponseDto.createdAt = userEntity.createdAt;
  userResponseDto.updatedAt = userEntity.updatedAt;

  return userResponseDto;
}

/**
 * Maps an array of UserEntity objects to UserResponseDto objects
 * @param userEntities Array of user entities to map
 * @returns Array of UserResponseDto objects
 */
export function mapUsersToDto(userEntities: UserEntity[]): UserResponseDto[] {
  if (!userEntities) return [];
  return userEntities.map(mapUserToDto);
}
