package com.dne.ems.dto;

import com.dne.ems.model.UserAccount;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 用户信息数据传输对象
 * 
 * <p>该类用于封装用户基本信息，包含用户ID、姓名、电话和邮箱等核心数据。
 * 主要用于在不暴露敏感信息的情况下，向前端传递用户信息。</p>
 *
 * <p>提供了从用户实体(UserAccount)转换为DTO的静态方法，便于服务层使用。</p>
 *
 * @version 1.0
 * @since 2024
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserInfoDTO {
    /**
     * 用户ID，唯一标识
     */
    private Long id;
    
    /**
     * 用户姓名
     */
    private String name;
    
    /**
     * 用户电话号码
     */
    private String phone;
    
    /**
     * 用户邮箱地址
     */
    private String email;

    /**
     * 从用户实体创建DTO对象的工厂方法
     *
     * @param user 用户实体对象
     * @return 对应的UserInfoDTO对象，如果输入为null则返回null
     */
    public static UserInfoDTO fromEntity(UserAccount user) {
        if (user == null) {
            return null;
        }
        return new UserInfoDTO(user.getId(), user.getName(), user.getPhone(), user.getEmail());
    }
}