package com.infoclinika.pdx.projection;

import com.infoclinika.pdx.domain.user.UserAccount;

import javax.persistence.Entity;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

/**
 * Represents UserAccount model as dto.
 */
@Entity
public class UserAccountDto {

    private Long id;

    private String username;

    public UserAccountDto() {
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public static UserAccountDto valueOf(UserAccount entity) {
        UserAccountDto dto = new UserAccountDto();

        dto.setId(entity.getId());
        dto.setUsername(entity.getUsername());

        return dto;
    }

    public static List<UserAccountDto> valueOf(List<UserAccount> entities) {
        if (entities == null)
            return Collections.emptyList();

        return entities.stream().map(UserAccountDto::valueOf).collect(Collectors.toList());
    }
}