/// 로그인 성공 시 반환되는 사용자 정보.
class AuthenticatedUser {
  const AuthenticatedUser({
    required this.id,
    required this.name,
    this.employeeNo,
    this.email,
    this.phone,
    this.primaryGroupId,
    this.primaryGroupName,
  });

  /// 사용자 식별자
  final int id;

  /// 이름
  final String name;

  /// 사번
  final String? employeeNo;

  /// 이메일
  final String? email;

  /// 연락처
  final String? phone;

  /// 기본 소속 그룹 ID
  final int? primaryGroupId;

  /// 기본 소속 그룹명
  final String? primaryGroupName;

  AuthenticatedUser copyWith({
    String? name,
    String? employeeNo,
    String? email,
    String? phone,
    int? primaryGroupId,
    String? primaryGroupName,
  }) {
    return AuthenticatedUser(
      id: id,
      name: name ?? this.name,
      employeeNo: employeeNo ?? this.employeeNo,
      email: email ?? this.email,
      phone: phone ?? this.phone,
      primaryGroupId: primaryGroupId ?? this.primaryGroupId,
      primaryGroupName: primaryGroupName ?? this.primaryGroupName,
    );
  }
}
