using Entities.Contracts;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Entities.DTO
{
///
/// 用户信息数据传输对象
/// 用于在API调用中传输用户的基本信息
///
public record UserDto
{
///
/// 用户唯一标识符
///
public Guid Id { get; init; }
///
/// 用户名
///
public string? UserName { get; init; }
///
/// 电子邮箱
///
[EmailAddress]
public string? Email { get; init; }
///
/// 手机号码
///
[Phone]
public string? PhoneNumber { get; init; }
///
/// 显示名称
///
public string? DisplayName { get; init; }
///
/// 家庭住址
///
public string? HomeAddress { get; init; }
///
/// 用户角色
///
public UserRoles? Role { get; init; }
///
/// 教授科目ID
///
public Guid? TeachSubjectId { get; init; }
///
/// 教授科目信息
///
public SubjectDto? TeachSubject { get; init; }
///
/// 用户加入的班级数量
///
public int JoinedClassCount { get; init; }
///
/// 创建的问题数量
///
public int CreatedQuestionsCount { get; init; }
///
/// 创建的考试数量
///
public int CreatedExamsCount { get; init; }
///
/// 提交的作业数量
///
public int SubmittedAssignmentsCount { get; init; }
///
/// 批改的作业数量
///
public int GradedAssignmentsCount { get; init; }
///
/// 用户创建时间
///
public DateTime CreatedAt { get; init; }
///
/// 用户最后更新时间
///
public DateTime UpdatedAt { get; init; }
///
/// 用户是否已验证邮箱
///
public bool EmailConfirmed { get; init; }
///
/// 用户是否已锁定
///
public bool LockoutEnabled { get; init; }
///
/// 用户锁定结束时间
///
public DateTime? LockoutEnd { get; init; }
///
/// 获取用户角色的显示名称
///
public string? RoleDisplayName => Role?.GetDisplayName();
///
/// 获取用户角色的简短名称
///
public string? RoleShortName => Role?.GetShortName();
///
/// 获取用户的基本信息字符串
///
public string? UserInfoString => $"{DisplayName ?? UserName} ({Email})";
}
}