UserMapper.java

package com.seebie.server.mapper.entitytodto;

import com.seebie.server.dto.PersonalInfo;
import com.seebie.server.entity.Role;
import com.seebie.server.entity.User;

import java.util.function.Function;

import static java.util.stream.Collectors.toSet;

public class UserMapper implements Function<User, com.seebie.server.dto.User> {

    @Override
    public com.seebie.server.dto.User apply(User user) {

        return new com.seebie.server.dto.User(
                user.getEmail(),
                user.getPublicId(),
                user.getRegistrationTime().toString(),
                user.getRoles().stream().map(Role::name).collect(toSet()),
                new PersonalInfo(user.getDisplayName(), user.isNotificationsEnabled()));
    }

}